0

次のコードは、Drupal 7 での Webform PayPal Integrationの例に基づいています。

$paypal = array();
$paypal['cmd'] = '_xclick';
$paypal['business'] = variable_get('event_reg_paypal_address');
$paypal['receiver_email'] = $paypal['business'];
$paypal['page_style'] = 'huang_checkout';
$paypal['amount'] = variable_get('event_reg_paypal_cost');
$paypal['currency_code'] = 'GBP';
$paypal['item_name'] = 'Test Event Registration';
$paypal['tax'] = 0;
$paypal['custom'] = $submission->sid;
$paypal['return'] = $base_url.'/test/thanks';
$paypal['notify_url'] = $base_url.'/test/thanks';
$paypal['cancel_return'] = $base_url;
$paypal['first_name'] = //first name from submission
$paypal['country'] = 'UK';

$query = http_build_query($paypal, '', '&');
$url = $paypal_host . $query;

drupal_goto($url);

カスタム モジュールのコードと実装の一部ですhook_webform_submission_insert()。フォームが送信されると、$url変数が配列から構築され$paypal、ユーザーのブラウザーがリダイレクトされます。たとえば、

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pete27_11_94-facilitator%40hotmail.com&receiver_email=pete27_11_94-facilitator%40hotmail.com&page_style=huang_checkout&amount=0.01&currency_code=GBP&item_name=Test+Event+Registration&tax=0&custom=24&return=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks&notify_url=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks&cancel_return=http%3A%2F%2Fwww.pitmart.com%2Fformulak&first_name=sdfgsdfg&country=UK

私のペイパル開発者アカウントには、URL にあるようなビジネスプロのメールアドレスを持つユーザーがいますが、送信するたびにエラーメッセージが表示されます

We cannot process this transaction because there is a problem with the PayPal email address supplied by the seller. Please contact the seller to resolve the problem. If this payment is for an eBay listing, you can contact the seller via the "Ask Seller a Question" link on the listing page. When you have the correct email address, payment can be made at www.paypal.com.

アクセスできないローカルではなく、ライブサーバーでテストしています。

Paypal のログイン フォームが表示されることを期待していましたが、エラーが発生しました。

この方法でペイパルにデータを渡すことは可能ですか? (フォームで「投稿」するのではなく、URL で直接)

この失敗の原因となるいくつかの変数/データが不足していますか? そのようなペイパル要求の最小構成をリストしたドキュメントはありますか?

編集- 欠落していましたcurrency_code。それを追加してから、まだエラーを受け取っています。

4

1 に答える 1

2

問題は、値を区切るはずのアンパサンドを含め、すべてを URL エンコードしていることです。

つまり、これはうまくいきます: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pete27_11_94-facilitator%40hotmail.com&receiver_email=pete27_11_94-facilitator%40hotmail.com&page_style=huang_checkout&amount=0.01¤cy_code=GBP&item_name= Test+Event+Registration&tax=0&custom=24&return=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks¬ify_url=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks&cancel_return=http%3A% 2F%2Fwww.pitmart.com%2Fformulak&first_name=sdfgsdfg&country=英国

ちなみに、「UK」は有効な国ではありません。PayPal の国コードはISO 3166-2に準拠しているため、「GB」である必要があります。

于 2013-08-15T12:27:45.690 に答える