web-dev-qa-db-ja.com

IPNを介してカスタム変数を送信するPayPalボタン

私は数日間、ジャングル(本当に、Paypal、それを取り除いてみませんか...)を通り抜けて、私の非常に単純な問題の解決策を見つけようとしました。

メンバーシップサブスクリプションのあるWebサイトがあります。顧客は私のサイトで自分の電子メールとパスワードを使用してサインアップします。それから彼らは彼らのサブスクリプションを支払うためにPaypalに行きます。

私の問題は、どのようにしてキーを渡すのですか-彼らの電子メール-トランザクション全体を通して、支払いの対象者を知ることができますか?

これは、ある電子メールでサインアップして別の電子メールで支払うことがあるためです。そして、(安全な)暗号化されたボタンでそれをすべて行う方法。

私が考えたのは、Paypal "Paypal支払いボタンの作成"ページに暗号化されたボタンを作成できるということです。

ステップで、高度な変数を追加(x-ed out real url):

notify_url=http://xxxxxxxxxx.com/xxxxx.php
test_ipn=1

コードを取得します。

<form action="https://www.Paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="Paypal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

与えられたコードを私のphpページに貼り付けますが、「custom」という名前の非表示フィールドを追加し、手元にメールを送信して、フォームアクションを変更してsandboxに移動します。 。

このようなもの:

<form action="https://www.sandbox.Paypal.com/cgi-bin/webscr" method="post">

<input type="hidden" name="custom" value="<?=$signUpEmail ?>">

<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="Paypal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

このカスタム変数は、後でipnページで取得できるため、メンバーシップの対象者がわかります。

私は正しいと思いますか?または、「手書き」コードでボタンを実行する必要がありますか?それとももっと良い方法はありますか?

17
Paul

上記の方法は機能しますが、Paypal Sandboxが受け入れられないという問題がありました"Regular Paypal" hosted_button_id-サンドボックスでhosted_button_idを再作成することで対処されました。

<input type="hidden" name="hosted_button_id" value="RECREATENEWINPAYPALSANDBOX">
2
Paul

Paypalフォームであなたが望むものを置くために使うことができるフィールドがあります。提出された名前は「カスタム」です。したがって、次のように書くことができます。

<input name="custom" value="blablabla" type="hidden">

カスタム値の値をエンコードすることをお勧めします。たとえば、ある種のbase64_encodeは、好奇心旺盛な人々を思いとどまらせるのに役立つ可能性があります。ただし、マニュアルにはPaypalで何ができるかについての良い説明もあります。これ リンク とこれ 1 は抜粋です。

さらに、コメントで示唆されているように、サイトとPaypal間のバックオフ通信でフロントエンドに関連するセッション変数を使用することはできません。

18
giuseppe