![](https://habrastorage.org/files/432/5a9/e42/4325a9e42b5345ff8cf528ffa1fb76e9.jpg)
PayPalに関する一般的な統計値は203か国の1億4300万人のユーザーですが、最近までロシアの銀行口座に資金を引き出すことは不可能でした。
サイトでの支払いプロセスは次の方法で実装されます。クライアントはサイトにログインし、自分のアカウントを補充するために必要な金額を入力します。
![](https://habrastorage.org/files/e85/870/b2a/e85870b2a30145dc870caf5df62c98bf.jpg)
その後、サイトフォームはユーザーをPayPal認証および支払いページにリダイレクトします。支払いが成功すると、対応するメッセージを表示し、クライアントを最初のサイトの個人アカウントにリダイレクトします。
![](https://habrastorage.org/files/3fa/b6e/766/3fab6e766c1842109ff8e760a5cd9d54.jpg)
実際には最も単純な形式:
<form id="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" id="amount" name="amount" value=""/> <input type="hidden" name="cmd" value="_xclick"/> <input type="hidden" name="business" value=" PayPal E-mail"/> <input type="hidden" name="item_name" value=" "/> <input type="hidden" name="item_number" value=" ID "/> <input type="hidden" name="currency_code" value=""/> <input type="hidden" name="button_subtype" value="services"/> <input type="hidden" name="no_note" value="1"/> <input type="hidden" name="no_shipping" value="1"/> <input type="hidden" name="return" value=" "/> <input type="hidden" name="notify_url" value=" "/> <input type="hidden" name="cancel_return" value=", "/> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest"/> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"/> <input type="submit" value=""/> </form>
サイトユーザーが即座に資金にアクセスできるように、すべての支払いに関するデータをリアルタイムで自動的に転送するためにPayPalが必要です。 これを行うには、PayPalアカウントダッシュボードのProfile-My Selling ToolsでIPN(即時支払い通知)機能を有効にし、サイトで通知を受信するためのリンクを示します。
![](https://habrastorage.org/files/866/0ba/8a4/8660ba8a4571425b9b883384e63818c6.jpg)
通知を受信し、支払いデータをデータベースに入力するためのコード。 このサイトではPHP5を使用しているため、cURLライブラリをインストールする必要があります。
$postdata=""; foreach ($_POST as $key=>$value) $postdata.=$key."=".urlencode($value)."&"; $postdata .= "cmd=_notify-validate"; $curl = curl_init("https://www.paypal.com/cgi-bin/webscr"); curl_setopt ($curl, CURLOPT_HEADER, 0); curl_setopt ($curl, CURLOPT_POST, 1); curl_setopt ($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 1); $response = curl_exec ($curl); curl_close ($curl);
証明書をオンにした後、通知フォームが機能しなくなったため、データはリアルタイムでロードされなくなりました。公式開発者のマニュアルを少し掘り下げた後、コードを少し変更しました。 問題は、PayPalサンドボックスではリクエストが正しく処理されることですが、バトルモードに切り替えると、フォームは通知の受信を拒否します。 したがって、Curlの対応する変数(フォームに示されている)を変更する必要があります。
PayPalは脆弱性のためSSLv3証明書をサポートしなくなりました。httpsに切り替えると、多くの人がIPNの使用を拒否しました。この場合、支払いシステム。