【PHP】Square でOnline決済実装 Payment編
PHP で作られたサイト内にOnline決済(SquareでPayment)を実装する方法を紹介します。
Squareってなに?という方は、下記が参考になれば。
まず前提として、Online決済は大まかに分けて二種類(Checkout & Payment)存在します。
CheckoutとPaymentの違いは下記を参考に、、、(自分の記事の宣伝みたいになってますね、読み飛ばしてもらってOKっす)。
今回はPaymentという種類のOnline決済を実装していきます。
(下記開発環境はローカル(Mac)でMAMPを使用しています。おそらく別の環境でも動くと思います、、。
php ver は 5.4.0以上を使用してください)
1. git cloneでexamplesをローカルの任意のフォルダにclone
git clone https://github.com/square/connect-api-examples.git
容量が大きいので環境によってはcloneにちょっと時間がかかるかも?
2. payment に必要なライブラリをダウンロード
まず、clone してできたconnect-api-examplesフォルダ内のphp_payment に移動
※v1にもphpフォルダあるのですが、v1ではなく、v2フォルダ内のphp_payment使用を推奨してます。(セキュリティ強化のため。)
※本番環境ではlet's encryptなどでSSL化 を推奨してます。(セキュリティ強化のため。)
コンポーザ(ライブラリダウンロードに必要)のセットアップを行う
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
ここまでで、php_paymentフォルダ内にcomposer.phar が作成されている事を確認し、下記を実行
php composer.phar install
ここまでで、 php_paymentフォルダ内にvenderフォルダが作成されている事を確認。(venderフォルダ内がライブラリ。)
3. php_paymentフォルダ内をMAMPのルートフォルダ(http://localhost:8888/ 直下に指定されているフォルダ)にコピーする
実際に必要なのはphp_paymentフォルダ内の、vender配下, css/sq-payment-form.css, js/sq-payment_form.js, .env
なので、本来は、その他のcomposer.jsonやindex.phpなどはコピーしなくてもOK
今回は動作テストのため、php_paymentフォルダ内のindex.phpとprocess-card.phpもコピーしています。
4. .env に環境変数を設定
PROD_ACCESS_TOKEN=Squareで確認した本番用アクセストークン記載
PROD_APP_ID=Squareで確認した本番用アプリID記載
PROD_LOCATION_ID=Squareで確認した本番用ロケーションID記載
SANDBOX_ACCESS_TOKEN=Squareで確認したテスト用アクセストークン記載
SANDBOX_APP_ID=Squareで確認したテスト用アプリID記載
SANDBOX_LOCATION_ID=Squareで確認したテスト用ロケーションID記載
USE_PROD=false(テスト環境使用の場合。本番環境ではtrue)
5. ブラウザでローカルホスト(http://localhost:8888/など)にアクセス
上記のような画面がでたらOK!
テスト値(正常)
card num 4111 1111 1111 1111, cvv 111, expiration 12/21, postal 11111
テスト値(異常)
card num 4111 1111 1111 1111, cvv 911, expiration 01/40, postal 99999
などを使って、動きを試してみてください^^
その他のテスト値は下記参照
6. その他気になったこと
5. の記入欄でpostal? なぜカード情報に?と疑問に思ったのですが、
どうもアメリカでは郵便番号をカード情報に紐付けて使用しているようです。
squareではpostalが必須項目になってしまうので、
アメリカ以外のカードの場合は「00000」または「99999」を入れると良いみたい、、、
なのですが、日本のサイトでsquare使用する場合は、ユーザの方への注意書きが必要かな?思います。
以上、squareでPHP Payment実装でした!
index.phpやprocess-card.phpをいじれば、見た目や購入代金を変更できるので、自由にカスタマイズできると思います。
今後、phpでのsquare在庫管理と決済の連携や、checkoutのやり方も紹介できればと思います。
おやすみなさいいいぃぃぃぃ