我正在尝试在php中实现MPGS支付网关。我使用的细节是相同的,使用第三方插件在woocommerce woo mpgs和使用mpgs gateway在开放购物车时使用和工作
但是我尝试着按照万事达卡官方集成指南对核心php做同样的操作,并且也转换了上述插件的源代码,但是在LIVE和TEST模式下都给予了如下相同的错误
下面是我使用的代码:
<?php
$orderid='223';
$merchant ='TestMYID';
$apipassword = 'xxx2b27cf8e45fffc6532f50xxxxxxxx';
$returnUrl = 'http://localhost/mpgs.php';
$currency = 'KWD';
$amount = 1;
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL,'https://ap-gateway.mastercard.com/api/nvp/version/55');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "apiOperation=CREATE_CHECKOUT_SESSION&apiPassword=$apipassword&apiUsername=merchant.$merchant&merchant=$merchant&interaction.operation=PURCHASE&interaction.returnUrl=$returnUrl&order.id=$orderid&order.amount=$amount&order.currency=$currency");
$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if(curl_errno($ch)){
echo curl_error($ch);
}
curl_close($ch);
$a = explode('&', $result);
foreach ($a as $result) {
$b = explode('=', $result);
$array[$b[0]] = $b[1];
}
$sessionid = ($array['session.id']);
//exit;
?>
<script src="https://ap-gateway.mastercard.com/checkout/version/55/checkout.js"
data-error="errorCallback"
data-cancel="http://localhost/mpgs.php">
</script>
<script>
function errorCallback(error)
{
alert("Error: "+JSON.stringify(error));
}
Checkout.configure({
merchant: '<?=$merchant?>',
order:{
amount:function(){
return <?=$amount?>;
},
currency:'<?=$currency?>',
description:'Order Goods',
id:'<?=$orderid?>'
},
interaction:{
merchant:{
name:'Anesthesia Lenses',
address:{
line1:'Kuwait',
line2:'Kuwait'
}
}
},
session:{
id:'<?=$sessionid?>'
}
});
Checkout.showPaymentPage();
//Checkout.showLightbox()
</script>
我还尝试了以下方法:
1.在活动域上运行它以排除任何基于域的阻塞条件
1.使用测试凭据和实时凭据运行,出现相同错误
1.从官方指南和其他来源尝试了多个测试卡
1.尝试使用亚太和欧洲端点
这是一个银行帐户位于科威特的网站运行,如果这有助于为网址是错误的或什么。
1条答案
按热度按时间a8jjtwal1#
MPGS API 57或更高版本支持3DS2.0身份验证。请升级57或更高版本。
如果您使用的是API版本63或更高版本,则需要更改托管 checkout 集成。