【发布时间】:2018-08-01 01:06:50
【问题描述】:
如何远程向 PayFast 沙盒站点发出取消订阅?
假设是 Ajax PUT 或 Form PUT。
<form action="https://api.payfast.co.za/subscription/d776203c-341e-c12d-16cb-aa8872d5edee/cancel?testing=true" method="PUT">
<input type="hidden" name="merchant_id" value="10007713"><input type="hidden" name="merchant_key" value="hagd8cby0yk5o"><input type="hidden" name="return_url" value="https://fraternate.herokuapp.com/payment_finished"><input type="hidden" name="cancel_url" value="https://fraternate.herokuapp.com/payment_cancelled"><input type="hidden" name="notify_url" value="https://fraternate.herokuapp.com/payment_notify"><input type="hidden" name="name_first" value="Bob"><input type="hidden" name="name_last" value="Smith"><input type="hidden" name="email_address" value="s@gmail.com"><input type="hidden" name="m_payment_id" value="FAKE5551234"><input type="hidden" name="amount" value="1080.00"><input type="hidden" name="item_name" value="Single User - Subscription"><input type="hidden" name="item_description" value=""><input type="hidden" name="email_confirmation" value="1"><input type="hidden" name="confirmation_address" value="s@gmail.com"><input type="hidden" name="subscription_type" value="1"><input type="hidden" name="frequency" value="6"><input type="hidden" name="cycles" value="0"><input type="hidden" name="custom_str1" value="s@gmail.com"><input type="hidden" name="custom_str2" value="595b8b63dfbafe053c10e425">
<button type="submit">submit</button>
</form>
或
$.ajax({
type: "PUT", /* or type:"GET" or type:"PUT" */
crossDomain: true,
url: 'https://sandbox.payfast.co.za/sb/subs/cancel/f0d6c3bf-223a-958f-e4dd-5c37ef87821b?merchant_id=10007713&merchant_key=hagd8cby0yk5o&return_url=https%3A%2F%2Ffraternate.herokuapp.com%2Fpayment_finished&cancel_url=https%3A%2F%2Ffraternate.herokuapp.com%2Fpayment_cancelled¬ify_url=https%3A%2F%2Ffraternate.herokuapp.com%2Fpayment_notify&name_first=Bob&name_last=Smith&email_address=sd%40gmail.com&m_payment_id=FAKE5551234&amount=1080.00&item_name=Single+User+-+Subscription&item_description=&email_confirmation=1&confirmation_address=sd%40gmail.com&subscription_type=1&frequency=6&cycles=0&custom_str1=sd%40gmail.com&custom_str2=595b8b63dfbafe053c10e425',
success: function(data){
console.log('data',)
},
error:function(err){
console.log(err)
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
但是,这些选项都不起作用。
有许多可能的 URL:
https://sandbox.payfast.co.za/sb/subs/cancel/d776203c-341e-c12d-16cb-aa8872d5edee
https://api.payfast.co.za/[endpoint]/[token]/[action]?testing=true
https://sandbox.payfast.co.za/subscriptions/d776203c-341e-c12d-16cb-aa8872d5edee/cancel
但是这些项目没有成功。似乎需要将某种标头信息与商家 ID、令牌和订阅一起传递到 PUT 调用中。但是,没有样本就很难复制。
任何有关沙盒 API 取消订阅 url 帖子的帮助将不胜感激。
【问题讨论】:
-
我假设 CORS 已禁用,因此您无法通过前端的 JS 发送请求
-
所以你建议客户端需要将canecellation req传递给快速服务器,然后转发取消服务器端......现在开始测试。
标签: javascript html node.js mongodb