首页 > 解决方案 > PayPal 授权链接将用户重定向到任何地方并在同一个 PayPal 站点中保持循环

问题描述

我有一个情况,没有解决。我仍然尝试过没有成功的解决方法,相同的循环返回到 PayPal 网站中的相同形式。我看到按钮是 CONTINUE 而不是 PAY NOW。这可能是一个线索吗?

这是 Postman 中的 API 请求示例和响应:

https://api.sandbox.paypal.com/v2/checkout/orders

有效载荷

    {
  "intent": "AUTHORIZE",
  "purchase_units": [
        {
          "amount": {
            "currency_code": "USD",
            "value": "100",
            "breakdown": {
                   "item_total":{
                                  "currency_code": "USD",
                                  "value": "100"
                   },
                   "shipping":{
                                  "currency_code": "USD",
                                  "value": "0"
                   },
                   "tax_total":{
                                  "currency_code": "USD",
                                "value": "0"
                   },
                   "shipping_discount":{
                                  "currency_code": "USD",
                                  "value": "0"
                   }
            }
          },
         
          "items": [
                   {
                   "name": "Item #1234",
                   "unit_amount":{
                                  "currency_code": "USD",
                                  "value": "100"
                   },
                   "tax": {
                                  "currency_code": "USD",
                                  "value": "0"
                   },
                   "quantity": "1",
                   "description": "Company Name",
                   "sku": "tel:+12065555555",
                   "custom": "My Custom Data"
          }]
        }
      ]
}

响应(201 - 创建)

{
    "id": "8W523711V28300745",
    "status": "CREATED",
    "links": [
        {
            "href": "https://api.sandbox.paypal.com/v2/checkout/orders/8W523711V28300745",
            "rel": "self",
            "method": "GET"
        },
        {
            "href": "https://www.sandbox.paypal.com/checkoutnow?token=8W523711V28300745",
            "rel": "approve",
            "method": "GET"
        },
        {
            "href": "https://api.sandbox.paypal.com/v2/checkout/orders/8W523711V28300745",
            "rel": "update",
            "method": "PATCH"
        },
        {
            "href": "https://api.sandbox.paypal.com/v2/checkout/orders/8W523711V28300745/authorize",
            "rel": "authorize",
            "method": "POST"
        }
    ]
}

因此,浏览器中用户要遵循的链接是:

 https://www.sandbox.paypal.com/checkoutnow?token=8W523711V28300745

在此链接中,授权订单后,PayPal 网站不会重定向到任何地方,而是循环回到相同的表单。但是我收到有关批准的通知。我认为用户体验处于该循环中是令人困惑的。

标签: redirectpaypalpostmanpaypal-sandboxhateoas

解决方案


如果您将用户重定向到approval_url,那么您的原始 API 请求应该包含return_url,因此 PayPal 知道在哪里返回客户。需要从批准返回,以便您可以捕获订单,否则将没有付款。

最好的集成不使用任何重定向。无需将浏览器发送到批准 URL,您只需创建订单并取回其id价值即可。然后使用它来显示一个提供上下文结帐体验的按钮,使您的网站保持在后台加载(没有重定向)。买家批准后,您将执行 API 调用来捕获订单。这是演示代码:https ://developer.paypal.com/demo/checkout/#/pattern/server

它实际上非常简单/直截了当,最后的大部分内容是关于捕获后错误处理的一些指针


推荐阅读