php - Hash Secure 不适用于 MIGS 支付

标签 php magento payment-gateway payment mastercard

我在我的 magento 安装中实现了 MIGS 支付服务,它使用的是 vpc_php_serverhost_do.php。这些是我传递给该文件的值

<input type="hidden" name="virtualPaymentClientURL" size="63" value="https://migs.mastercard.com.au/vpcpay" maxlength="250">
<input type="hidden" name="vpc_Version" value="1" size="20" maxlength="8">
<input type="hidden" name="vpc_Command" value="pay" size="20" maxlength="16">
<input type="hidden" name="vpc_MerchTxnRef" value="<?php echo $orderId; ?>" size="20" maxlength="40">
<input type="hidden" name="vpc_AccessCode" value="<?php echo $access_code; ?>" size="20" maxlength="8">
<input type="hidden" name="vpc_Merchant" value="<?php echo $merchant; ?>" size="20" maxlength="16">
<input type="hidden" name="vpc_OrderInfo" value="<?php echo $orderId; ?>" size="20" maxlength="34">  
<input type="hidden" name="vpc_Amount" value="<?php echo $amountInFils; ?>" size="20" maxlength="10">  
<input type="hidden" name="vpc_Locale" value="en" size="20" maxlength="5">
<input type="hidden" name="vpc_ReturnURL" size="63" value="<?php echo $url;?>" maxlength="350">
<input type="hidden" name="vpc_user_SessionId" size="63" value="<?php echo $sessionId;?>" maxlength="350">

我已经给出了客户提供的安全密码,其余代码如下所示

$vpcURL = $_POST["virtualPaymentClientURL"] . "?";

unset($_POST["virtualPaymentClientURL"]); 
unset($_POST["SubButL"]);

$md5HashData = $SECURE_SECRET;
ksort ($_POST);

$appendAmp = 0;

foreach($_POST as $key => $value) {
    if (strlen($value) > 0) {
        if ($appendAmp == 0) {
            $vpcURL .= urlencode($key) . '=' . urlencode($value);
            $appendAmp = 1;
        } else {
            $vpcURL .= '&' . urlencode($key) . "=" . urlencode($value);
        }
        $md5HashData .= $value;
    }
}

if (strlen($SECURE_SECRET) > 0) {
    $vpcURL .= "&vpc_SecureHash=" . strtoupper(md5($md5HashData));
}

header("Location: ".$vpcURL);

它正在按原样重定向到支付网关。问题是我在付款后得到的响应没有编码。响应链接是这样的(出于安全原因,我已经用 x 更改了数字)

https://xxxxxx/site_test/vpc_php_serverhost_dr.php?vpc_Amount=xx&vpc_BatchNo=x&vpc_Command=pay&vpc_Locale=en&vpc_MerchTxnRef=xxxxx&vpc_Merchant=xxxxx&vpc_Message=Cancelled&vpc_OrderInfo=xxxxx&vpc_SecureHash=xxxxxxxx&vpc_TransactionNo=x&vpc_TxnResponseCode=C&vpc_Version=xx

我应该怎么做才能使响应 url 编码?

最佳答案

您是否尝试过使用:

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

http://php.net/manual/en/function.urlencode.php

关于php - Hash Secure 不适用于 MIGS 支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404518/

相关文章:

php - htaccess 规则将子文件夹重写为 GET 变量

php - 插入数据 PDO 时出现问题

paypal - 一个有值(value)的对开发者友好的 PayPal 替代品

c# - Ingenico .net SDK 集成 - 进行任何 API 调用时出现未经授权和连接关闭异常

php - 如何使用 fpdf 创建 pdf 示例

Magento $_product->getName 为空

android 连接到 magento

magento - 选择不同的可配置产品时更改显示的图像(例如不同的颜色)

java - 如何估计运行促进在线交易的网络应用程序所需的互联网带宽?

php - 如何将输入时间的值插入到数据库表中?