php MPGS(万事达卡网关)返回错误,但在woocommerce或opencart中使用插件时工作

qojgxg4l  于 2023-01-19  发布在  PHP
关注(0)|答案(1)|浏览(165)

我正在尝试在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.尝试使用亚太和欧洲端点
这是一个银行帐户位于科威特的网站运行,如果这有助于为网址是错误的或什么。

a8jjtwal

a8jjtwal1#

MPGS API 57或更高版本支持3DS2.0身份验证。请升级57或更高版本。
如果您使用的是API版本63或更高版本,则需要更改托管 checkout 集成。

相关问题