(万事达卡虚拟支付客户端)迁移集成php

时间:2015-06-03 17:52:06

标签: php payment-gateway

我正在尝试从Axis银行实施migs网关接受在线支付,但我面临与PHP网站混淆的问题。

我在Google上阅读了很多教程,最后找到了一个至少将我带到万事达卡页面的解决方案,但我在MIGS网关的Landing页面上收到错误。下面的错误Pic:

enter image description here

使用的migs Integeration是

$SECURE_SECRET =  "****************"; //value from migs payment gateway
    $accessCode    =  "********";//value from migs payment gateway
    $merchantId    =  "********";//value from migs payment gateway
    $unique_id = rand(8888888,999999);
    $paymentdata = array(
             "vpc_AccessCode" => $accessCode,
             "vpc_Amount" => ("100"),
             "vpc_Command" => 'pay',
             "vpc_Locale" => 'en',
             "vpc_MerchTxnRef" =>  "ODID".$unique_id,
             "vpc_Merchant" => $merchantId,
             "vpc_OrderInfo" => "Some Comment",
             "vpc_ReturnURL" => "htps://localhost/test/success.php",
             "vpc_Version" => '1'
                       );
    ksort($paymentdata);
    $actionurl = 'https://migs.mastercard.com.au/vpcpay?';
    $HashData = $SECURE_SECRET;
    $str = 0;
    foreach ($paymentdata as $key => $value) {
        // create the md5 input and URL
        if (strlen($value) > 0) {
            if ($str == 0) {
                $actionurl .= urlencode($key) . '=' . urlencode($value);
                $str = 1;
            } else {
                $actionurl .= '&' . urlencode($key) . "=" . urlencode($value);
            }
            $HashData .= $value;
        }
    }

    if (strlen($SECURE_SECRET) > 0){$actionurl .= "&vpc_SecureHash=" . 
      strtoupper(md5($HashData));}
    //header("Location: " . $actionurl);
    echo $actionurl;

3 个答案:

答案 0 :(得分:1)

看起来支付网关正在检查您提交的返回网址的有效性。

  "vpc_ReturnURL" => "htps://localhost/test/success.php"

如果您提供有效的,可公开访问的网址,则应解决此错误。

答案 1 :(得分:0)

尝试对数组$paymentdata进行排序(按$键升序)。然后传递这个已排序的数组以创建HASH。并且记住要vpc_MerchTxnRef唯一。

除此之外,您的代码似乎还可以。

答案 2 :(得分:0)

尝试删除urlencode()

if ($str == 0) {
    $actionurl .= $key . '=' . $value;
    $str = 1;
 } else {
    $actionurl .= '&' . $key . "=" . $value;
 }

当我尝试升级到SHA256时,urlencode()确实导致400错误。