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

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

我正在使用

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

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

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

我的错在哪里?

【问题讨论】:

    标签: php laravel paypal paypal-ipn


    【解决方案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())),
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2012-06-05
      • 2018-02-05
      • 2017-02-22
      • 1970-01-01
      相关资源
      最近更新 更多