トップ  > メモ一覧  > カテゴリ「ショップ」の絞り込み結果 : 1件

1件中 1 〜 1 表示  1 

No.1203 PayPalとの連携

PayPalとの連携

出典: Wiki | CodeIgniter Users Group in Japan

世の中には数多くあるクレジットカード決済システムがありますが、PayPalには以下の様なメリットがあります。

  • 決済用のライブラリ周りが充実、APIもある
  • 日本語、英語はもちろん他の言語にも対応
  • 毎月の維持費なし、手数料も他の決済サービスに比べて安いらしい
  • アカウント作成の際の審査がほとんどなし
  • 数銭単位の決済も使えるマイクロペイメントにも対応

ここではCodeIgniter用にまとめたPayPalのライブラリの実装の仕方を紹介します。 このライブラリにはPayPalのIPNとPDTという決済機能を使った実装を紹介します。 まず最初にIPNを使ったものを紹介して、後ほどPDTの方も追記します。

PayPalのIPNとPDTについての詳細はグーグルさんに聞いて見てください。

目次

[非表示]

PayPal IPNとの連携

1. PayPalデベロッパーアカウントを作る

テスト中に本物のクレジットカードやPayPalのアカウントを使うと、余計な支払いが発生してしまうので、PayPalのテストにはデベロッパーアカウントを所得しsandboxでテストを行います。

https://developer.paypal.com/

このURLからアカウントを所得し、ログイン後以下のリンクから支払いを受け取るSellerと支払いを行うBuyerのアカウントを1つずつ作成します。

https://developer.paypal.com/cgi-bin/devscr?cmd=_create-account-session

パスワードはPayPalが勝手に決めますが、覚え易いものに変更する事をお勧めします。

2. PayPalパッケージの解凍とファイルの配置

http://paypal.betal.jp/ci_paypal.zip

このURLからzipファイルをダウンロードします。

ファイルを解凍するとPayPal決済の機能を実装するファイルがCodeIgniterのディレクトリ構成(controllers, views, models, config)の中に展開されます。これらのファイルをCodeIgniterの各ディレクトリに置いてください。このライブラリは CodeIgniterのバージョンは1.7を使って作りましたが、特に変なことはしていないので、他のバージョンでも動くはずです。

またsqlディレクトリに入っているschema.sqlはpaypal決済を保存しておくテーブルの入ったMySQL用のスキーマファ イルです。このschema.sqlをMySQLにロードしてテーブルを用意してください。またdatabase.phpへのデータベースの設定もお忘れ なく。

config/constants.phpはCodeIgniterに既に存在するファイルなので、以下の行を加えてもらうだけでも構いません。

//paypal
define('PAYPAL_IPN', 'ipn');
define('PAYPAL_PDT', 'pdt');

注意!!
PayPal IPNはインターネット上で見えるサーバーに対してリクエストを飛ばす必要があるので、インターネット上にあるサーバーを使うようにしてください。

4. パラメーターを修正

  • views/paypal_view.php内の15行目、39行目

PayPalデベロッパーアカウントのSellerアカウントのアカウント名(メールアドレス)に修正します。
moksah_1248273171_biz@gmail.com の様に_bizで終わっている物がSellerのメールアドレスになります。

3. PayPalページのロード

ファイルを配置するとpaypalコントローラ以下にpaypal支払い用のボタンのあるページをロードしてみます。

http://paypal.betal.jp/paypal

にある様にボタンが表示されればokです。

4. IPNリクエストの確認のための準備

IPNの詳細の説明はグーグルさんに任せるとして、IPNを使った支払い完了までのフローは以下の様になります。

a. 顧客がPayPalで支払いを行う
b. PayPalがあなたのサーバーに対し支払い情報を含んだリクエストを飛ばす
c. あなたのサーバーで受けたリクエストをPayPalに戻す
d. PayPalが戻ってきたデータをチェックして、正しいかどうかを判断し、結果をあなたのサーバーに戻す
e. データが認証された場合支払いが正常に完了する

b. で飛んでくるPayPalからのリクエストを確認するためサーバー内のシェルから以下のコマンドを発行します

tail -f /var/log/apache2/access.log

当然access.logの位置は各サーバーの設定に合わせてください。

5. PayPalで支払い

/paypal コントローラをロードして、ページ内にある「2000円購入」ボタンをクリックしてPayPalにリクエストが飛ばされるのを確認します。

To access the PayPal Sandbox, please log in to PayPal Developer Central.

と表示される場合はリンクをクリックしてPayPalデベロッパーアカウントにログインします。

PayPalのアカウントを使って支払いを進める様に促されるので、先ほど作ったBuyerアカウントを使ってPayPalにログインします。
amano_1222333444_per@codeigniter.jp の様に_perで終わっている物がBuyerのメールアドレスになります。

ログイン後注文の詳細の画面と共に「Pay Now」ボタンが表示されるので、「Pay Now」ボタンをクリックして支払いを終了します。

注意!! この際の支払い画面は英語で出てきますが、デベロッパー環境は英語しか用意されていないようです。この後の8.の設定で本番環境に変更後は支払い画面も日本語で表示されます。

6. IPNリクエストの確認

支払い後数秒後にIPNリクエストがPayPalから飛んできます。リクエストが以下の様にaccess.logの中に出てくればPayPalがきちんとIPNを送ってくれたと確認できます。

111.222.222.111 - - [13/Nov/2008:16:25:19 +0900] "POST /paypal_ipn HTTP/1.0" 200 - "-" "-"

7. DBにデータが保存されているかどうかの確認

支払いが認証されると/paypal_ipnコントローラがDB内のpaypal_paymentテーブルに対して書き込みを行います。

+----+--------+---------------+-------------------+------+---------------------+
| id | amount | currency_code | txn_id            | type | ctime               |
+----+--------+---------------+-------------------+------+---------------------+
|  1 |   2000 | JPY           | 1VT55951UL1165239 | ipn  | 2008-11-23 14:40:00 | 

この様な列がDBに入っていれば成功です。認証に失敗した場合は何も書き込みは行われません。

8. 本番環境に設定を変更

デベロッパー環境で動作確認後本番環境に設定を変更します。事前に本番環境用のPayPalのビジネスアカウントを作成しておいてください。

  • controllers/paypal_ipn.php内の48行目
  • views/paypal_view.php内の12行目、36行目

これらの行をコメントアウトして、上にあるsandboxの付いているデベロッパー環境の部分をコメントアウトします。

  • views/paypal_view.php内の15行目、39行目

Sellerアカウントのアカウント名(メールアドレス)を本番のものに変更
これで一般のPayPalアカウントやクレジットカードでの支払いが受けれるようになります。

引用元

更新:2009/07/23 09:53 カテゴリ: 個人開発  > ショップ ▲トップ
1件中 1 〜 1 表示  1 

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

Python

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0