javascript - 万事达卡付款集成完成付款后如何重定向到链接
问题描述
付款完成后我需要重定向到一个 URL
我使用了文档中提供的代码
<script src="https://ap-gateway.mastercard.com/checkout/version/52/checkout.js"
data-error="errorCallback"
data-cancel="cancelCallback"
data-complete="completeCallback"
data-afterRedirect="restorePageState"
return_url="{{url('confirm_is_paid/'.$Recipt->id.'/'.$Recipt->security_code)}}"
>
</script>
<script type="text/javascript">
function errorCallback(error) {
console.log(JSON.stringify(error));
}
function cancelCallback() {
console.log('Payment cancelled');
}
Checkout.configure({
merchant: 'my_merchant_id',
order: {
amount: function() {
//Dynamic calculation of amount
return {{$Recipt->final_price}};
},
currency: 'EGP',
description: 'Ordered goods',
id: Math.random()
},
interaction: {
operation: 'PURCHASE', // set this field to 'PURCHASE' for Hosted Checkout to perform a Pay Operation. , AUTHORIZE
merchant: {
name: 'AAIB TEST',
address: {
line1: '200 Sample St',
line2: '1234 Example Town'
}
} }
});
function restorePageState(data)
{
window.location.replace("{{url('confirm_is_paid/'.$Recipt->id.'/'.$Recipt->security_code)}}");
}
function completeCallback(resultIndicator, sessionVersion) {
window.location.replace("{{url('confirm_is_paid/'.$Recipt->id.'/'.$Recipt->security_code)}}");
}
Checkout.showPaymentPage();
</script>
一切正常,但付款完成后我无法重定向,所以我可以做些什么来让它在付款完成后重定向到一个 url?
解决方案
以下是有效的,并且已经针对 MPGS 版本 56 到 58 进行了测试
我希望我的回答能找到你。
不幸的是,您提到的问题今天仍然存在,而且很奇怪,MPGS 团队仍然没有解决它。
首先,我想从 MPGS 的文档中指出以下几点:
Requesting a Hosted Checkout interaction is a simple process:
Request a checkout session using the Create Checkout Session operation. The request should include payment and interaction data, as well as completion instructions. A sample curl snippet for the Create Checkout Session operation is shown below.
curl https://ap-gateway.mastercard.com/api/nvp/version/57 \
-d "apiOperation=CREATE_CHECKOUT_SESSION" \
-d "apiPassword=$PWD" \
-d "apiUsername=merchant.<your_merchant_id>" \
-d "merchant=<your_merchant_id>" \
-d "interaction.operation=AUTHORIZE" \
-d "order.id=<unique_order_id>" \
-d "order.amount=100.00" \
-d "order.currency=USD"
这将返回一个session.id
您应该包含在您的Checkout.configure
javascript 函数中的内容,您当前的示例代码中缺少该内容。
您的标签缺少参数Checkout.configure()
:
session: {
id: '<your_create_checkout_session_ID>'
},
现在深入挖掘并找到答案。在 MPGS 文档的每个部分中,他们建议使用data-complete="completeCallback"
or data-complete="http://[your domain]/receiptPage"
,因为我们正在使用-> 这completeCallback
对于我们的实现来说不够好,MPGS 也没有很好地记录,并且or url 不起作用,因为我们会到达付款页面,并且永远不会从 MPGS 的收据页面重定向到我们的服务器。Checkout.showPaymentPage();
data-complete
return-url
在深入研究文档后,我们注意到了请求参数interaction.cancelUrl
,更重要interaction.returnUrl
的是在Create Checkout Session文档中。
来自 MPGS Create Checkout Session
api 文档。
interaction.returnUrl URI
The URL to which you want to return the payer after completing the payment attempt.
interaction.cancelUrl URI
The URL to which you want to redirect the payer's browser if they cancel their payment.
并且您会注意到上面的功能与data-complete
和data-cancel
终于解决了
对于Checkout.showPaymentPage();
您必须在初始时传递这些参数request session request
curl https://ap-gateway.mastercard.com/api/nvp/version/57 \
-d "apiOperation=CREATE_CHECKOUT_SESSION" \
-d "apiPassword=$PWD" \
-d "apiUsername=merchant.<your_merchant_id>" \
-d "merchant=<your_merchant_id>" \
-d "interaction.operation=AUTHORIZE" \
-d "order.id=<unique_order_id>" \
-d "order.amount=100.00" \
-d "order.currency=USD"
-d "interaction.returnUrl=<your_returnUrl or data-complete url>"
-d "interaction.cancelUrl<your_cancel_url> or data-cancel url>"
当您想要重定向回您的网站时,添加额外的参数将解决重定向问题。您将在下面找到以下内容Obtain the Payment Result
To return the payer to your shop site, you must either:
provide interaction.returnUrl in the Create Checkout Session operation, OR
define the complete callback in the Hosted Checkout request. See Basic Callbacks.
这应该被重构为interaction.returnUrl
应该被使用Checkout.showPaymentPage()
并且complete callback
应该被使用在Checkout.showLightbox()
我希望这有助于并为新访问者节省大量时间和电子邮件。
参考:
推荐阅读
- hibernate - 通过自定义字段加入休眠实体
- vue.js - Vue
不在 URL 中附加参数 - postgresql - Postgres全文搜索Jsonb数组列不显示第一行
- javascript - Sweet Alert:需要 Ajax 调用帮助
- c# - UWP EntityFrameworkCore 迁移问题
- java - 涉及包含 bean 'XXX' 的循环引用 - 考虑将工厂方法声明为静态以独立于其包含实例
- java - 从 Swagger 中删除额外的参数
- java - markRollbackOnly() 在 Camel 2.0 中不起作用
- javascript - Using map to reformat objects in an array to new element array
- azure - Azure SQL 数据库的连接日志