在集成WorldPay HTML重定向时,MC_callback不会重定向

时间:2014-06-05 09:59:46

标签: php html redirect payment-gateway worldpay

我正在构建一个脚本,通过HTML POST将数据发送到WorldPay。这一切都很有效,除非付款处理完毕后它不会重定向回客户的网站。

我已将返回网址添加到管理系统中的付款响应网址中,并将MC_callback值添加到HTML表单中。

$call_back_url = HTTP_ROOT."/checkout_result/?order_id=".$_order->order_id;

$data = array(
"instId"      => "1009258",
"cartId"      => $_settings['shop_name']. " Order ID ".$_order->order_id,
"currency"    => "GBP",
"testMode"    => "100",
"name"        => $_order->first_name . " " .  $_order->surname,
"email"       => $_order->email,
"address1"    => $_order->billing_address_1,
"address2"    => $_order->billing_address_2,
"address3"    => $_order->billing_address_3,
"town"        => $_order->billing_town_city,
"postcode"    => $_order->billing_postcode,
"country"     => $_order->billing_country,
"tel"         => $_order->tel,
"amount"      => $_order->paid,
"desc"        => $_settings['shop_name']. " Order ID ".$_order->order_id,
"MC_callback" => $call_back_url,
);

?>

<div style="display: none;">
<form action="https://secure-test.worldpay.com/wcc/purchase" method="POST"  id="submit_worldpay" />
<?php foreach($data as $key => $value){ ?>
<input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>">
<?php } ?>
<fieldset class="submit">
<input type="submit" value="Confirm your purchase" />
</fieldset>
</form>
</div>

<script type="text/javascript">
document.getElementById('submit_worldpay').submit(); // SUBMIT FORM
</script>

我在WorldPay的网站上收到以下消息:

这不是实时交易。没有钱易手。 谢谢,您的付款成功。 商家参考:我的商店订单ID 823 WorldPay交易ID:{数字在这里,但我已经隐藏了它}

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,这就是我所做的。

首先,要了解回调网址不适用于Worldpay重定向到。它只是执行一个服务器到服务器&#34;调用以通知服务器事务的状态。

如果您没有上传任何resultY.html,Worldpay将显示您提到的页面。类似于resultC.html。请注意,这些文件名区分大小写。

我使用简单的META标记上传了这两个文件,该标记将用户重定向到我的网站。 resultY会将成功页面和结果C重定向到&#34;抱歉再试一次&#34;页。在此重定向中,您可以添加原始变量MC _ *。

<meta http-equiv="refresh" content="0; url=<wpdisplay item=MC_callbackURL>?cartId=<wpdisplay item=MC_cartId>&Result=Y">

在重定向中,我附上购物车ID。请注意 - 您不应该根据此链接更新数据库。数据库的更新是通过Worldpay的服务器到服务器调用来执行的。

就是这样。