1

PayPal Payments Advanced がありますが、最初のゲートウェイ統合ステップを通過できません。おそらく、明らかなはずの単純なものが欠けているのでしょう。

高度なゲートウェイを統合するために私が見つけることができたすべての公式のPayPalドキュメントは、最初のステップはセキュアトークンを取得することであると述べています. たとえば、 https://developer.paypal.com/webapps/developer/docs/classic/payflow/gs_ppa_hosted_pa​​ges/のページ 。

以下にテスト スクリプトを投稿します (機密情報は変更されています)。

テスト スクリプトを実行するたびに、「エラー: トランザクションを処理できなくなりました。マーチャントの Web サイトに戻るか、マーチャントに連絡してください。エラー: 160」というエラー メッセージが表示されます。

PayPal Gateway 開発者ガイドおよびリファレンスによると、エラー 160 は「セキュア トークンは既に使用されています。トランザクションが成功したか、トランザクションを正常に処理しようとしたときにトークンが 3 回使用されたため、セキュア トークンが期限切れになったことを示します。新しいセキュア トークンを生成する必要があります。」

ただし、セキュア トークンはまだ使用されていません。スクリプトが実行されるたびに新しいものが生成されます。

PayPalマネージャーで「セキュアトークンを有効にする」が「はい」に設定されています。

これがスクリプトです。私は何を間違っていますか?

<?php
$url = 'https://payflowlink.paypal.com';
#$url = 'https://pilot-payflowlink.paypal.com';

$token = md5( 'Will Bontrager' . time() );

/* $info assignment is all one line. Multi-line here for readability */
$info = "PARTNER=PayPal&
VENDOR=CertainReservations&
USER=ABC123&
PWD=321cba&
TRXTYPE=S&
AMT=23.45&
CREATESECURETOKEN=Y&
SECURETOKENID=$token";

echo "<pre>Value:$info</pre>";

$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER         => false,
CURLOPT_VERBOSE        => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST           => 1,
CURLOPT_POSTFIELDS     => $info
);
$ch = curl_init($url);
curl_setopt_array($ch,$options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo "<pre>Error. $err\n$errmsg\n";
print_r($info);
echo '</pre>';
}
echo $content;
?>

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

いくつかの重要な情報が欠落しているに違いないと思います。

意思

4

3 に答える 3

1

ステップ 2 にセキュア トークンが渡されない場合にもエラー 160 がスローされることを追加したかっただけです。

これが発生した場合: ホストが curl 呼び出しをブロックしたため、安全なトークンなしで Paypal iframe が要求され、エラー 160 が発生しました。

于 2013-08-02T02:39:38.383 に答える
0

私が知る限り (これは役に立ちますが、明確に文書化されていません)、https://pilot-payflowlink.paypal.com から安全なトークンを取得することはできませんが、https ://pilot-payflowpro. paypal.comは問題なく動作しているようです。トークンを取得したら、payflowlink で使用できます。

于 2013-12-11T23:40:20.810 に答える
0

この Payflow Gateway のドキュメントの 31 ページによると、これは機能する可能性があります。適切な 301 リダイレクトなしで PDF が削除または移動された場合に備えて、ここにコンテンツをコピーしました。

安全なトークンを作成するには、クレジット カード番号、有効期限、小切手番号などの支払いの詳細パラメーターを除いて、トランザクションを処理するために必要なすべてのパラメーターを渡します。

さらに、次の Payflow パラメーターを渡してセキュア トークンを作成します。

  1. SECURETOKENID を、最大 36 文字の長さの一意の英数字値に設定します。SECURETOKENID=9a9ea8208de1413abc3d60c86cb1f4c5

  2. ゲートウェイ サーバーがトークンを返すように要求するには、CREATESECURETOKEN を値 Y に設定します。CREATESECURETOKEN=Y

  3. ホストされたページの表示を抑制するには、SILENTTRAN を値 TRUE に設定します。サイレントトラン=TRUE

トランザクションが成功すると、RESULT=0 が返されます。33ページより。

Payflow セキュア トークンの有効期限は次のとおりです。

  • 同じセキュア トークンが Payflow に合計 3 回渡された場合。
  • セキュア トークンが生成されてから 20 分後。
  • トークンが成功したトランザクションで使用される場合

それはおそらくフォーマットです...ここでは、渡すパラメーターについて少し説明します(51ページから):

アンパサンド (&) および等号 (=) 文字には特別な意味があるため、名前と値のペアの値では無効です。

以下は無効です。

COMPANYNAME=Ruff & Johnson COMMENT1=Level=5

名前と値のペアの値部分に特殊文字を含めるには、長さタグを使用します。長さタグは、値に表示される文字とスペースの正確な数を指定します。以下が有効です。

COMPANYNAME[14]=ラフ&ジョンソン

COMMENT1[7]=レベル=5

注:長さタグを使用する場合でも、引用符 ("") を使用しないでください。

于 2013-06-07T17:18:18.000 に答える