1

PHP で作成したカスタム オンライン予約システムと MySQL データベースを使用しています。現在、クライアントが予約に対面して現金で出席したときに支払いが行われます.PaypalのIPNとPDTの支払い設定をシステムに実装して、単一のアイテムの支払い/「PAY NOW」オプションシステムとして使用しています(ショッピングカートはありません) )。価格、日付、ユーザー情報のみが異なります。

さまざまな議論やセキュリティ問題に関する数か月にわたる調査の結果、IPN システムと PDT システムを一緒に使用する最善の方法は、それぞれのスクリプトを使用して先着順で使用することであるという結論に達しました。PDT と IPN スクリプトのどちらが処理するかに関係なく、どちらが先に確認メールを送信し、関連情報をデータベースに追加します。PDT または IPN のいずれかが処理し、もう一方が既に処理されていることがわかった場合、メールはもう一方のスクリプトによって既に送信されているため、欠落しているデータベース情報のみを更新します。

ゼロから作成した予約システムは 2 年間問題なく使用されていますが、現在はオンライン決済が必要です。

予約がオンラインで行われると、クライアントは詳細を入力し、予約の開始日、終了日、時間を選択します。その後、情報が PHP スクリプトに POSTED (フォーム メソッド POST) されます。スクリプトは、予約が成功したことを確認、処理、および確認ページに出力し、クライアントと管理者の電子メール アドレスに電子メールを送信します。

MYSQL データベースは現在、予約の詳細を保存するために使用されていません。

私は今、同じ構造でオンラインで支払いをしたいと思っています。

MySQL データベースが修正され、Paypal からの IPN または PDT 応答からのコールバック (成功または失敗) から返される可能性のあるすべてのフィールドと、予約に関する基本情報を含む新しいテーブルが追加されました。

私が抱えている問題は次のとおりです。

  • PDT は偽造することができます。PDT スクリプトからの電子メールが送信された場合、問題の原因となる確認を既に受信しているため、これをどのように回避できますか? IPNスクリプトを使用してメールを送信し、PDTプロセスに予約情報のみをクライアントに表示するように指示することでこれを回避できますが、確認メールが送信されることを伝えますが、IPNには時間がかかる場合があり、クライアントはすぐに安心する必要があります次の 30 分以内の予約である可能性があるため、予約が確認されたこと。

  • Xcommerce Paypal 開発者の Web サイト、Paypal、および他の多くの Web 上の例に基づいて、いくつかの PDT および IPN スクリプトをほぼ 1 か月間作成しようとしましたが、どれも正しく機能していないようです。 可能なすべての変数を処理し、名前、住所、郵便番号、価格などの注文の重要な基本情報を確認する PDT スクリプトと IPN スクリプトを提供してください。 これは、スクリプトごとに不要なものを削除するだけで済むため、誰でも IPN と PDT を使用して支払いプロセスを作成しようとしている人にとって便利です。

注として、各スクリプトは、MySQL テーブルの IPN または PDT フィールドに「1」が含まれていることを確認することによって、他のスクリプトが実行されたかどうかを確認します。「0」がデフォルトです。

スクリプトの使用方法に関係なく、いずれかのシステムで問題を抱えているすべての人に役立つと確信しているため、回答をお待ちしています。

よろしくお願いします。

他の人が回答を読むのを助けるために提供された回答について、以下と異なる場合は、テスト済みの MySQL テーブルも提供してください。

次の表を作成して使用しています。

CREATE TABLE `bookings` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`date1` char( 2 ) NOT NULL default '',
`month1` char( 2 ) NOT NULL default '',
`year1` char( 2 ) NOT NULL default '',
`date2` char( 2 ) NOT NULL default '',
`month2` char( 2 ) NOT NULL default '',
`year2` char( 2 ) NOT NULL default '',
`name` text NOT NULL ,
`address` text NOT NULL ,
`zippostcode` text NOT NULL ,
`email` text NOT NULL ,
`price` char( 2 ) NOT NULL default '',
`pdt` varchar( 12 ) NOT NULL default '0',
`ipn` varchar( 12 ) NOT NULL default '0',
`paypalstatus` varchar( 12 ) NOT NULL default '',
`datebooked` varchar( 50 ) NOT NULL default '',
`receiver_email` varchar( 127 ) NOT NULL ,
`payment_status` varchar( 25 ) NOT NULL ,
`pending_reason` varchar( 25 ) NOT NULL ,
`payment_date` varchar( 100 ) NOT NULL ,
`mc_gross` double NOT NULL ,
`mc_fee` double NOT NULL ,
`tax` double NOT NULL ,
`mc_currency` varchar( 10 ) NOT NULL ,
`txn_id` varchar( 25 ) NOT NULL ,
`txn_type` varchar( 25 ) NOT NULL ,
`first_name` varchar( 75 ) NOT NULL ,
`last_name` varchar( 75 ) NOT NULL ,
`address_street` varchar( 200 ) NOT NULL ,
`address_city` varchar( 50 ) NOT NULL ,
`address_state` varchar( 40 ) NOT NULL ,
`address_zip` varchar( 20 ) NOT NULL ,
`address_country` varchar( 64 ) NOT NULL ,
`address_status` varchar( 25 ) NOT NULL ,
`payer_email` varchar( 127 ) NOT NULL ,
`payer_status` varchar( 25 ) NOT NULL ,
`payment_type` varchar( 25 ) NOT NULL ,
`notify_version` varchar( 50 ) NOT NULL ,
`verify_sign` varchar( 255 ) NOT NULL ,
`address_name` varchar( 130 ) NOT NULL ,
`protection_eligibility` varchar( 50 ) NOT NULL ,
`ipn_status` varchar( 25 ) NOT NULL ,
`subscr_id` varchar( 25 ) NOT NULL ,
`reason_code` varchar( 25 ) NOT NULL ,
`contact_phone` varchar( 25 ) NOT NULL ,
`invoice` varchar( 127 ) NOT NULL ,
`for_auction` tinyint( 10 ) NOT NULL ,
`auction_buyer_id` varchar( 75 ) NOT NULL ,
`auction_closing_date` varchar( 100 ) NOT NULL ,
`auction_multi_item` double NOT NULL ,
`address_country_code` varchar( 2 ) NOT NULL ,
`order_id` tinyint( 10 ) NOT NULL ,
`item_name` varchar( 130 ) NOT NULL ,
`item_number` varchar( 130 ) NOT NULL ,
`os0` varchar( 200 ) NOT NULL ,
`on0` varchar( 75 ) NOT NULL ,
`os1` varchar( 200 ) NOT NULL ,
`on1` varchar( 75 ) NOT NULL ,
`quantity` double NOT NULL ,
`custom` varchar( 255 ) NOT NULL ,
`mc_handling` double NOT NULL ,
`mc_shipping` double NOT NULL ,
`creation_timestamp` timestamp NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM AUTO_INCREMENT =1
4

1 に答える 1

0

サイトを見つけました。この男のスクリプトをチェックしてください。

http://ksquared.de/blog/2011/10/paypal-generic-php-payment-pdtipn-script/

于 2013-02-07T17:55:29.093 に答える