PayPal IPN POST 结果为 0 PHP Laravel

Posted

技术标签:

【中文标题】PayPal IPN POST 结果为 0 PHP Laravel【英文标题】:PayPal IPN POST results in 0 PHP Laravel 【发布时间】:2021-01-18 23:57:27 【问题描述】:

我正在努力使用一个简单的存储脚本,该脚本应通过 PayPal IPN 调用以保存当前付款。

我正在使用

$input = json_encode($request->all());

$paylog = Paylog::create([
   'data' => $input,
]);

任何传入 POST 的结果始终为“0”。

我的错在哪里?

【问题讨论】:

【参考方案1】:

也许你的意思是访问$_POST

IPN 消息应通过回发到 ipnpb.paypal.com 进行验证对其内容进行任何操作之前


IPN 是一项非常古老且笨拙的技术,您为什么要使用它?

要获取“当前”付款的详细信息,您应该使用类似 v2/checkout/orders 的 API 来方便结帐。为此,您的服务器上需要两条路由,一条用于“设置事务”,一条用于“捕获事务”,此处记录:https://developer.paypal.com/docs/checkout/reference/server-integration/

与您的两条路线配对的最佳批准流程是https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

不,它是 $request 对象,它应该包含所有必要的东西。我正在使用 Laravel ......是的,我也在验证付款 - 不要担心。我只是喜欢使用简单的通知方法,并存储帖子中的内容 - 但我不能。我不会尝试保存 json 错误...也许这会说明问题...【参考方案2】:

解决方案:

//Make sure encode values to UTF8
$input = json_encode(array_map('utf8_encode',$request->all()));

//And store
$paylog = Paylog::create([
   'data' => $input,
]);

或者让事情更有效率:

$paylog = Paylog::create([
   'data' => $json_encode(array_map('utf8_encode',$request->all())),
]);

【讨论】:

以上是关于PayPal IPN POST 结果为 0 PHP Laravel的主要内容,如果未能解决你的问题,请参考以下文章

PayPal PHP IPN 示例指的是哪些 POST 序列化问题?

Paypal SandBox IPN 总是返回 INVALID

Paypal 移动图书馆 IPN 验证

在本地测试 Paypal IPN

paypal IPN 和 paynow 按钮

Paypal IPN 货币和响应