PayPalでWebsitePaymentsStandardを使用しています。したがって、基本的にライセンスのリストであるカスタム購入ページがあります(データベースから取得)。
licence type A: $100
licence type B: $200
licence type C: $300
それらの1つ(ラジオボタン)を選択し、購入ボタンをクリックします。これにより、前のページから選択したlicence_idを取得する処理中のPHPページにページがPOSTされ、それを使用してデータベースから正しいライセンス情報(価格、ライセンス期間)などが選択されます。次に、ユーザーの新しいライセンスが保存されます(ただし、 Paypalの支払いがまだ行われていないので、未払いとしてマークします)。
次に、私のPHPコードは、次のコードを使用して支払いのためにPaypalサイトにリダイレクトします。
// Set the transaction details to be sent to PayPal
$urlParams = array(
'cmd' => '_cart',
'upload' => 1,
'charset' => 'utf-8',
'business' => my_business_email@domain.com,
'return' => 'http://mysite.com/paymentprocessed.php',
'currency_code' => 'NZD',
'amount_1' => $licencePrice,
'item_name_1' => $licenceName,
'quantity_1' => 1
);
// Build the URL
$urlParams = http_build_query($urlParams, '', '&');
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
header('location:' .$url. '?' . $urlParams);
exit();
これは基本的にユーザーをリダイレクトし、GETを介してPayPalにパラメーターを送信します。驚くべきことに、それは機能します!ただし、明らかなセキュリティ上の問題は、ユーザーがアドレスバーの変数を編集し、価格を変更するだけで、安価で無料のライセンスを取得できることです。
では、代わりにPHPページで情報をPOSTし、ブラウザをそのページにリダイレクトして、ユーザーがペイパルトランザクションを完了できるようにすることは可能ですか?したがって、重要なデータは私のWebサーバーからPayPalに直接投稿されており、ユーザーは支払い情報を編集する方法がありません。
IPNを使用して、適切な金額が支払われていることを確認できると思いますが、それでも引き続き実行します。しかし、私はまだGETを介してすべてを送信したくないです。
ありがとう!