【问题标题】:PayFast payment integration in ReactJSReactJS 中的 PayFast 支付集成
【发布时间】:2021-05-21 01:12:06
【问题描述】:

我正在尝试在 ReactJS 中集成 PayFast 支付。

根据 PayFast 的 the documentation,当表单作为 POST 请求提交时,用户将被定向到 PayFast 付款页面。

我如何知道付款完成或从 notify_url 取消的时间?

PayFast 仅显示 PHP 示例。我也可以通过 NodeJS 处理吗?

【问题讨论】:

  • PayFast 将在付款完成后将用户重定向回您的 return_url 之前将帖子发送回您的 notify_url。如果取消付款,用户将返回到您的 cancel_url。请务必注意,不会将任何付款数据发布到 return_url 或 cancel_url。 developers.payfast.co.za/documentation/#notify-page-itn
  • 谢谢@Daniel_ZA。关于取消订阅你有参考哪些有助于取消订阅。我联系了支持团队,他们告诉我目前 payfast 不支持 JavaScript,但这并不是说我成功完成了添加 hic 并使用 JavaScript 获取订阅,现在正在取消订阅。
  • “不支持 javascript”的意思是,由于 CORS(与用于创建订阅的端点不同),您不能使用 JS 直接发布到 API 端点。创建订阅后,您需要从服务器端脚本(PHP、节点等)执行任何后续 API 调用(更新、收费、暂停、取消)。
  • @Daniel_ZA Thanx 经过更多尝试,我完成了任务。谢谢。
  • @jatin.7744 你是如何实现它的。我也在使用 vuejs 和 laravel 进行 payfast,但我无法做到这一点。您能否分享演示代码或任何工作示例。谢谢

标签: javascript node.js reactjs


【解决方案1】:

我在 ReactJS 中成功实现了它,希望对你有帮助。 我在前面做了什么,我做了一个所需信息的对象。

const params = new URLSearchParams({
  merchant_id: "....",
  merchant_key: "....",
  return_url: "https://yourApplication/paymentscreen",
  cancel_url: "https://yourApplication/paymentscreen",
  notify_url: "https://yourApplication/paymentscreen",
  name_first: name,
  email_address: email,
  m_payment_id: unique_id_for_user,
  amount: amount,
  item_name: payment_name,
  item_description: description_if_any,
  custom_int1: custome_integer_value_if_any,
  custom_str1: custome_string_value_if_any,
  custom_str2: custome_string_value_if_any,
  passphrase: passphrase_set_in_payfast_account.
});

// Create an MD5 signature of it.
const MD5Signature = md5(params.toString())

现在我在点击付款按钮时提交了一个隐藏表单。 确保序列在这里很重要,他们确实提到了有关字段序列的任何信息,我也面临许多问题,但后来经过太多调试,我得到了正确的序列。

<form action="https://www.payfast.co.za/eng/process" method="POST">
          <input type="hidden" name="merchant_id" value="...." />
          <input type="hidden" name="merchant_key" value="....." />
          <input type="hidden" name="return_url" value="https://yourApplication/paymentscreen" />
          <input type="hidden" name="cancel_url" value="https://yourApplication/paymentscreen" />
          <input type="hidden" name="notify_url" value="https://yourApplication/paymentscreen" />
          <input type="hidden" name="name_first" value={name} />
          <input type="hidden" name="email_address" value={email} />
          <input type="hidden" name="m_payment_id" value={unique_id_for_user} />
          <input type="hidden" name="amount" value={amount} />
          <input type="hidden" name="item_name" value={payment_name} />
          <input type="hidden" name="item_description" value={description_if_any} />
          <input type="hidden" name="custom_int1" value={custome_integer_value_if_any} />
          <input type="hidden" name="custom_str1" value={custome_string_value_if_any} />
          <input type="hidden" name="custom_str2" value={custome_string_value_if_any} />
          <input type="hidden" name="passphrase" value="passphrase" />
          <input type="hidden" name="signature" value={MD5Signature} />
          <div className="row" style={{display: 'flex', justifyContent: 'center', alignItems: 'center'}}>
            <div className="col-lg-6">
              <img alt="payfast" src="../public/upload/payfastpaynow.png" vspace="3" width="100%" height="100%" />
            </div>
            <div className="col-lg-6">
                <input style={{marginRight: 20, float: 'right'}} name="disable" type="submit" disabled={isEnablePayment} width="100%" height="100%" alt="Submit" align="bottom" value="Purchase" />
            </div>
          </div>
        </form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 2017-03-25
    • 2019-10-30
    • 2012-07-23
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多