現在、支払いオーソライザーに送信される大きなフォームがあります ( action="paymentautherizerURL" によって送信されます) が、DB にトランザクションを保存するときに、必要なすべての情報が返されません。
セッションに保存できるように、送信前にフォームデータをインターセプトする必要があります(PHP / jQueryを使用しています)、または必要な情報を取得する中間スクリプトレットに送信してから、 jQuery の $.post() を使用してデータを再構築し、オーソライザーに送信します。
2 番目のアプローチはうまくいかないようですが、少なくとも私の努力ではうまくいきません。$.post がフォームの送信アクションを適切にエミュレートしているかどうかはわかりません。または、少なくとも私はそれを正しく行っていません。
<?php
session_start();
$post = $_POST;
//gets all of the information that beanstream does not return to approved.php, but is still required to make
//a legitimate database entry. gets from the POST and stores in the session array for approved.PHP to access
$_SESSION['approvedArray']['billAddress'] = $_POST['ordAddress1'];
$_SESSION['approvedArray']['billProvince'] = $_POST['ordProvince'];
$_SESSION['approvedArray']['billCountry'] = $_POST['ordCountry'];
$_SESSION['approvedArray']['billPostalCode'] = $_POST['ordPostalCode'];
$_SESSION['approvedArray']['billCity'] = $_POST['ordCity'];
$_SESSION['approvedArray']['shipAddress'] = $_POST['shipAddress1'];
$_SESSION['approvedArray']['shipPostal'] = $_POST['shipPostalCode'];
$_SESSION['approvedArray']['shipCity'] = $_POST['shipCity'];
$_SESSION['approvedArray']['shipProvince'] = $_POST['shipProvince'];
$_SESSION['approvedArray']['shipCountry'] = $_POST['shipCountry'];
session_write_close();
//the javascript below will send what is required to beanstream as though it were sent from the form
<script type='text/javascript'>
$.post(, {
<?php
//rebuild the POST such that "name: value, " except the last name/value will not be followed by a comma
$keys = array_keys($_POST);
for($i = 0; $i < count($_POST); $i++) {
$currentKey = $keys[$i];
$currentPost = $_POST[i];
echo $currentKey . ": " . $currentPost;
if ($i < (count($_POST) - 1)) {
echo ", ";
}
}
?>
});
</script>
?>
通常、トランザクション承認者はユーザーを 3 つのページ (承認、拒否、エラー) のいずれかにリダイレクトし、そこから Web サイトが処理を行います。ただし、現在このページでスタックしているため、適切に送信されていないと思います。
私はあらゆる形の批判、アプローチ、アイデアを受け入れます。事前にどうもありがとうございました。他の情報が必要な場合はお知らせください。