Paypal PHP REST 服务 - “访问令牌没有必需的范围”
Posted
技术标签:
【中文标题】Paypal PHP REST 服务 - “访问令牌没有必需的范围”【英文标题】:Paypal PHP REST service - "access token does not have required scope" 【发布时间】:2014-03-05 17:45:20 【问题描述】:我正在使用 Paypal REST SDK 在 php 中进行编码。我已将 Sandbox 帐户设置为使用 AUD。在意识到我的初始交易是美元并且交易被保留后,我解决了这个问题。
我正在尝试使用修改后的代码创建付款 - 我假设我会返回一个 URL,该 URL 将允许我重定向用户以批准付款。
我收到一条消息:
异常:访问https://api.sandbox.paypal.com/v1/payments/payment 时得到 Http 响应代码 403。重试0次。 string(215) ""name":"REQUIRED_SCOPE_MISSING","message":"访问令牌没有必需的范围","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#REQUIRED_SCOPE_MISSING","debug_id":"34683601f5dcd""
我的代码是: $apiContext = 新 ApiContext(新 OAuthTokenCredential( 'xxxxxx', 'xxxxxx'));
//### FundingInstrument
// A resource representing a Payer's funding instrument.
// For direct credit card payments, set the CreditCard
// field on this object.
$fi = new FundingInstrument();
$creditCardToken = new CreditCardToken();
$creditCardToken->setCreditCardId($creditcard->cardToken);
$fi->setCreditCardToken($creditCardToken);
// ### Payer
// A resource representing a Payer that funds a payment
// For direct credit card payments, set payment method
// to 'credit_card' and add an array of funding instruments.
$payer = new Payer();
$payer->setPaymentMethod("credit_card")
->setFundingInstruments(array($fi));
// ### Itemized information
// (Optional) Lets you specify item wise
// information
$paymentItems=Yii::app()->session['paymentitems'];
$items=array();
$total=0;
foreach ($paymentItems as $item)
$pp_item = new Item();
$pp_item->setName("Donation to ".$item->organisation->organisationName)
->setCurrency('AUD')
->setQuantity(1)
->setPrice($item->amount);
array_push($items,$pp_item);
$total+=(float)$item->amount;
$itemList = new ItemList();
$itemList->setItems($items);
// ### Amount
// Lets you specify a payment amount.
// You can also specify additional details
// such as shipping, tax.
$amount = new Amount();
$amount->setCurrency("AUD")
->setTotal($total);
// ### Transaction
// A transaction defines the contract of a
// payment - what is the payment for and who
// is fulfilling it.
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description");
// ### Payment
// A Payment Resource; create one using
// the above types and intent set to sale 'sale'
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setTransactions(array($transaction));
// ### Create Payment
// Create a payment by calling the payment->create() method
// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) href
// The return object contains the state.
try
$response=$payment->create($apiContext);
var_dump($response);
//$this->redirect($response->links[0]->href);
catch (PayPal\Exception\PPConnectionException $ex)
echo "Exception: " . $ex->getMessage() . PHP_EOL;
var_dump($ex->getData());
exit(1);
关于此消息含义的任何想法。在澳大利亚,Paypal 似乎不支持直接信用卡支付,但我认为这不是问题所在。
【问题讨论】:
我想我可能有同样的问题,你解决了吗? 【参考方案1】:在您的 Paypal 开发者帐户中,在我的应用 > [您的应用] 下,确保您尝试使用的功能已在应用设置部分启用。
【讨论】:
我想使用支付选项但得到同样的错误。我在上面的屏幕上启用了相同的功能,但它仍然给我们同样的问题。 在我的特殊情况下,当我遇到范围限制时,我正在创建一个计费计划。我必须点击“高级选项”并检查“计费协议 - 设置和管理来自客户的预定付款”才能修复范围限制。以上是关于Paypal PHP REST 服务 - “访问令牌没有必需的范围”的主要内容,如果未能解决你的问题,请参考以下文章
使用 paypal/rest-api-sdk-php 的 laravel paypal 集成错误
如何使用 PayPal REST API 和 PayPal PHP SDK 保存 PayPal 帐户以备将来付款