tapitapi’s blog

1日1杯タピオカ!エンジニア

【PHP】Square でOnline決済実装 Payment編

PHP で作られたサイト内にOnline決済(SquareでPayment)を実装する方法を紹介します。

 

Squareってなに?という方は、下記が参考になれば。

tapitapi.hatenadiary.com

 

まず前提として、Online決済は大まかに分けて二種類(Checkout & Payment)存在します。

 

 CheckoutとPaymentの違いは下記を参考に、、、(自分の記事の宣伝みたいになってますね、読み飛ばしてもらってOKっす)。

tapitapi.hatenadiary.com

 

今回は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 に移動

cd connect-api-examples/connect-examples/v2/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 composer-setup.php

 

php -r "unlink('composer-setup.php');"

 

ここまでで、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/など)にアクセス

f:id:kayo445:20200312145415p:plain

上記のような画面がでたら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

 

などを使って、動きを試してみてください^^ 

 

その他のテスト値は下記参照

developer.squareup.com

 

 

6. その他気になったこと

5. の記入欄でpostal? なぜカード情報に?と疑問に思ったのですが、

どうもアメリカでは郵便番号をカード情報に紐付けて使用しているようです。

 

squareではpostalが必須項目になってしまうので、

アメリカ以外のカードの場合は「00000」または「99999」を入れると良いみたい、、、

なのですが、日本のサイトでsquare使用する場合は、ユーザの方への注意書きが必要かな?思います。

www.shineray-ryokou.com

 

 

以上、squareでPHP Payment実装でした!

index.phpやprocess-card.phpをいじれば、見た目や購入代金を変更できるので、自由にカスタマイズできると思います。

 

今後、phpでのsquare在庫管理と決済の連携や、checkoutのやり方も紹介できればと思います。

 

おやすみなさいいいぃぃぃぃ