PHP payal支払いインタフェースの開発詳細



 
申請PayPal登録サイト:https://www.paypal.com/
 
paypalインタフェースは他のインタフェースとは少し異なり、少し複雑です.
 
ここで,paypal ipn(Instant Payment Notification)とは,Paypalが開発したサードパーティの売り手システムの取引状態を自発的に通知できるメカニズムである.IPNの原理は簡単で、1つの取引が発生した後、取引状態が変化した場合、例えばユーザーがすでに支払ったり、返金したり、取り消したりした場合、Paypalはよく使われるHTTP POST方式を利用して、取引のいくつかの変数をウェブサイトのあるページ(IPN Handlerと呼ばれる)に提出し、このページが要求を受け入れると、これらのデータに、検証を示すcmd=_をそのまま追加します.notify-validate、POSTはPaypalのインタフェースアドレスに戻り、データが正しい場合、Paypalは文字列VERIFIEDを返し、そうでなければINVALIDで、結果がVERIFIEDであれば、あなたのプログラムはこれらのデータを使用して操作することができます.
 
Sandboxアカウントの開設
 
しかし、コードのデバッグはとてもつらいことです.サードパーティの開発者として、2つのアカウントを開くことはできません.テストのたびにお金を取引する必要があります.PaypalはSandboxを開発して開発者に開発しました.まずhttps://developer.paypal.com/開発アカウントを登録し、その後、Sandboxのテスト用のPaypal仮想アカウント(少なくともBusinessとPersonalを作成する必要があります)にアクセスします.このアカウント登録方法はPaypalのプロセスと同じように、銀行アカウント、信用カード(実際にはPaypal Sandboxが自動的にランダムな番号を生成する)を含む情報を偽物にすることができます.次に、Paypal Sandboxの仮想アカウントをアクティブにする必要があります.ここでは、Paypal Sanboxの登録時にどんなメールアドレスを記入しても、仮想アカウントに記入されたメールボックスに送信されたメールは、開発アカウントの管理インタフェースのEmailページ(ナビゲーションバーにあります)に保存されます.Sandboxの仮想Paypal環境にログインするには、仮想アカウントの銀行を検証する必要があります.ここでは勝手に記入して、Add Fundsを通じて口座にチャージすることができます(いくら記入したいか920-203 920-533).それから、IPNのオプションをアクティブにする必要があります.BusinessのアカウントのProfile設定ページで、クリックして、Editボタンをクリックして、IPNを開きます.ここで固定のIPN Handleを使用している場合は、直接住所を記入することができます.
 
次に、Paypalインタフェースのアドレスをhttps://www.sandbox.paypal.com/cgi-bin/webscrに設定する必要があります.
 
次のコードを使用してpaypal支払ボタンを生成します.関連データは確認する必要があります.
 
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>goto paypal</title>  
</head>  
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">  
    <form name="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">  
    <input type="hidden" name="cmd" value="_xclick">  
    <input type="hidden" name="business" value="[email protected]"><!--      paypal  email-->  
    <input type="hidden" name="item_name" value="order information"><!--               ,     paypal              -->  
    <input type="hidden" name="amount" value="220.00"><!--        -->  
    <input type="hidden" name="currency_code" value="USD"><!--             ,            ,           USD,       EUR   , paypal                 -->     
    <input type="hidden" name="on0" value="customerId"><!--       1 -->  
    <input type="hidden" name="os0" value="stephen"><!--          1     -->  
    <input type="hidden" name="on1" value="address"><!--       2 -->  
    <input type="hidden" name="os1" value="shanghai china"><!--          2     -->  
    <input type="hidden" name="notify_url" value="http://www.xxx.com/notifyurl.jsp?order_id=23876412"><!--    paypal     url,           url    -->  
    <input name="Paypal" type="button" value="Go to Paypal" onclick="javaScript:this.form.submit();"></td>  
    </form>  
</body>  
</html>  

これはpaypal公式に与えられたフォームの詳細パラメータですが、全英語:https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables
 
上記のpaypalフォームを生成する場合、その中の[cmd],[action],[business],[amount],[currency_code],[notify_url]パラメータ設定は絶対にエラーできません.[cmd]と[action]はpaypalyインタフェースタイプを指定します.[business]エラーが発生すると、お客様の支払いは受け取れません.[amount]は[currency_code]と注文の金額に関係し、[notify_url]はシステムとpaypalの支払い通知インタフェースurlです.
お客様が注文する上のページを見ると、設定ボタン[Go to Paypal]でpaypalに接続できます.comサイトにログインし、支払いを行います.
 
paypay支払情報をシステムに返す
お客様が支払うと、paypalは上のフォームから提供された[notify_url]を自動的に呼び出し、postのデータの山がこのページに渡され、ユーザーはこのページで一連の支払い状態、検証、操作などを行うことができます.
 
支払がPayPalアカウントに入金されていることを確認するには、「receiver_email」として使用されているEメールアドレスがPayPalアカウントに登録され、確認されていることを確認する必要があります.
サーバが即時支払通知を受信すると、PayPalに送信されたHTTP POSTを構築して確認する必要があります.POSTはhttps://www.paypal.com/cgi-bin/webscr
受信したすべてのフォーム変数をフォーム変数を受信したときのまま送信する必要があります.また、POST文字列に「_notify-validate」という値の「cmd」変数(たとえば、cmd=_notify-validate)を追加する必要があります.
PayPalはPOSTに返信し、返信の本文に「VERIFIED」または「INVALID」という単語が含まれます.VERIFIEDの返信を受け取ると、注文を実施する前にいくつかのチェックを実行する必要があります.
「payment_status」が「Completed」であることを確認します.システムは、「Pending」や「Failed」などの他の結果に対してもIPNを送信するためです.
「txn_id」が重複していないかどうかを確認し、詐欺師が古い完了した取引を重複しないようにします.
「receiver_email」がPayPalアカウントに登録されている電子メールアドレスであることを確認し、詐欺師のアカウントに支払いを送信しないようにします.
他の取引の詳細(品番や価格など)をチェックして、価格が変更されていないことを確認します.以上のチェックが完了したら、IPNデータを使用してデータベースを更新し、買い物を処理することができます.
無効な通知を受け取った場合は、不審な通知と見なし、調査に対応します.
 
次に、通常戻りpost戻り変数の詳細を説明します.
 
 
mc_gross
取引収益
address_status
アドレス情報ステータス
paypal_address_id
Paypalアドレス情報ID
payer_id
支払人のPaypal ID
tax
税金
address_street
つうしんアドレス
payment_date
取引時間
payment_status
取引ステータス
charset
げんごコーディング
address_zip
郵便番号
first_name
支払者の姓
address_country_code
国別
address_name
受信者名
custom
カスタム値
payer_status
支払人口座ステータス
business
受取人Paypal口座
address_country
アドレス国
address_city
つうしんアドレスとし
quantity
貨物数量
payer_email
支払人email
txn_id
取引ID
payment_type
取引タイプ
last_name
支払人名
address_state
通信アドレス省
receiver_email
受取人email
address_owner
未公表/正式有効
receiver_id
受取人ID
ebay_address_id
易趣ユーザーアドレスID
txn_type
取引通告方式
item_name
商品名
mc_currency
通貨の種類
item_number
品番
payment_gross
取引総額[ドルのみに適用]
shipping
運送費
これはpaypalが公式に与えたもので、値の詳細リストを返します.https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_IPNandPDTVariables