【问题标题】:PayPal REST API v2/checkout/orders does not redirect back after approvalPayPal REST API v2/checkout/orders 在批准后不会重定向回来
【发布时间】:2021-10-20 01:02:32
【问题描述】:

我以前从未使用过 PayPal,它在这里并不是很受欢迎,而且我对订单和付款的运作方式感到困惑。谁能给我解释一下?我已经阅读了文档,但我仍然感到困惑。

要完成付款人批准,请使用批准链接重定向 付款人。 API 调用者有 3 小时(默认设置,这可以是 由您的客户经理更改为 24/48/72 小时以适应您的 用例)从订单创建时开始,重定向您的付款人。 重定向后,API 调用者有 3 小时的时间让付款人批准 订单并授权或获取订单。

我根据示例在沙盒环境中为此 API 创建了一个有效的 PHP curl 调用 https://developer.paypal.com/docs/api/orders/v2/#orders_create

我之前创建的 API 是这样工作的:

  1. 向第三方付款发送请求
  2. 获取包含结帐链接的响应
  3. 将客户重定向到链接
  4. 客户完成付款
  5. 第三方向我服务器上的文件/路径发送包含订单和付款详细信息的请求
  6. 我的服务器收到请求并在我的数据库中更新订单状态/付款
  7. 第三方将客户重定向到我的网页

使用 PayPal,到目前为止我得到的是:

  1. 将包含订单详细信息的请求发送到 /v2/checkout/orders
  2. 获取包含各种链接的响应
  3. 将我的客户重定向到 rel:approve 结帐链接
  4. 登录我的沙盒客户账户并使用 PayPal 余额支付,点击继续
  5. 显示一条弹出消息:我们会将您送回 xxx 的测试商店以完成此次购买
  6. 弹出消息已关闭,我仍然在同一个支付页面,如图所示,点击“继续”按钮

【问题讨论】:

  • 你必须传递一个回调 URL。不看任何代码很难看出你的问题是什么。
  • 我以前从未使用过贝宝,但我知道贝宝有一个用于 php 的 sdk 和许多示例。也许这会对你有所帮助:paypal.github.io/PayPal-PHP-SDK/sample
  • @Scriptable 我的请求与链接上提供的示例完全相同,只有意图和购买单位。而且我在可用的请求参数中没有看到任何回调 URL 选项。
  • @spinsch 我必须下载并安装带有 SDK 的作曲家/库。在我终于找到我想要的 API 之前我已经尝试过了,SDK 对我失败了,因为我在下载的文件中没有看到任何 autoload.php 并且它是必需的。

标签: paypal


【解决方案1】:
  1. 将包含订单详细信息的请求发送到 /v2/checkout/orders
  2. 获取包含链接的响应
  3. 重定向我的客户以批准链接

步骤 (3) 是一种旧的集成方法,适用于使用旧的基于重定向的流程的网站。集成 PayPal 的首选方式不使用重定向。完全没有。您的网站仍然在后台加载。执行以下操作:

按照Set up standard payments 指南在您的服务器上创建两条路线,一条用于“创建订单”,一条用于“捕获订单”documented here。两个路由都应该只返回 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id,这是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)立即将您的返回 JSON 转发给前端调用者。

将这 2 条路由与前端审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server


如果出于某种奇怪和莫名其妙的原因,您坚持使用带有整页重定向的旧流程,而不是我刚才描述的,您必须在您的订单创建请求中包含 redirect_url,以便 PayPal 在某个地方订单批准后返回。一旦发生此类退货,请在您的网站上向客户展示一个审核步骤,他们可以在此给予最终批准,这应该会触发 Capture Order API 调用以完成交易。

捕获订单将返回一个 v2/payments 对象,该对象是具有自己 ID 的已完成交易,用于记账和退款目的。 (订单ID仅在付款人审批时使用,其他不重要)

【讨论】:

  • 我最终使用了该按钮并且它有效。起初我没有使用它,因为客户端希望 API 位于纯 PHP/服务器端,而不是 JS 库。但他已经看到了它的工作原理并批准了它。
  • 只使用JS而不是重定向,所有API调用仍然可以在服务器端。
猜你喜欢
  • 2021-04-05
  • 2020-12-05
  • 2021-08-03
  • 2020-12-13
  • 2020-04-08
  • 2022-01-15
  • 2013-03-21
  • 2021-05-11
  • 2018-03-06
相关资源
最近更新 更多