編集:
アシュリーは言った:
さて、私はcURLマニュアルを見て、POST値をサードパーティのチェックアウトに転送するためのこの非常に単純なスクリプトを作成しました。ただし、これはチェックアウトページの内容を表示するだけです。URLアドレスは、サードパーティのサイトに転送するのではなく、現在実行中のスクリプトを示しています。また、それらの比較的リンクされたグラフィックスはすべて機能しません。cURLを使用して「真の」転送を実現できますか?
簡単な答え-いいえ。
オフサイトプロセスの途中で何かを行う(html /メッセージのカスタマイズ、データの検証など)場合は、支払いプロセスを説明した方法で、cURLで実行できるプロセス全体を処理する必要があります。 。
cURLを使用すると、リクエストを「転送」するのではなく、リクエストを「プロキシ」することができます。したがって、ブラウザのURLが変更されることはなく、相対的なグラフィックスが機能しないという事実が予想されます。cURLまたは同様のものを使用すると、外部ページに触れていることをユーザーエンドユーザーに知らせることはできません。サーバー上のその外部サーバーへのすべての要求を処理してから、外部サーバーからユーザーへの応答を表示するか、その応答を解析して、カスタマイズされた方法でその外部サーバーからのデータを使用できるようにします。
基本的に、これはsecure.wp3.rbsworldpay.com/wcc/purchase
、ユーザーからのさらなる対話を必要とするフォームを返す場合、サーバー上でこのフォームを模倣し、代わりにそれを表示する必要があることを意味します。次に、ユーザーがフォームを送信したら、もう一度cURLを使用して外部サーバーにリクエストを送信します。今回は、ユーザーが送信した次のラウンドのデータを投稿します。たとえば、次のように言います。
secure.wp3.rbsworldpay.com/wcc/purchase
カートを表示します
secure.wp3.rbsworldpay.com/wcc/confirm
行われる支払いの最終確認を示します
secure.wp3.rbsworldpay.com/wcc/success
secure.wp3.rbsworldpay.com/wcc/error
トランザクションが成功したか失敗したかをそれぞれ示します。
次に、実際には、トランザクションプロセスの一部として、外部から2つの要求を行う必要があります。これは、次のように要約できます。
- ユーザーはサイトで買い物をし、カートに商品を追加します
- ユーザーがチェックアウトをクリックすると、カート/ユーザーデータが検証されます
- #2のデータが有効な場合は、データをパッケージ化し
secure.wp3.rbsworldpay.com/wcc/purchase
てcURL経由で投稿します
- #3からのcURL応答が成功した場合は、cURL応答からのデータを使用して独自の確認ページを作成し、それをユーザーに表示します。
- ユーザーは購入の確認をサーバーに送信します。
secure.wp3.rbsworldpay.com/wcc/confirm
サーバーに送信されたデータを#5にパッケージ化し、 cURL経由で投稿します。
- #6からのcURL応答が成功した場合は、外部サーバーから返された予想される「エラー」または「成功」メッセージを解析し、それらまたは独自のカスタムエラーメッセージを表示します。
- エラーが発生した場合は、すすぎ、繰り返します;-)
一般的に、ほとんどの支払い処理業者には、この基本的なプロセスをサポートする処理オプションがあり、多くの場合、データをHTMLではなくXML、JSON、またはプレーンテキストとして簡単に解析できます。あなたはこれを調べたいと思うかもしれません。多くの場合、統合プロセスを容易にするために、さまざまなプログラミング言語用にライブラリが構築されています。
はい、確かに...私は通常、curl
このようなことを行うために拡張機能を使用するか、を利用するhttpクライアントクラスを使用しcurl
ます。自分で少し簡単にして、これらのクラスライブラリの1つを使用することをお勧めします-たとえばZend_Http_Client
。curl
ソケットとプロキシだけでなく、サポートします。