2011-01-16 8 views
0

私はウェブサイトを持っており、ユーザは支払いを行うことができ、ウェブは3つのセクションに分割された独自のページを持っている必要があります。最初は支払方法(Visa、Mastercardなど)を選択するためのもので、もう1つは、ユーザーが転送する金額を入力する入力ボックスと、Moneybookers支払いゲートウェイの負荷を処理するボタンです。 3番目のセクションには、ユーザーがトランザクションボタンをクリックするまで、ロードを待機する空のDIVがあります。だから、これが終わると、私はAJAX経由でPHPを呼び出します。 AJAX機能のコードは次のいずれかです。AjaxレスポンスのDIVにIFrameを挿入する

var xml = null; 
    try{ 
     xml = new ActiveXObject("Microsoft.XMLHTTP"); 
    }catch(expeption){ 
     xml = new XMLHttpRequest(); 
    }xml.open("POST", "mb_connect.php", false); 
    xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xml.send("pay_to_email="+datos[3]+"&transaction_id="+datos[1]+ 
     "&status_url="+datos[2]+ 
     "&language="+lang+ 
     "&pay_from_email="+datos[13]+ 
     "&firstname="+datos[5]+ 
     "&lastname="+datos[6]+ 
     "&address="+datos[7]+ 
     "&postal_code="+datos[8]+ 
     "&city="+datos[9]+ 
     "&state="+datos[10]+ 
     "&country="+datos[11]+ 
     "&date_of_birth="+datos[12]+ 
     "&amount="+document.payment.cantidad.value+ 
     "&payment_methods="+datos[4]); 

    $("#contenido").html(xml.responseText); 

と呼ばれるPHPで、この1:

<?php header('Content-type: text/html; Charset=utf-8'); 

extract($_POST); 
$status_url2 = 'mailto:[email protected]'; 
$return_url_target = 3; 
$return_url = 'https://www.misite.com'; 
$cancel_url = 'https://www.misite.com'; 

?> 


<iframe id="myiframe" name="myiframe" frameborder="no" style="height: 600px; width:735px;" scrolling = "auto"> 
</iframe> 
<form name="oc" action="https://www.moneybookers.com/app/payment.pl" method="post" target="myiframe"> 

<input type="hidden" name="pay_to_email"  value="<?= $pay_to_email ?>"> 
<input type="hidden" name="recipient_description" value="My SITE ltd"> 
<input type="hidden" name="transaction_id"  value="<?= $transaction_id ?>">  
<input type="hidden" name="status_url"  value="<?= $status_url ?>"> 
<input type="hidden" name="status_url2"  value="<?= $status_url2 ?>"> 
<input type="hidden" name="return_url_target" value="<?= $return_url_target ?>"> 
<input type="hidden" name="return_url"  value="<?= $return_url ?>"> 
<input type="hidden" name="cancel_url"  value="<?= $cancel_url ?>"> 
<input type="hidden" name="return_url_target" value="1"> 
<input type="hidden" name="cancel_url_target" value="1"> 
<input type="hidden" name="language"  value="<?= $language ?>"> 
<input type="hidden" name="confirmation_note" value=""> 
<input type="hidden" name="pay_from_email"  value="<?= $pay_from_email ?>"> 
<input type="hidden" name="title"  value=""> 
<input type="hidden" name="firstname"  value="<?= $firstname ?>"> 
<input type="hidden" name="lastname"  value="<?= $lastname ?>"> 
<input type="hidden" name="address"  value="<?= $address ?>"> 
<input type="hidden" name="postal_code"  value="<?= $postal_code ?>"> 
<input type="hidden" name="city"  value="<?= $city ?>"> 
<input type="hidden" name="state"  value="<?= $state ?>"> 
<input type="hidden" name="country"  value="<?= $country ?>"> 
<input type="hidden" name="date_of_birth"  value="<?= $date_of_birth ?>"> 
<input type="hidden" name="amount"  value="<?= $amount ?>"> 
<input type="hidden" name="currency"  value="EUR"> 
<input type="hidden" name="rec_cycle"  value="day"> 
<input type="hidden" name="payment_methods" value="<?= $payment_methods ?>"> 
<input type="hidden" name="submit_id"  value="Submit"> 

</form> 
<script language="JavaScript">document.oc.submit();</script> 

ので、このスクリプトは、実行されると、自動的にMoneybookersの支払いゲートウェイを呼び出し、返しますIFRAMEに挿入されるHTMLコード。

このプロセスは、Internet Explorerを除くすべてのブラウザで正常に動作します。エラーはなく、DIVは空です。

誰もが間違いを知っていますか?

私は助けていただきありがとうございます。

ありがとうございました。

答えて

0

元のページがmoneybookers.comと同じドメインに読み込まれていない限り、これはセキュリティ違反として表示されます。おそらくdocument.domainをiFrameをロードするときに変更すると、問題が緩和される可能性があります。

さらに詳しい記事はcross-domain communication with iFramesです。

幸運。

0

私はかつてこの問題を抱えていました。 ajaxリクエストされたページが別のドメイン上にあったため、POSTリクエストがOPTIONリクエストに変更され、問題が発生しました。 (ネットテーブルのみをチェックしてください)

関連する問題