【问题标题】:Paypal Smart Button: how to redirect to a PHP page after successfull payment?Paypal Smart Button:付款成功后如何重定向到 PHP 页面?
【发布时间】:2021-04-26 02:15:29
【问题描述】:

我正在尝试将 paypal 支付集成到我的网站中。

编辑:

支付成功后,我想重定向到 PHP 页面来操作支付数据,例如:保存到数据库交易和支付 ID、付款人电子邮件、发送电子邮件等。

这就是我的“onApprove”功能:

onApprove: function(data, actions) {

  var EXECUTE_URL = 'https://www.mywebsite.com/actions/paymentsuccess.php';

  return fetch(EXECUTE_URL, {
    method: 'post',
    headers: {
      'content-type': 'application/json'
    },
    body: JSON.stringify({
      paymentID: data.paymentID,
      payerID: data.payerID,
      payerEmail: data.payerEmail,
      payerName: data.payerName,
      payerPhone: data.payerPhone
    })
  });
},

如何调用 PHP 页面(可能带有 POST)并传递所有支付数据,并详细说明该页面(我不需要停留在支付页面)?

谢谢

【问题讨论】:

  • 你上面的代码是javascript还是php?谁在打电话给onApprove
  • 它是基于 Paypal sdk 的 javascript。我想将数据结构“传递”到另一个 PHP 页面
  • 您的 paymentsuccess.php 脚本实际上是在您的数据库中导入这些数据还是只是呈现它们?而paypal回调调用隐藏脚本来验证交易?
  • paymentsuccess.php 必须做两件事:在 mysql 数据库中记录数据,发送确认电子邮件..最后重定向到另一个“success.html”页面。我不想调用“隐藏”脚本

标签: javascript paypal


【解决方案1】:

如果您需要做某事,您应该在服务器上的“EXECUTE_URL”内进行(或者使用更多最新的集成,捕获 URL)这是任何重要的业务任务都应该在的地方 完成了。

但是,如果您想将用户重定向到某个结果点(而不是“做某事”),这应该在获取之后进行,并且只有在获取成功的情况下才会发生。您需要自己添加一个 JS 重定向。


所以基本上,添加处理 fetch 响应的 .then() 代码。

对于当前的集成(使用捕获,而不是执行),以下是解析获取响应的示例实现:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

  • 好的,所以我使用 FETCH 函数做错了。我只想将结果发布到“做某事”的 php 页面,该页面将显示成功或失败消息..所以我认为我不使用 FETCH。是真的吗?
  • 不,这不是真的。将您的 .then() 添加到 fetch 并在其中进行适当的重定向
  • 事情应该在 fetch 中完成。重定向应该在获取之后完成。这并不复杂。
  • 不要做你想做的事。这不可靠。所有信息都应该在获取中。在页面加载时,从数据库中检索您需要的任何内容。
  • 获取将触发您服务器上的捕获操作。那就去做吧。
【解决方案2】:

如果您使用的是 paypal sdk,那么您应该真正遵循文档 about confirmation page,并在已经加载了 paypal 的 sdk 对象的同一页面上显示您想要的用户信息

onApprove: function (data, actions) {

    // Get the order details
    return actions.order.get().then(function (orderDetails) {

      // Show a confirmation using the details from orderDetails
      // Then listen for a click on your confirm button

      document.querySelector('#confirm-button')
        .addEventListener('click', function () {

          // Capture the transaction funds
          return actions.order.capture().then(function () {
            // Show a confirmation to the buyer
          });
        });
      });
  }

【讨论】:

  • 我怎么理解,这个确认示例没有回答问题,因为它询问的是在付款后将用户重定向到页面,而这是关于付款前的确认页面。
猜你喜欢
  • 2014-07-15
  • 2014-11-07
  • 2012-12-31
  • 2021-01-21
  • 2012-06-26
  • 2021-01-13
  • 2012-06-02
  • 2021-07-04
  • 2017-09-20
相关资源
最近更新 更多