.net 远程服务器返回错误:(401)未经paypal授权

.net 远程服务器返回错误:(401)未经paypal授权,.net,asp.net-mvc,paypal,paypal-rest-sdk,.net,Asp.net Mvc,Paypal,Paypal Rest Sdk,场景 在这里,我使用paypal的信用卡进行直接支付,我将CC详细信息存储在paypal帐户和paypal返回信用卡令牌中,我将此令牌号码保存在数据库中以进行直接支付,通过使用这个令牌,我可以使用沙盒帐户进行直接支付,但当我对live帐户进行相同操作时,会出现如下错误 远程服务器返回错误:(401)未经授权 这是我的错误响应: {“名称”:“未经授权的支付”,“消息”:“未经授权的” “付款”,“信息链接”:“调试id”:“be6ad614a3843”} 这是密码 try { Dicti

场景

在这里,我使用
paypal
的信用卡进行直接支付,我将CC详细信息存储在paypal帐户和
paypal
返回信用卡令牌中,我将此令牌号码保存在数据库中以进行直接支付,通过使用这个令牌,我可以使用沙盒帐户进行直接支付,但当我对live帐户进行相同操作时,会出现如下错误

远程服务器返回错误:(401)未经授权

这是我的错误响应:

{“名称”:“未经授权的支付”,“消息”:“未经授权的” “付款”,“信息链接”:“调试id”:“be6ad614a3843”}

这是密码

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;
}
试试看
{
Dictionary sdkConfig=新字典();
sdkConfig.Add(“模式”、“实时”);
string accessToken=新的OAuthTokenCredential(PayPalConfig.PaypalClientId、PayPalConfig.PaypalClientSecret、sdkConfig).GetAccessToken();
APIContext APIContext=新的APIContext(accessToken);
apiContext.Config=sdkConfig;
//事务中的项目。
变量项=新项()
{
name=“项目名称”,
货币=“美元”,
price=“1”,
数量=“8”,
sku=“sku”
};
//代表可用于支付资金的信用卡的资源。
var credCardToken=新的CreditCardToken()
{
信用卡\u id=“此处抄送代币号码”
};
var amnt=新金额()
{
货币=“美元”,
total=“10”,
详细信息=新的详细信息()
{
shipping=“1”,
小计=“8”,
tax=“1”
}
};
//事务定义了一个事务的契约
//付款-付款对象是什么?付款对象是谁
//我们正在实现它。
var tran=新事务()
{
金额=新台币,
description=“这是付款交易描述。”,
item_list=new ItemList(){items=new list(){item}
};
//表示付款人资金工具的资源。对于存储的信用卡付款,请在此对象上设置CreditCardToken字段。
var fundInstrument=新的FundingInstrument()
{
信用卡代币=信用卡代币
};
//支付资源;使用上述类型和意图创建一个“销售”
var pymnt=新付款()
{
intent=“销售”,
付款人=新付款人()
{
融资工具=新列表(){fundInstrument},
付款方式=“信用卡”
},
事务=新列表(){tran}
};
//使用有效的APIContext创建付款
var createdPayment=pymnt.Create(apiContext);
}
捕获(例外情况除外)
{
投掷;
}

如果有人对这个问题有任何想法,请告诉我。或者告诉我哪里做错了。

很高兴在一个月后解决这个问题

原因:我的代码方面没有问题,一切都是正确的,但是贝宝方面有问题。在我的帐户中,我无法更改直接信用卡的权限选项“启用绿色勾选”。但经过与贝宝Paypal团队的长时间讨论,现在问题已经解决了。如下图所示。希望这个答案也能帮助其他人。

当您登录developer.paypal.com并单击应用程序选项卡时,左侧的帐户资格链接会显示什么?