JordanTrajkov Ответов: 1

Создайте новый продукт в paypal для подписки с помощью REST API


Здравствуйте, я пытаюсь создать новый продукт, план и подписку с помощью paypal REST API. Я использую код c# в .net. Все работает find, но ответ находится со статусом: 200, и это означает OK, но в документации я вижу, что должен получить ответ со статусом: 201 CREATED. Также в моем ответе нет информации о созданном продукте. Я не уверен, что упускаю что-то, потому что если продукт создан, я должен получить обратно информацию о продукте. Это код, который я использую:
public void CreateProduct()
{
    try
    {
        string URL = "https://api.sandbox.paypal.com/v1/catalogs/products";
        string urlParameters = "?name=testName";

        // using System.Net;
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        // Use SecurityProtocolType.Ssl3 if needed for compatibility reasons

        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URL);

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Access-Token-Is-Here-I-Remove-It-For-Security-Purpose");
        client.DefaultRequestHeaders.Add("PayPal-Request-Id", "ERRCAT001"); 
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        // List data response.
        HttpResponseMessage response = client.GetAsync(urlParameters).Result;  // Blocking call! Program will wait here until a response is received or a timeout occurs.
        if (response.IsSuccessStatusCode)
        {
            // Parse the response body.
            //var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result;  //Make sure to add a reference to System.Net.Http.Formatting.dll
            //foreach (var d in dataObjects)
            //{
            //    Console.WriteLine("{0}", d.Name);
            //}
        }
        else
        {
            Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        }

        //Make any other calls using HttpClient here.

        //Dispose once all HttpClient calls are complete. This is not necessary if the containing object will be disposed of; for example in this case the HttpClient instance will be disposed automatically when the application terminates so the following call is superfluous.
        client.Dispose();
    }
    catch (Exception err)
    {
        string error = err.Message;
    }
}


Что я уже пробовал:

Я просматривал документацию из paypal, но точного кода для этого нет.

xsoftdev

Вы получили решение о том, как правильно вызвать API для создания продукта?

1 Ответов

Рейтинг:
0

MadMyche

Несколько вещей, которые я заметил, сравнивая вашу работу с документацией и образцом кода.
1. Вы используете метод GetAsynch (), их образец использует POST
2. у вас отсутствует хотя бы один обязательный атрибут: Тип

Образец, предусмотренный для Create Product на Каталог товаров API - PayPal Developer[^]

curl -v -X POST https://api.sandbox.paypal.com/v1/catalogs/products \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-H "PayPal-Request-Id: PRODUCT-18062019-001" \
-d '{
  "name": "Video Streaming Service",
  "description": "Video streaming service",
  "type": "SERVICE",
  "category": "SOFTWARE",
  "image_url": "https://example.com/streaming.jpg",
  "home_url": "https://example.com/home"
}'