1

私のプロジェクトの最終段階は、銀行の決済ゲートウェイに私のウェブサイトを接続して、人々がクレジットカードを使用して物を買うことができます私のサイト。私はGoogleとstackoverflow上にいたし、私は正しい軌道にいると思うが、明らかに何か間違っている。xmlhttprequest暗号化キー+ htmlフォームを取得する - 私は何を間違っている

フォームが開くと、実際の注文を送信するために使用する素晴らしい長い暗号化文字列で応答する一連のパラメータをゲートウェイに送信するhttp-postが発生します。私は今かなり詰まっているので、私はここでいくつかの助けに感謝したいと思います。

<form method="post" action="/A55D74/fwcdirect.nsf/encrypt?OpenForm&amp;Seq=1" name="_encrypt"> 
<input type="hidden" name="__Click" value="0" /><form action="https://encryption-gateway-url.e" method="post"> 
<script> 
    var url = "valid-url"; 
    var params = "clientid=12&password=xyz&chargetype=Auth&currency=42&total=1.00"; 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("post", url, true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(params); 
    return xmlhttp.responseText; 
</script> 
<input type="hidden" name="returnurl" value="http://www.mywebsite.co.uk/"> 
<input type="hidden" name="merchantdisplayname" value="Website + Shopping cart"> 
<input type="submit" value="10.00"> 
</form> 

4月9日:ゲートウェイサーバーからのエラー応答を取得していますが、私はまだ、まだ問題が割れていない、私は現在、ボーナスはがプレインストールされていますように非常に有望で見て、さ道場を模索していますLotus Notesクライアント&サーバー(Domino 8.5.1にはdojo 1.3.2があります)。

+0

解決方法は、Javaバックエンドエージェントを使用して、httpURL接続を使用してEPDQ CPIに接続することでした。 – AndrewB

答えて

0

XMLHttpRequestがコールバックメソッドであるので、それはあなたがresponseTextを処理するコールバック関数を作成する必要がありますを意味します。

var url = "valid-url"; 
    var params = "clientid=12&password=xyz&chargetype=Auth&currency=42&total=1.00"; 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("post", url, true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

    // add this line 
    xmlhttp.onreadystatechange = callback 

    xmlhttp.send(params); 

    // remove this line 
    //return xmlhttp.responseText; 

// add a new function 
function callback(req, id) { 
    if(req.readyState == 4 && req.status == 200) { 
     alter(req.responseText); 
    } 
} 
+0

XMLHttpRequestはresponseTextを待つのを止めず、xmlhttp.send(params)の後にサーバー側から戻ります。サーバー側はresponseTextを処理するために指定したonreadystatechange関数を呼び出します。 – listen1984

+0

ありがとう、まだ動作しませんが、クライアントがスクリプトを実行しようとしているが、変更が役立つためです。 – AndrewB

+0

私はこれを答えとしてマークしましたが、最終的にはjavascript/xmlhttprequestを使用できませんでしたが、動作させることができませんでした。私は最終的にhttpurlconnectionを使ってソケットを開くjavaエージェントを使って解決しました。 – AndrewB

1

私は、同じ起源のポリシーがあなたが別のドメインへのデータの投稿と読み取りを妨げるクライアントではなく、サーバー上でこれを行うと想定されるでしょう。

I.e.顧客は最終支払いページを読み込みます。あなたのサーバーから返される前に、銀行にお支払いの詳細を投稿し、暗号化された応答を取得し、ユーザーが支払いのために実際に提出するフォームの隠しフィールドとして追加します。

これは、ユーザーがクライアント/金額のパラメータを使いこなすのを防ぐ方法だと考えられます。

(そのためには、あなたが、私はそれを自分自身を使用して行うことになって何を間違いだ場合、これは、EPDQのように見えます!)

+0

これは、サイトがLotus Domino上で動作しているため、eplgが複雑になっているため、すべてのサンプルperl、asp、phpスクリプトが役に立たなくなっています。 – AndrewB

+0

最後に、httpurlconnectionを使用してJavaエージェントで解決しました。私はlotusscriptエージェントを使ってサーバーに投稿するepdq暗号化キーを取得することができましたが、javaだけでチェックアウトコードの内部で応答をキャプチャすることができます。 – AndrewB

関連する問題