我正在使用适用于PHP的PayPal REST SDK,使用laravel包装器,它给了我一个400错误(据我所知输入错误) 我主要从以下位置找到的示例复制: 在此处输入链接描述 然而,我收到一个 400 错误发回。我不知道我做错了什么:这是代码。
$payer = Paypalpayment::Payer();
$payer->setPayment_method("paypal");
$item1 = Paypalpayment::Item();
$item1->setName('Lavender 6 oz')
->setCurrency('USD')
->setQuantity(1)
->setPrice('7.50');
$itemList = Paypalpayment::ItemLIst();
$itemList->setItems(array($item1));
$amount = Paypalpayment::Amount();
$amount->setCurrency("USD")
->setTotal("20.00");
$transaction = Paypalpayment::Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Buying from ButterflyOils.com");
$redirectUrls = Paypalpayment::RedirectUrls();
$baseUrl = Paypalpayment::getBaseUrl();
$redirectUrls->setReturnUrl($baseUrl + "/ExecutePayment.php?success=true&message='PayPal+Worked!'")
->setCancelUrl($baseUrl + "/ExecutePayment.php?success=false&message='PayPal+Cancel'");
$payment = Paypalpayment:: Payment();
$payment->setIntent("sale");
$payment->setPayer($payer);
$payment->setRedirectUrls($redirectUrls);
$payment->setTransactions(array($transaction));
try {
$payment->create($this->_apiContext);
} catch (PPConnectionException $ex) {
return "Exception: " . $ex->getMessage() . PHP_EOL;
var_dump($ex->getData());
exit(1);
}
foreach($payment->getLinks() as $link) {
if($link->getRel() == 'approval_url') {
$redirectUrl = $link->getHref();
break;
}
}
// yeah I know this is a bad idea
$_SESSION['paymentId'] = $payment->getId();
if(isset($redirectUrl)) {
header("Location: $redirectUrl");
exit;
}
API 使用 HTTP 400 响应返回验证错误的详细说明,您应该能够检查异常对象以确定返回的内容。
在这种情况下,看起来您的项目总额与交易的总付款金额不匹配,但 API 错误消息应该肯定会告诉您
错误是我有一个值为"0"的 returnURL 和 CancelURL,因为我试图连接到具有 +(Javascript 习惯)的字符串,但由于 Laravel 的路由,baseUrl()
返回了一个无效的地址。
看看PayPal.log很有帮助
更改此内容
$item1 = Paypalpayment::Item();
$item1->setName('Lavender 6 oz')
->setCurrency('USD')
->setQuantity(1)
->setPrice('7.50');
$itemList = Paypalpayment::ItemLIst();
$itemList->setItems(array($item1));
$amount = Paypalpayment::Amount();
$amount->setCurrency("USD")
->setTotal("7.50");
就是这样