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

C# REST PayPal API - 如何传递自定义变量?

用 Python 实现 Paypal REST API