【发布时间】:2015-10-20 16:43:23
【问题描述】:
我几个小时都在面对这个问题。这个完整的应用程序在本地运行(OSX/MAMP/modphp/PHP 5.5.18),但由于某种原因在生产服务器上,支付创建失败:白色/空响应。没有异常,也没有达到最大执行时间限制 HTTP 200。PHP 和 Apache 日志很好,屏幕上也没有错误。
$payment->create($this->apiContext); 之前的所有内容都被执行 - 在该行之后,结果是空白页。
生产服务器运行 Ubuntu 14.04 / Apache 2.4.7 / modphp / PHP 5.5.9
代码如下:
public function create($data)
{
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$total = 0.0;
$shipping = 0.0;
foreach ($data as $key => $value) {
$item = new Item();
$item->setName($value->name)
->setDescription($value->type)
->setCurrency(Option::get('general-settings', 'currency'))
->setQuantity($value->amount)
->setPrice($value->price);
$items[] = $item;
$total += $value->price * $value->amount;
}
if ($total < 100) {
$shipping += 10;
}
$itemList = new ItemList();
$itemList->setItems($items);
$details = new Details();
$details->setShipping($shipping)
->setSubtotal($total);
$amount = new Amount();
$amount->setCurrency(Option::get('general-settings', 'currency'))
->setTotal($total+$shipping)
->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("JustinRein Auftag")
->setInvoiceNumber(uniqid());
$baseUrl = "http://example.ch";
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/payment?success=true")
->setCancelUrl("$baseUrl/payment?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
try {
$payment->create($this->apiContext);
} catch (Exception $ex) {
td($ex);
exit(1);
}
return $payment;
}
这也可以在贝宝沙盒模式下运行。贝宝日志文件也是空的。
【问题讨论】:
-
这个PayPal PHP SDK 更容易使用并且没有这样的问题。它只是工作。如果你不能很快解决这个问题,我建议你看看(即使你这样做了)。
-
谢谢,但这不是官方的,我也不会重写我的代码。但是如果这个问题没有得到解决,我会看看,谢谢。
-
PayPal 自己的集成代表通常更喜欢并推荐 angelleye 库。 Angelleye 也是 PayPal 的官方合作伙伴。只是需要考虑的事情。您可以在几分钟内获得与它集成的付款。
-
空白页通常表示 PHP 错误但未显示错误。你检查过PHP错误日志吗?您可以专门在服务器或脚本上启用错误报告吗?空响应可能意味着服务器上根本没有启用 cURL。你检查过吗?
-
刚刚解决了这个问题。这是来自第三方库的带有“@”的抑制错误。
标签: php paypal paypal-sandbox paypal-rest-sdk