PayPal Sandbox 400重定向后出错



我使用laravel V6

$apiContext = new PayPalRestApiContext(
new PayPalAuthOAuthTokenCredential(
'token..',
'token..'
)
);
//dd($transaction);
$callbackUrl = url('/paypal/status');
$payer = new PayPalApiPayer();
$payer->setPaymentMethod('paypal');
$amount = new PayPalApiAmount();
$amount->setTotal('1.00');
$amount->setCurrency('USD');
$transaction = new PayPalApiTransaction();
$transaction->setAmount($amount);
$redirectUrls = new PayPalApiRedirectUrls();
$redirectUrls->setReturnUrl($callbackUrl)
->setCancelUrl($callbackUrl);
$payment = new PayPalApiPayment();
$payment->setIntent('sale')
->setPayer($payer)
->setTransactions(array($transaction))
->setRedirectUrls($redirectUrls);
try {
$payment->create($apiContext);
//dd($payment);
//dd($payment->getApprovalLink());
return redirect()->away($payment->getApprovalLink());
} catch (PayPalExceptionPayPalConnectionException $ex) {
var_dump(json_decode($ex->getData()));
exit(1);
}

那是控制器,我按照文档在这里输入链接描述但是我得到了一个400错误,在这里输入链接描述它生成的链接如下https://www.sandbox.paypal.com/webapps/hermes?flow=1-P&ulReturn=true&令牌=EC-88M93704JL735000S&country.x=美国&locale.x=es_XC#/checkout/genericError?code=UEFZTUVOVF9ERU5JRUQ%3D

我不明白为什么会出错。。client_id机密,很好。。不管怎样,它直接在控制器中,并检查沙箱帐户是否有余额

对于该ClientId/Secret,PayPal沙盒中的收款账户似乎来自一个无法接收任何付款的国家,例如玻利维亚。在创建新的沙盒业务帐户https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Developer.paypal.com%2Developer%2Faccounts%2F用于能够接收paypal付款的其他国家/地区,然后在"我的应用程序"侧选项卡中为此新的沙盒业务帐户创建REST应用程序。


看起来您正在使用一个过时的PHP集成,使用旧的v1支付SDK

相反,您应该使用v2 Checkout PHP SDK,它有两个路由,一个用于"设置事务",一个则用于"捕获事务",文档如下:https://developer.paypal.com/docs/checkout/reference/server-integration/

使用以下前端UI,而不是重定向到审批URL:https://developer.paypal.com/demo/checkout/#/pattern/server——这给出了一个";在上下文中";结账体验,让你的网站在后台加载,这提供了一个非常优越的现代网络体验

最新更新