PayPal Rest API Express Checkout 工作流程
Posted
技术标签:
【中文标题】PayPal Rest API Express Checkout 工作流程【英文标题】:PayPal Rest API Express Checkout workflow 【发布时间】:2016-01-06 20:54:14 【问题描述】:我正在尝试使用 REST API 将我们网站上的 PayPal 快速结账与以下工作流程步骤集成。
-
客户将商品添加到购物车,我们有商品列表信息(商品价格、数量、小计但不含税且不含运费)
客户点击快速结账按钮,我们将估计的小计传递给 PayPal
客户创建/选择送货地址
客户点击提交
客户返回我们的网站并提供送货地址
我们根据收货地址计算客户的运费和税金
我们以总计 = 运费 + 税 + 小计显示订单预览。
我们再次调用 api 调用 paypal 以执行付款
为了配合上面的步骤,这里是我基于api的理解 https://developer.paypal.com/docs/api/
-
例如我们有项目 abc $10 QtY=1 Subtotal =$10
我们调用payment api并将intent设置为“授权”,发送总金额:$10
以上步骤 #3 在贝宝网站上
以上步骤 #4 在贝宝网站上
Paypal 回复一个授权对象,其中包含授权 ID 和 HATEOAS 链接,用于捕获付款
在响应对象中,我们还可以获取 payer 对象来计算运费和税金
现在我们有总计 = 10 美元(小计)+ 2 美元(运费)+ 1.5 美元(税)= 13.5 美元
我们显示带有商品小计、运费、税收总计的订单预览
当客户确认订单时,我们会
https://developer.paypal.com/docs/api/#authorizations
8.1 我们使用在第 5 步获得的 auth id 调用 Authorization
8.2 我们使用 auth id 和新金额 $13.5(高于步骤 #2)调用 Capture
8.3 Paypal 确认 is_final_capture=true
我的问题是:
这是快速结账的正确工作流程吗?这比常规付款要复杂一些,因为我们必须自己计算运费/税费。
paypal 会通过上述 api 调用将帐单地址传递给我们吗?我没有在响应对象中看到帐单地址。如果不是,我们如何得到它?
请注意,这些问题与 REST api 而非经典快速结帐有关。提前致谢。
【问题讨论】:
【参考方案1】:稍微整改,重新总结一下流程:
-
例如项目 abc $10 QtY=1 小计 =$10
调用支付接口,设置intent为“
authorize
”,发送总金额:$10
(在payer
对象中标识"payment_method": "paypal"
)
支付 api 响应返回 HATEOAS 链接 approval_url
并使用该链接将客户重定向到 PayPal 结帐页面
以上步骤 #3 在贝宝网站上
上面第 4 步在贝宝网站上,客户返回到您的网站
使用步骤#2 中的 HATEOAS 链接(执行链接)调用 execute
api,并从返回 url 中获取 "payer_id"
,PayPal 会使用一组新的 HATEOAS 链接进行响应,包括用于捕获付款的捕获链接.
此外,您将能够从 Json 响应的 payer_info
对象中获取 shipping_address
现在计算运费和税金,总计 = 10 美元(小计)+ 2 美元(运费)+ 1.5 美元(税)= 13.5 美元
显示带有商品小计、运费、税收总计的订单预览
当客户确认订单后,调用 Capture api(步骤#6 中的 HATEOAS),新金额 $13.5(高于步骤 #2)
is_final_capture=true
是一个api请求参数,不是来自PayPal的确认,它表示这是一个完整的捕获而不是部分捕获。 PayPal 将确认的是 json 响应中的 "state": "completed"
您将无法获得买家的账单地址,该功能必须经过审核,并且您的帐户授予了特殊访问权限,您可以求助于 PayPal 服务了解更多详情 p>
【讨论】:
非常感谢,这解决了我所有的问题。我会尝试并确认。 嗨,我的运费 + 税 > 原始付款的 15% 有另一个问题。你能在这里检查我的问题吗? ***.com/questions/33290845/…以上是关于PayPal Rest API Express Checkout 工作流程的主要内容,如果未能解决你的问题,请参考以下文章
使用 PayPal REST API 通过 Express Checkout 测试拒绝付款
PayPal 401 未经授权在实时制作中使用 .NET REST API for Express checkout API 进行信用卡支付
通过 Braintree SDK 的 Paypal Express Checkout 突然失败(缺少服务商 REST API 应用程序?)
如何使用 PayPal Express Checkout 集成(客户端 REST)获取交易 ID