【问题标题】:PayPal Smart Button transaction not charging after 'approval'PayPal Smart Button 交易在“批准”后不收费
【发布时间】:2021-01-14 09:14:01
【问题描述】:

在这件危险的事情上花了一整天后,我无法理解一笔交易如何显示已批准,我得到了一个订单 ID,但不收取任何费用(不适用于买方或接收方)。 在沙盒上成功测试后,我在实时环境中。

所以代码比较长但是基本上是在服务端我们先创建事务:

                  const request = new paypal.orders.OrdersCreateRequest();
                        request.prefer("return=representation");
                        request.requestBody({
                          intent: 'CAPTURE', //CAPTURE
                          purchase_units: [{
                            amount: {
                              currency_code: currency,
                              value: finalPrice
                            },
                            payee: {
                              email_address: payee
                            },
                            shipping: shipObj
                          }]
                        });

然后我们批准使用 PayPal 的订单:

  let request = new paypal.orders.OrdersGetRequest(orderID);
                        let order;
                        try {
                          order = await client.execute(request);
                        }
                        catch (err) {
                          console.error("error",err);
                          return res.sendStatus(500);
                        }

此时我得到order.result.status = 已批准

这是一个实时环境(客户端和密钥)。 如何将 APPROVED 发送给开发者,并提供 orderID 但不收费? 这是一件非常危险的事情,可能会毁了企业。

然后我发现有一个指向您的订单 ID 的链接:

https://api.paypal.com/v2/checkout/orders/4PE63643WC652674S

如果您查看此页面,您会得到:

"message":"Authentication failed due to invalid authentication credentials or a missing Authorization header."

现在,只有上帝知道这意味着什么,这是 订单 ID 页面上的失败消息,这意味着订单 ID 没有任何意义??

所以我还用我的客户 ID 检查了 paypal 链接(应该与 sdk 中的 my 客户 ID 相同吗?):

https://www.paypal.com/sdk/js?client-id=xxxxxxxxx&merchant-id=xxx@yyyy.com&disable-funding=credit,card&currency=USD

这看起来不错,并且包含正确的电子邮件。

【问题讨论】:

  • 您需要创建订单,让客户通过 PayPal 窗口批准订单,然后您就可以捕获该订单——看起来您不会在任何地方捕获它(新的 paypal. orders.OrdersCaptureRequest(orderId))
  • 我当然会这样做,有一个窗口,有地址和价格,用户登录,批准销售,然后发生这种情况。我有 OrdersCreateRequest 和 OrdersGetRequest,那么 OrdersCaptureRequest 什么时候来?
  • 我没有看到您在哪里获取订单?
  • 我有多愚蠢。非常抱歉。我出于某种原因删除了这个块。哇。非常感谢。

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


【解决方案1】:

您似乎已经解决了问题,但您错过了捕获步骤,这是提交事务的必需步骤,并且必须始终在批准后进行。

只是为了查看最佳集成方式,如果您使用来自服务器的 API 调用进行集成,您需要在服务器上设置两条路由,一条用于“设置事务”,一条用于“捕获事务” ',记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/

那么,与这些服务器端路由配对的最佳 JS 客户批准流程是:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

    猜你喜欢
    • 2017-05-11
    • 2014-03-30
    • 2011-03-01
    • 2021-01-28
    • 2022-01-15
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多