4

HTML POST 経由で WorldPay にデータを送信するスクリプトを作成しています。支払いが処理されたときに顧客のサイトにリダイレクトされないことを除いて、すべてうまく機能します.

管理システムの支払い応答 URL にリターン URL を追加し、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 のサイトで次のメッセージが表示されます。

これはライブ トランザクションではありませんでした。お金は手を変えていません。ありがとうございます。お支払いが完了しました。加盟店の参照: My Store 注文 ID 823 WorldPay トランザクション ID: {番号はここにありますが、隠しています}

4

1 に答える 1

3

私は同じ問題を抱えていましたが、これが私がしたことです。

まず、コールバック URL は Worldpay がリダイレクトするためのものではないことを理解してください。「サーバー間」呼び出しを実行して、サーバーにトランザクションのステータスを通知するだけです。

resultY.html をアップロードしていない場合、Worldpay はあなたが言及したページを表示します。resultC.html についても同様です。これらのファイル名は大文字と小文字が区別されることに注意してください。

ユーザーを自分のサイトにリダイレクトする単純な META タグを使用して、これら 2 つのファイルをアップロードしました。resultY は成功ページをリダイレクトし、resultC は「Sorry Try again」ページにリダイレクトします。このリダイレクトでは、元の変数 MC_* を追加できます。

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

リダイレクトでは、カート ID を添付します。注意 - このリンクに基づいてデータベースを更新しないでください。データベースへの更新は、Worldpay からのサーバー間呼び出しを通じて実行されます。

それだけでした。

于 2015-11-23T04:16:18.107 に答える