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 序列化问题?