贝宝加,上线
Posted
技术标签:
【中文标题】贝宝加,上线【英文标题】:paypal plus, going live 【发布时间】:2016-08-21 11:26:30 【问题描述】:我已根据本教程 https://www.paypalobjects.com/webstatic/de_DE/downloads/PayPal-PLUS-IntegrationGuide.pdf 在我的网站上集成了 paypal plus
在sandbox
模式下一切正常,但是当我尝试转到live
时,在显示支付墙时出现错误Forbidden
。在萤火虫NetworkError: 403 Forbidden - https://www.paypal.com/paymentwall/payment-selection
。看起来像这样http://joxi.ru/VrwVoeMIKDg5QA
我的php
获取approval url
的代码
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
Yii::app()->params['paypal']['ClientID'], // ClientID
Yii::app()->params['paypal']['ClientSecret'] // ClientSecret
)
);
$apiContext->setConfig(
array(
'mode' => 'live',
)
);
$item1 = new \PayPal\Api\Item();
$item1->setName('Test item')
->setCurrency('USD')
->setQuantity(1)
->setPrice(1);
$itemList = new \PayPal\Api\ItemList();
$itemList->setItems(array($item1));
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
$amount = new \PayPal\Api\Amount();
$amount->setCurrency('USD');
$amount->setTotal('1');
$transaction = new \PayPal\Api\Transaction();
$transaction->setAmount($amount);
$transaction->setItemList($itemList);
$transaction->setInvoiceNumber(uniqid());
$transaction->setDescription('Payment for fashion.com');
$host = 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'];
$redirectUrl = new \PayPal\Api\RedirectUrls();
$redirectUrl->setReturnUrl($host . '/shop/pay');
$redirectUrl->setCancelUrl($host . '/shop/pay');
$payment = new \PayPal\Api\Payment();
$payment->setIntent('sale');
$payment->setPayer($payer);
$payment->setRedirectUrls($redirectUrl);
$payment->setTransactions(array($transaction));
$payment = $payment->create($apiContext);
$approvalUrl = $payment->getApprovalLink();
然后我在js
使用它
<script type="application/javascript" src="https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js"></script>
<script>
PAYPAL.apps.PPP(
"approvalUrl": "<?=$approvalUrl?>",
"placeholder": "ppplus",
"mode": "live",
"country": "DE",
"buttonLocation": "outside",
"disableContinue": "continueButton",
"enableContinue": "continueButton",
"showLoadingIndicator": true,
onContinue: function ()
);
</script>
<div id="ppplus"></div>
Paypal 响应头
Paypal-Debug-Id: bfd9325f785dd, bfd9325f785dd
我们的客户告诉我们,他与paypal
取得了联系,并为paypal plus
激活了他的帐户。也许我们在输出代码中有一些错误?或者,也许我们正试图在一个限制使用 paypal 的国家/地区执行此操作?
更新
我使用实时凭据。在对www.paypal.com/paymentwall/payment-selection
的请求中,有User-Agent
标头 -
User-Agent
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
我正在使用标准的 paypal api https://github.com/paypal/PayPal-PHP-SDK
【问题讨论】:
Why do I keep getting a 403 forbidden with PayPal?的可能重复 @lonut necula 我猜它没有重复。这是一个不同的情况。目前,我面临同样的问题。您所指的链接与此问题不同。 @sam3434 顺便说一句,你是如何解决这个问题的?这有效吗? 【参考方案1】:从以下位置更改您的代码:
$apiContext->setConfig(
array(
'mode' => 'live',
)
);
收件人:
$apiContext->setConfig(
array(
'mode' => 'live'
)
);
注意:“live”后没有逗号
【讨论】:
这没有意义以上是关于贝宝加,上线的主要内容,如果未能解决你的问题,请参考以下文章