Govinda Rajbhar
Govinda Rajbhar

Reputation: 3034

The remote server returned an error: (401) Unauthorized with paypal

Scenario

Here I am doing direct payment with Credit Card with paypal, I am storing CC details in paypal account and paypal return Credit Card Token, And I am saving this Token number in my Database to do direct payment, And by the use of this token I am able to do direct payment with Sandbox account But when I am doing the same for live account than getting error as follow.

The remote server returned an error: (401) Unauthorized.

This is getting in my error response :

{"name":"UNAUTHORIZED_PAYMENT","message":"Unauthorized payment.","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#UNAUTHORIZED_PAYMENT","debug_id":"be6ad614a3843"}

This is code

try
{
    Dictionary<string, string> sdkConfig = new Dictionary<string, string>();
    sdkConfig.Add("mode", "live");
    string accessToken = new OAuthTokenCredential(PayPalConfig.PaypalClientId, PayPalConfig.PaypalClientSecret, sdkConfig).GetAccessToken();
    APIContext apiContext = new APIContext(accessToken);
    apiContext.Config = sdkConfig;

    // Items within a transaction.
    var item = new Item()
    {
        name = "Item Name",
        currency = "USD",
        price = "1",
        quantity = "8",
        sku = "sku"
    };

    // A resource representing a credit card that can be used to fund a payment.
    var credCardToken = new CreditCardToken()
    {
        credit_card_id = "Here CC Token Number"
    };

    var amnt = new Amount()
    {
       currency = "USD",
       total = "10",
       details = new Details()
       {
           shipping = "1",
           subtotal = "8",
           tax = "1"
       }
   };

   // A transaction defines the contract of a
   // payment - what is the payment for and who
   // is fulfilling it. 
   var tran = new Transaction()
   {
      amount = amnt,
      description = "This is the payment transaction description.",
      item_list = new ItemList() { items = new List<Item>() { item } }
   };

   // A resource representing a Payer's funding instrument. For stored credit card payments, set the CreditCardToken field on this object.
   var fundInstrument = new FundingInstrument()
   {
       credit_card_token = credCardToken
   };

   // A Payment Resource; create one using the above types and intent as 'sale'
   var pymnt = new Payment()
   {
       intent = "sale",
       payer = new Payer()
       {
           funding_instruments = new List<FundingInstrument>() { fundInstrument },
           payment_method = "credit_card"
       },
       transactions = new List<Transaction>() { tran }
    };

    // Create a payment using a valid APIContext
    var createdPayment = pymnt.Create(apiContext);
}
catch (Exception ex)
{
    throw;
}

If some one have any idea about this issue than please let me know. Or suggest me where I am doing wrong.

Upvotes: 3

Views: 3725

Answers (1)

Govinda Rajbhar
Govinda Rajbhar

Reputation: 3034

Happy to resolve this issue after a month,

Reason : There was no issue from My code side, Everything was correct but there was issue from Paypal side. In My Account I was unable to change Direct credit cards Permission option 'enable to green tick'. But now it is solve after the long discussion with Paypal team.You can see in below image. Hope this answer will helps others also. enter image description here

Upvotes: 1

Related Questions