【问题标题】:Paypal RestAPI not firing WebhooksPaypal RestAPI 没有触发 Webhooks
【发布时间】:2016-04-18 03:45:48
【问题描述】:

我正在开发一个使用 paypal 的 rest api 的支付系统。 到目前为止一切顺利,我可以毫无问题地在沙盒模式下进行支付。

现在我需要 paypal 来通知我某些事件……这就是我想使用 webhook 的原因。

我创建了一个小脚本,它只是将接收到的正文写入文本文件以进行一些调试。然后我确实在 paypal 的开发站点中创建了 webhook。 Webhook 模拟器工作正常,来自 paypal 的 json 字符串也很好。但是,当我只是通过我的网站付款时,没有 webhook。他们似乎没有被调用,因为它没有在 developer.paypal.com 中显示任何 webhook 事件......

        $payer = new Payer();
    $payer->setPaymentMethod("paypal");

        $payment = new PPayment();
    $payment->setIntent("sale")
        ->setPayer($payer)
        ->setRedirectUrls($redirectUrls)
        ->setTransactions(array($transaction));

我正在使用付款方式“paypal”和“销售”意图。这在理论上应该是可行的。

有人知道吗?我做了一些研究,发现沙盒时不时会出问题……但这是我需要测试的关键功能。

希望大家帮忙。

问候

【问题讨论】:

    标签: php paypal paypal-sandbox webhooks paypal-rest-sdk


    【解决方案1】:

    正如@MollocH 所了解的那样,为了触​​发 PayPal 的 webhook,您必须在重定向到您的网站后批准付款。

        $payerId = // 'PayerID' from the GET query;
        $paymentId = // 'paymentId' from the GET query;
    
        $apiContext = // you know where to get this from
        $payment = Payment::get($paymentId, $apiContext);
    
        $execution = new PaymentExecution();
        $execution->setPayerId($payerId);
    
        try
        {
            $payment = $payment->execute($execution, $context);
    
            // redirect user to success message or so
        }
        catch(\Exception $error)
        {
    
        }
    

    【讨论】:

      【解决方案2】:

      所以我发现了问题:

      基本上你必须在收到通知之前批准付款。

      What is wrong with my paypal process to receive webhook notifications?

      在您的返回站点上,您只需要发送一个批准,您的 webhook 就会被触发!

      【讨论】:

      • 这个答案非常罕见,应该在每个关于 paypal webhook 的主题中说明。它确实需要发送支付执行程序才能触发 PayPal webhook。我也会用一点代码来回答。
      猜你喜欢
      • 2016-09-14
      • 2016-02-27
      • 1970-01-01
      • 2015-11-06
      • 2018-07-02
      • 1970-01-01
      • 2017-12-25
      • 2021-01-18
      • 2020-05-15
      相关资源
      最近更新 更多