Click here to Skip to main content
15,881,248 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hello, I'm trying to create new product, plan and subscription using paypal REST API. I'm using c# code in .net. Everything works find but the response is with status: 200 and it means OK but in the documentation I see that I have to receive a response with status: 201 CREATED. Also in my response there is not info about the created product. I'm not sure if I'm missing something because if the product is created I have to receive back product's information. This is the code I use:
C#
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;
    }
}


What I have tried:

I was looing the documentation from paypal but there is not exact code for this.
Posted
Updated 20-Sep-19 10:07am
v2
Comments
xsoftdev 30-Apr-20 4:01am    
Did you get the solution on how to correctly call the API to create a product?

1 solution

A couple of things I noticed when comparing your work to the documentation and the sample code.
1. You are using the GetAsynch() method, their sample is using POST
2. You are missing at least one required attribute: Type

Sample provided for Create Product on Catalog Products API - PayPal Developer[^]
Python
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"
}'
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900