人生の恥は書き捨て

プログラムとかいろいろ

PHPでPaypalのExpress Checkout をやってみた

PHPPaypalの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便利ですね~。