現在、PayPal の Payflow Pro Gateway との統合を開発中です。PayPal にリクエストを送信して、「セキュア トークン」を取得し、それを使用して実際の取引を行うことができます。SO で見つけたサンプルは cURL 経由で動作しますが、私が実行した元の HTML フォーム POST および RunScope テストは動作しませんでした。
cURL コマンドは次のとおりです。
curl https://pilot-payflowpro.paypal.com -kd "PARTNER=PayPal&VENDOR=*****&USER=*****&PWD=*****&TRXTYPE=A&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=*******&SILENTTRAN=TRUE"
cURL のドキュメントによると:
-k オプションは次のとおりです。
"(SSL) このオプションは、curl が「安全でない」SSL 接続および転送を実行することを明示的に許可します。デフォルトでインストールされた CA 証明書バンドルを使用して、すべての SSL 接続を安全にしようとします。これにより、「安全ではない」と見なされるすべての接続が失敗します。 、 --insecure が使用されています。」
-d オプションは次のとおりです。
"(HTTP) ユーザーが HTML フォームに入力して送信ボタンを押したときにブラウザーが行うのと同じ方法で、POST 要求で指定されたデータを HTTP サーバーに送信します。これにより、curl はデータをcontent-type application/x-www-form-urlencoded を使用するサーバー。-F、--form と比較してください。」
-d, --data は --data-ascii と同じです。データを純粋なバイナリで投稿するには、代わりに --data-binary オプションを使用する必要があります。フォーム フィールドの値を URL エンコードするには、--data-urlencode を使用できます。
これらのオプションのいずれかが同じコマンド ラインで 2 回以上使用された場合、指定されたデータは & 記号で区切られてマージされます。したがって、「-d name=daniel -d skill=lousy」を使用すると、「name=daniel&skill=lousy」のような投稿チャンクが生成されます。
文字 @ でデータを開始する場合、残りはデータを読み取るファイル名にする必要があります。または、curl に標準入力からデータを読み取らせたい場合は、. ファイルの内容は、すでに URL エンコードされている必要があります。複数のファイルを指定することもできます。したがって、「foobar」という名前のファイルからデータを投稿するには、--data @foobar を使用します。--data がそのようなファイルから読み取るように指示されると、キャリッジ リターンと改行が削除されます。
それはうまく機能し、次の応答を返します。
RESULT=0&SECURETOKEN=*****&SECURETOKENID=*****&RESPMSG=Approved
HTML フォーム POST
ただし、同じリクエストであると認識しているものは、次の HTML フォーム POST で失敗します。
<input type="hidden" name="TRXTYPE" value="A" />
<input type="hidden" name="SILENTTRAN" value="TRUE" />
<input type="hidden" name="AMT" value="40" />
<input type="hidden" name="CREATESECURETOKEN" value="Y" />
<input type="hidden" name="SECURETOKENID" value="*****" />
<input type="submit" value="Get Secure Token" />
これにより、FireFox で「接続がリセットされました」というメッセージが表示されます。
また、jQuery を使用して $.ajax() を使用してデータを POST しようとしましたが、データが含まれていない 200 応答を受け取りました。
ランスコープ
上記のパラメーターをRunScopeに入力すると、次のようになります。
RESULT=1&SECURETOKENID=*****&RESPMSG=User authentication failed
意味がありません!
私は、PayPal がユーザー エージェントまたはリクエスト ヘッダーを調べて何かをしていると考えていましたが、本当の考えはありません。誰でもこの動作に光を当てることができますか?