キーテイクアウト
- チュートリアルでは、PayPalアカウントを設定し、実際のプロジェクトの登録フォームとデータベースと統合するプロセスをカバーしています。 プロジェクトには、登録フォームの作成、ユーザーの支払いのためにPayPalにリダイレクトされ、ユーザーがブラウザを閉じた場合のバックアッププランとしてPayPal IPNを実装することが含まれます。
- チュートリアルでは、データベース構造とユーザーインターフェイスの設定、PayPalボタンの作成、PayPal Sandboxアカウントの設定、PDTおよびIPNハンドラーのコーディングに関する詳細な指示を提供します。 チュートリアルは、アカウントのセキュリティの確保、クレジットカードなしの登録、ビジネスアカウントの特典、米国外からの登録など、PayPalの登録に関するよくある質問にも回答します。
- 第2章
- この章では、PayPalアカウントのセットアップと登録フォームとデータベースとの統合をより適切に説明するために、最初から最後まで「支払い登録」という実際のプロジェクトを紹介します。 プロジェクトシナリオ
最初に、登録フォームがあります。
フォームを正しく完成した後(すべての検証が渡されます)、ユーザーは[登録]ボタンをクリックします。
- その後、PayPalにリダイレクトし、ユーザーは登録料を支払います。
- 支払後、PayPalは結果ページにリダイレクトし、10秒の自動リダイレクトを当社のWebサイトに戻し、PayPal PDTは支払い記録を処理します。 しかし、ユーザーはブラウザを閉じる可能性があるため、バックアッププランにPayPal IPNを実装する必要があります。
- データベース構造
- e-rダイアグラム:
- temp_registerテーブル:一時的なストアのユーザーアカウントとユーザーパスワード、支払いを待ちます。支払われた場合、タプルは削除され、ユーザーテーブルに移動します。
ユーザーテーブル:ユーザー情報を保存し、トークンは確認メールで確認トークンです。ユーザーがユーザーアカウントを確認した場合、確認されたものは1として設定されます。
データベーススキーマ:

- ユーザーインターフェイス
- プロジェクトワークフロー
- フォームに記入すると、すべての入力が検証されます。
[登録]ボタンをクリックし、PayPalにリダイレクトします
PayPal Sandbox「Pay Now」:<span>CREATE TABLE IF NOT EXISTS <span>`payment`</span> ( </span><span><span>`payId`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`timestamp`</span> bigint(20) DEFAULT NULL, </span><span><span>`paid`</span> float DEFAULT NULL COMMENT 'user paid amount returned by paypal', </span><span><span>`bankFee`</span> float DEFAULT NULL, </span><span><span>`currency`</span> varchar(4) DEFAULT NULL, </span><span><span>`txnId`</span> varchar(32) DEFAULT NULL COMMENT 'Transaction ID: specify single unique transaction from paypal. if this field is NOT NULL, means this payment has been process already. So if IPN returns to PHP, we can refuse to update our database.', </span><span><span>`status`</span> varchar(16) DEFAULT NULL, </span><span><span>`uid`</span> int(11) DEFAULT NULL COMMENT 'FK to users PK', </span><span>PRIMARY KEY (<span>`payId`</span>), </span><span>KEY <span>`uid`</span> (<span>`uid`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; </span><span>CREATE TABLE IF NOT EXISTS <span>`temp_register`</span> ( </span><span><span>`tRegId`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`fullName`</span> varchar(255) DEFAULT NULL, </span><span><span>`uAcc`</span> varchar(255) DEFAULT NULL, </span><span><span>`uPwd`</span> varchar(32) DEFAULT NULL, </span><span>PRIMARY KEY (<span>`tRegId`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='prevent unpaid user take uAcc(UNIQUE) in our users table' AUTO_INCREMENT=1 ; </span><span>CREATE TABLE IF NOT EXISTS <span>`users`</span> ( </span><span><span>`uid`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`fullName`</span> varchar(255) DEFAULT NULL, </span><span><span>`uAcc`</span> varchar(255) NOT NULL, </span><span><span>`uPwd`</span> varchar(32) NOT NULL, </span><span><span>`token`</span> varchar(32) DEFAULT NULL, </span><span><span>`verified`</span> tinyint(1) NOT NULL DEFAULT '0', </span><span><span>`priviledge`</span> enum('delegate','admin','developer') NOT NULL DEFAULT 'delegate', </span><span>PRIMARY KEY (<span>`uid`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; </span><span>ALTER TABLE <span>`payment`</span> </span><span>ADD CONSTRAINT <span>`payment_ibfk_1`</span> FOREIGN KEY (<span>`uid`</span>) REFERENCES <span>`users`</span> (<span>`uid`</span>);</span>
PayPalの結果ページをリダイレクトします

PayPal Sandboxのセットアップ
コーディングを開始する前に、最初にPayPal Sandboxアカウントをセットアップする必要があります。 PayPal Developerアカウントを登録し、Sandboxで1つのビジネスユーザーアカウントと1つのバイヤーアカウントを作成したとします。 次に、[ビジネスアカウント]を選択し、[サンドボックステストサイトの入力]ボタンをクリックします。 メインパネルポップアウトページを見ることができます:


PDTハンドラー関数をセットアップして、URLを呼び出します。

URLを呼び出すIPNハンドラー関数をセットアップします。



<span>CREATE TABLE IF NOT EXISTS <span>`payment`</span> ( </span><span><span>`payId`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`timestamp`</span> bigint(20) DEFAULT NULL, </span><span><span>`paid`</span> float DEFAULT NULL COMMENT 'user paid amount returned by paypal', </span><span><span>`bankFee`</span> float DEFAULT NULL, </span><span><span>`currency`</span> varchar(4) DEFAULT NULL, </span><span><span>`txnId`</span> varchar(32) DEFAULT NULL COMMENT 'Transaction ID: specify single unique transaction from paypal. if this field is NOT NULL, means this payment has been process already. So if IPN returns to PHP, we can refuse to update our database.', </span><span><span>`status`</span> varchar(16) DEFAULT NULL, </span><span><span>`uid`</span> int(11) DEFAULT NULL COMMENT 'FK to users PK', </span><span>PRIMARY KEY (<span>`payId`</span>), </span><span>KEY <span>`uid`</span> (<span>`uid`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; </span><span>CREATE TABLE IF NOT EXISTS <span>`temp_register`</span> ( </span><span><span>`tRegId`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`fullName`</span> varchar(255) DEFAULT NULL, </span><span><span>`uAcc`</span> varchar(255) DEFAULT NULL, </span><span><span>`uPwd`</span> varchar(32) DEFAULT NULL, </span><span>PRIMARY KEY (<span>`tRegId`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='prevent unpaid user take uAcc(UNIQUE) in our users table' AUTO_INCREMENT=1 ; </span><span>CREATE TABLE IF NOT EXISTS <span>`users`</span> ( </span><span><span>`uid`</span> int(11) NOT NULL AUTO_INCREMENT, </span><span><span>`fullName`</span> varchar(255) DEFAULT NULL, </span><span><span>`uAcc`</span> varchar(255) NOT NULL, </span><span><span>`uPwd`</span> varchar(32) NOT NULL, </span><span><span>`token`</span> varchar(32) DEFAULT NULL, </span><span><span>`verified`</span> tinyint(1) NOT NULL DEFAULT '0', </span><span><span>`priviledge`</span> enum('delegate','admin','developer') NOT NULL DEFAULT 'delegate', </span><span>PRIMARY KEY (<span>`uid`</span>) </span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; </span><span>ALTER TABLE <span>`payment`</span> </span><span>ADD CONSTRAINT <span>`payment_ibfk_1`</span> FOREIGN KEY (<span>`uid`</span>) REFERENCES <span>`users`</span> (<span>`uid`</span>);</span>pdtハンドラー関数
ソースコード:
説明:
PayPalはpdthandler()関数を呼び出し、次にこのハンドラー関数プロセス_pdt()を呼び出します。ご覧のとおり、URL($ _GET)からPayPalが提供するパラメーターを受信します。そこで、TokenとTXをFSOCK SSLを介してPayPalに投稿します。その後、PayPalは支払い記録と支払い結果(成功/失敗)を返します。 _pdt()は、これらのデータを_validatepaypal()に渡し、データをデータベースに保存します。次に、返品に従ってページリダイレクトを行います。
IPNハンドラー関数ソースコード:
<span>/** </span><span>* PAYPAL: PDT HANDLER: </span><span>* ==================== </span><span>* called by PayPal, send tokens back </span><span>* get payment details and payment result </span><span>* <span>@return $ret array contains result true/false, and user account or error message </span></span><span>*/ </span><span>private function _PDT() </span><span>{ </span><span>// some indexes can not be missing: </span><span>$ruler = array( </span><span>'tx', // token from paypal </span><span>); </span><span>if(count(array_diff($ruler, array_keys($_GET)))) </span><span>{ </span><span>return array('result' => false, 'error' => 'Index missing ... ', 'index' => $_GET, 'missing' => array_diff($ruler, array_keys($_GET))); </span><span>} </span><span>// read the post from PayPal system and add 'cmd' </span><span>$req = 'cmd=_notify-synch'; </span><span>// get token and prepare request url (send back to paypal) </span><span>$tx_token = $_GET['tx'];$auth_token = "_PJaHiwRfwMmWzW-9nuPuSguYxC-1d9KpxaasaNANtIvyOcmqY6jXNkRmxW"; </span><span>// $auth_token = "OxDenzKmrWPyEXU0YzIg2zs-VAe7ufCADyjbfxF_RpREL4rLEslZrSa21R4"; </span> <span>$req .= "&tx=<span><span>$tx_token</span>&at=<span>$auth_token</span>"</span>; </span> <span>// post back to PayPal system to validate </span> <span>$header = "POST /cgi-bin/webscr HTTP/1.0rn"; </span> <span>$header .= "Host: www.sandbox.paypal.comrn"; </span><span>// $header .= "Host: www.paypal.comrn"; </span> <span>$header .= "Content-Type: application/x-www-form-urlencodedrn"; </span><span>$header .= "Content-Length: " . strlen($req) . "rnrn"; </span> <span>$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // open socket </span><span>// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); // open socket </span> <span>if (!$fp) </span><span>{ </span><span>// HTML FAIL </span><span>return array('result' => false, 'error' => 'HTTP error ... '); </span><span>} </span><span>else </span><span>{ </span><span>fputs ($fp, $header . $req); </span><span>// read the body data </span><span>$res = ''; </span><span>$headerdone = false; </span><span>while (!feof($fp)) </span><span>{ </span><span>$line = fgets ($fp, 1024); </span><span>if (strcmp($line, "rn") == 0) </span><span>{ </span><span>$headerdone = true; // read the header </span><span>} </span><span>else if ($headerdone) </span><span>{ </span><span>$res .= $line; // header has been read. now read the contents </span><span>} </span><span>} </span> <span>// parse the data </span><span>$lines = explode("n", $res); </span><span>$keyarray = array(); </span><span>if (strcmp ($lines[0], "SUCCESS") == 0) </span><span>{ </span><span>for ($i=1; $i_validatePaypal($keyarray); </span><span>} </span><span>// log for manual investigation </span><span>else if (strcmp ($lines[0], "FAIL") == 0) </span><span>{ </span><span>// skipped </span><span>return array('result' => false, 'error' => 'Transaction failed ... '); </span><span>} </span><span>} </span><span>fclose ($fp); </span><span>return $ret; </span><span>}</span>説明:
PayPalはIPNHandler()関数を呼び出し、次にこのハンドラー関数プロセス_ IPN()を呼び出します。ご覧のとおり、Request($ _Post)からPayPalが提供するデータを受信します。そのため、支払いの詳細をPayPalに投稿して、Curlを介して、これが握手プロセスです。その後、PayPalは支払い結果(確認/無効)を返送します。検証されている場合、_ipn()はこれらのデータを_validatePaypal()に渡し、データベースにデータを保存します。
ZIPファイルには、テンプレート、JavaScriptファイル、CSS、ブートストラップ、jQuery、デバッグプラグイン、Smartyプラグイン、およびすべてのコアPHPソースコードが含まれています。プロジェクトをダウンロード(344kb)PayPalの登録に関するよくある質問
登録中にPayPalアカウントが安全であることを確認するにはどうすればよいですか?
PayPalアカウントを設定する際のセキュリティは最優先事項です。アカウントが安全であることを確認するには、文字、数字、特殊文字の組み合わせを含む強力で一意のパスワードを使用してください。また、登録中に正確な個人情報を提供してください。 PayPalはこの情報を使用して身元を確認し、アカウントを不正な活動から保護します。
クレジットカードなしでPayPalアカウントに登録できますか?クレジットカード。登録プロセス中に、クレジットカードの代わりに銀行口座をリンクすることを選択できます。ただし、クレジットカードをリンクすると、追加の支払いオプションとセキュリティ機能が提供される可能性があります。
個人アカウントでPayPalビジネスアカウントに登録することの利点は何ですか?個人アカウントで。これらには、顧客からの支払いを受け入れる機能、ビジネスローンへのアクセスとキャッシュアドバンス、および請求書を作成および送信するオプションが含まれます。また、ビジネスアカウントでは、会社またはグループ名で運営することもできます。
米国外に住んでいる場合、PayPalアカウントに登録するにはどうすればよいですか?世界中の国と地域。米国外のPayPalアカウントに登録するには、特定の国または地域のPayPal Webサイトにアクセスしてください。登録プロセスは、米国のプロセスと同様です。複数のPayPalアカウントに登録できますか? 1つのPayPalアカウント。ただし、各アカウントには、一意のメールアドレスと財務情報が必要です。 1つの個人アカウントと1つのビジネスアカウントを持つことができます。
登録中にPayPalのパスワードを忘れた場合はどうなりますか?
登録中にPayPalのパスワードを忘れた場合、クリックしてリセットできます。 「パスワードを忘れましたか?」ログインページにリンクします。その後、メールアドレスを入力するように求められ、PayPalはパスワードをリセットする方法に関する指示を含むメールを送信します。
PayPalの登録中に提供した情報を変更できますか?
はい、PayPal登録中に提供された情報を変更できます。これを行うには、PayPalアカウントにログインしてプロフィールに移動し、変更する情報を選択してください。 PayPalアカウントに登録する料金はありません。ただし、PayPalは、商品やサービスの支払いを受けたり、他の国に送金したりするなど、特定の取引に対して料金を請求します。
複数のPayPalアカウントに登録できますか? 1つのPayPalアカウント。ただし、各アカウントには、一意のメールアドレスと財務情報が必要です。 1つの個人アカウントと1つのビジネスアカウントを持つことができます。
登録中にPayPalのパスワードを忘れた場合はどうなりますか?
登録中にPayPalのパスワードを忘れた場合、クリックしてリセットできます。 「パスワードを忘れましたか?」ログインページにリンクします。その後、メールアドレスを入力するように求められ、PayPalはパスワードをリセットする方法に関する指示を含むメールを送信します。
PayPalの登録中に提供した情報を変更できますか?
はい、PayPal登録中に提供された情報を変更できます。これを行うには、PayPalアカウントにログインしてプロフィールに移動し、変更する情報を選択してください。 PayPalアカウントに登録する料金はありません。ただし、PayPalは、商品やサービスの支払いを受けたり、他の国に送金したりするなど、特定の取引に対して料金を請求します。
以上がPayPalチュートリアルに登録(2/3):PayPalプロジェクトへの実際の登録の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









