【问题标题】:Does PayPal Rest API have the classic useraction equivalentPayPal Rest API 是否具有等效的经典用户操作
【发布时间】:2014-09-17 07:56:45
【问题描述】:

有没有办法使用 PayPal REST Api 跳过两步确认过程?

我已经使用 PayPal REST api 成功实施了标准流程,该流程将用户带到 PayPal 站点,在那里他们输入他们的凭据,然后显示带有“继续”选项的订单摘要,其中包含文本 - “快完成了。您将在 xxxx 商店确认您的付款。

有没有办法我们可以跳过这一步 - 所以不要将用户返回到我的网站,然后他们必须再次查看订单并选择“付款”,而是在 PayPal 上显示“立即付款”按钮,这会执行付款吗?

我已经搜索过了,经典的 API 似乎通过添加 url 参数 useraction commit 来处理这个问题。如果我能找到 REST api 的等价物就好了。

【问题讨论】:

  • 您找到解决方案了吗?

标签: paypal


【解决方案1】:

我遇到了同样的问题,我得到了 PayPal 支持的答复。

TL;DR:只需将&useraction=commit 附加到approval_url。

他们告诉我 REST API 重定向 URL 是常规的 Express Checkout 重定向 URL,因此您可以使用相同的参数。

如果您执行如下支付 API 调用:

curl -v https://api.sandbox.paypal.com/v1/payments/payment
-H "Content-Type:application/json"
-H "Authorization:Bearer ACCESS_TOKEN_HERE"
-d '{
    "transactions": [{
        "amount": {
            "currency":"USD",
            "total":"12"
        },
        "description":"creating a payment"
    }],
    "payer": {
        "payment_method":"paypal"
    },
    "intent":"sale",
    "redirect_urls": {
        "cancel_url":"https://devtools-paypal.com/guide/pay_paypal/curl?cancel=true",
        "return_url":"https://devtools-paypal.com/guide/pay_paypal/curl?success=true"
    }
   }'

你会得到如下响应:

{
   "id":"PAY-XYZ",
   "create_time":"2015-02-26T15:14:27Z",
   "update_time":"2015-02-26T15:14:28Z",
   "state":"created",
   "intent":"sale",
   "payer":{
      "payment_method":"paypal",
      "payer_info":{
         "shipping_address":{

         }
      }
   },
   "transactions":[
      {
         "amount":{
            "total":"12.00",
            "currency":"USD",
            "details":{
               "subtotal":"12.00"
            }
         },
         "description":"creating a payment",
         "related_resources":[

         ]
      }
   ],
   "links":[
      {
         "href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-XYZ",
         "rel":"self",
         "method":"GET"
      },
      {
         "href":"https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-FOOBAR",
         "rel":"approval_url",
         "method":"REDIRECT"
      },
      {
         "href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-XYZ/execute",
         "rel":"execute",
         "method":"POST"
      }
   ]
}

在此回复中,您将获得批准 url

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-FOOBAR

您只需使用参数&useraction=commit 以编程方式对其进行扩展。

所以你将你的用户重定向到

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-FOOBAR&useraction=commit

示例来自the PayPal Developer Tools

【讨论】:

  • Experience Profile docs 似乎暗示将来有可能通过"flow_config": { "user_action": "commit" } 实现这一目标。但这是目前唯一正确的方法。
  • 不适合我。金额正在从买家即时转移到商家帐户,但交易/活动也没有显示在买家仪表板上
【解决方案2】:

这个用例确实存在于 REST 方面,但目前只能通过移动 SDK 获得。更多详情请查看https://developer.paypal.com/docs/integration/mobile/make-future-payment/

当用户在网络上使用 PayPal 付款时,在 REST 生态系统中仍然需要重定向到 PayPal。

【讨论】:

    猜你喜欢
    • 2014-10-21
    • 2014-01-18
    • 2018-07-18
    • 2015-01-16
    • 2013-12-25
    • 2016-11-25
    • 2019-07-13
    • 2020-05-25
    • 2021-05-26
    相关资源
    最近更新 更多