【问题标题】:(MasterCard Virtual Payment Client) migs integration php(万事达卡虚拟支付客户端) migs 集成 php
【发布时间】:2015-08-18 02:03:33
【问题描述】:

我正在尝试从 Axis 银行实施 migs 网关以接受在线支付,但我在与 PHP 中的网站集成时遇到问题。

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

使用的 migs 集成是

$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;

【问题讨论】:

  • @Akhilraj N S .. 你能告诉我原因吗?我在这里关注了你的回答http://stackoverflow.com/questions/8033497/migs-mastercard-virtual-payment-client-integration-php
  • @gags 解决了吗?

标签: php payment-gateway


【解决方案1】:

支付网关似乎正在检查您提交的返回 url 的有效性。

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

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

【讨论】:

  • 这显然是一个有效的 URL... localhost 怎么可能是无效的 URL,即使它在 Internet 上不存在
  • @Gags - htps 不是有效的协议。
  • 哎呀!!这是错字..我的坏:)
  • 当我更改为 http 然后我得到 HTTP 状态 - 400 :(
【解决方案2】:

尝试对数组$paymentdata 进行排序(按$keys 升序)。然后传递这个排序数组来创建 HASH。并且记得拥有 vpc_MerchTxnRef 唯一的。

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

【讨论】:

    【解决方案3】:

    尝试删除urlencode()

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 2013-04-14
      • 2017-12-21
      • 2020-03-22
      • 1970-01-01
      • 2017-02-22
      • 2013-01-07
      • 2016-02-16
      • 2017-03-13
      相关资源
      最近更新 更多