3

取引後に Paypal を私のウェブサイトにリダイレクトさせ、取引に関する情報を取得しようとしています。これまでのところ、Paypal は正しい場所にリダイレクトされますが、後で Paypal に戻す php curl 操作は、期待している成功/失敗メッセージではなくエラー ページを取得します。

申し訳ありません — 最後の操作を完了できませんでした

[...]

現在、リクエストを完了できません。[再試行] をクリックするか、後でもう一度やり直してください。ご不便をおかけして申し訳ございません。

メッセージ 3004

私は自分のコードで「tx」パラメーターを画面に出力し、リクエストを手動で作成してブラウザーに直接配置するだけで試しました。

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-synch&tx=34A96012RS258972T&at=x7cYS4yOvBi2k_LuLWsJ3h_J-2n-29VCgzhFDR79on8s1mQSlSxIIibiW3e

ただし、上記と同じエラー ページが返されます。

サンドボックス ペイパル アカウントにログインしています。「at」パラメーターには、サンドボックス マーチャント テスト アカウントに関連付けられた正しい支払いデータ転送 ID トークンが保持されています。

リクエストに何か不足がありますか? 実際の Paypal アカウントでテストしていないのは、それが機能することを確認するまで実際の両替はしたくないからです.

4

2 に答える 2

2

ここで同じエラー(2週間前に気づいた)がペイパルと連絡を取り、コードをチェックするように言われましたが、コードサンプルをコピーして貼り付けてもエラーが発生します。テストセラーアカウントにログインすると、トランザクションを確認できますか?できますが、詳細ビューをもう一度クリックするとエラーが発生します。

このアカウントでPDTをパススルーできましたが、コードを変更せずに突然失敗し始めました。

2012年7月31日更新:Paypalからの確認された解決策はまだありません-彼らは明らかに電話による技術サポートを持っていないので、技術チームではなく商人のための電話サポートに話しました-基本的にライブでテストしてサンドボックスを避けるように商人のアドバイスによって言われました。ただし、テストトランザクションの払い戻しが必要になるため、テストごとに最低20p。

私があなたに言うことができる非常に幸せな人ではありません。:(

于 2012-07-24T09:44:46.067 に答える
1
$tx=$_REQUEST['tx'];

$paypal_url='https://www.paypal.com/cgi-bin/webscr?cmd=_notify-synch&tx='.$tx.'&at=token here';

$curl = curl_init($paypal_url);

$data = array(

"cmd" => "_notify-synch",

"tx" => $tx,

"at" => "token here"


);                                                                    

$data_string = json_encode($data); 

curl_setopt ($curl, CURLOPT_HEADER, 0);

curl_setopt ($curl, CURLOPT_POST, 1);

curl_setopt ($curl, CURLOPT_POSTFIELDS, $data_string);

curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 1);

$headers = array (

'Content-Type: application/x-www-form-urlencoded',

'Host: www.paypal.com',

'Connection: close'

);

curl_setopt ($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

curl_setopt ($curl, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($curl);

$lines = explode("\n", $response);

$keyarray = array();

if (strcmp ($lines[0], "SUCCESS") == 0) {

for ($i=1; $i<count($lines);$i++){

list($key,$val) = explode("=", $lines[$i]);

$keyarray[urldecode($key)] = urldecode($val);

}


$first_name=$keyarray['first_name'];

$last_name=$keyarray['last_name'];

$payment_status=$keyarray['payment_status'];

$business=$keyarray['business'];

$payer_email=$keyarray['payer_email'];

$payment_gross=$keyarray['payment_gross'];

$mc_currency=$keyarray['mc_currency']; 

}
于 2013-07-02T12:58:31.583 に答える