PHPでPaypalのExpress Checkout をやってみた
PHPでPaypalのExpressCheckout(エクスプレスチェックアウト)をやってみました。
Paypalの決済機能は
・ウェブペイメント
・エクスプレスチェックアウト
の二つがある(他にもあるのかな?)ようですが、
ウェブペイメントは生成されたコードを貼るだけ!楽ちん!
エクスプレスチェックアウトはプログラムと連携して何でもできちゃう!
カートもできちゃう!さすが!!ってイメージです。
今回はテストアカウントを使って、ExpressCheckoutを試してみます。
本番環境では試してないので、これでオッケーなのかは知りません。
以下のサイトを参考にさせていただきました。
http://d.hatena.ne.jp/hrendoh/20110516/1305548398
http://blogs.yahoo.co.jp/echotechsoft/525533.html
手順
・Paypalでアカウントを作る ←今回ははしょります
・Paypal SandBox( https://developer.paypal.com/ ) でテストアカウントを作る
・Paypal Integration Wizardに沿ってテストコードを作る
・ちょこちょこっと手直し
さっそくやっていきましょう。
Paypal SandBox でテストアカウントを作る
PaypalにはSandBoxというテスト環境があり、その中で、売り手のアカウント、
買い手のアカウントをそれぞれ作ることができます。
またアカウントそれぞれにカードの種類など細かく設定することも可能なようです。
まあ何はともあれアカウント作ればよろし
①https://developer.paypal.com/ にアクセスして右上のSign Upからアカウントを作ります。
②Application > Sandbox accounts > Create Accountでアカウント作成
これでテストアカウントを作ることができます。
Paypal Integration Wizardに沿ってテストコードを作る
Paypal Integration Wizard ( https://devtools-paypal.com/integrationwizard/ )を使うと、
簡単にExpress Checkoutを使うためのコードができます。
というかコード作ってくれます。
Integration Wizardに沿って作っていくと以下の5つのファイルができます。
index.php
paypalfunctions.php
expresscheckout.php
review.php
order_confirm.php
決済の流れとしては
index.php
↓(post)
expresscheckout.php
↓
paypal
↓
review.php
↓(post)
paypal
↓
order_confirm.php
という感じでpaypalのページに料金を送ったり、
paypalのページからその人のアドレスとか住所とかが返ってきたりします。
paypalfunctions.phpには関数が入ってます。
ということで作りましょう。
①Express Checkout PayPalを選択してGet Started
②イントロダクションがあるので興味がある人は見てください。(英語だけどね)
③Start Wizard!
④【1:code】
Shopping Cart Programming Language: PHP
Return URL : index.php
Cancel URL : review.php
あとはテキトーに
⑤【2:cart】
2aのところのコードをコピペしてindex.phpを作ります
expresscheckout.php
paypalfunctions.php
を保存します。あら便利。
paypalfunctions.php内の
$API_UserName="
$API_Password="
$API_Signature="
をテストアカウントのものに書き換えましょう。
売り手のテストアカウントのProfile > API Credential のところを見ればよいです。
⑥【3:billing】
オプションです。
お客さんがpaypalについてあまり知らない人たちだと想定されるときは、
Paypal!って感じのページよりも、カード決済!って感じのページの方がいいですよね。
そういう時はここでページの表示の仕方をカスタマイズできます。
詳しいことは下のサイトに書いてあります。参考に
http://cmonos.jp/blog/2010011600/1.shtml
④【4:review】
4aのところのコードをコピペしてreview.phpを作ります
⑤【5:confirm】
5aのところのコードをコピペしてorder_confirm.phpを作ります
これでコードは一通り作ることができました。
ちょこちょこっと手直しして完成
ほとんど完成したのですが、そのままだとエラーが出るのでそこだけ直していきます。
①expresscheckout.phpのPayment_Amount
コードには
$paymentAmount = $_SESSION["Payment_Amount"];
と書いてあるんですが、そもそもセッションに入れてないので
$_SESSION["Payment_Amount"] = $_POST["Payment_Amount"];
$paymentAmount = $_SESSION["Payment_Amount"];
と書き換えるとよいですね
②review.phpで少し、order_confirm.phpでたくさんエラーが出る
$resArrayの配列の中のキーが変わっているみたいです。
面倒ですが、var_dump($resArray)して直してください。
まとめ
ここにこれらのコードをほぼ丸ごと乗っけてくれているゴッドがいるので貼っておきます。
https://github.com/hrendoh/PayPal-Express-Checkout-example
ちょっと古いですが、大体あってます。
paypal便利ですね~。