背景
- Payment Advent Calendar 12月7日分
- Yahoo! ウォレット FastPayを使ってみるに関連して、同等のアーキテクチャで動くSPIKE Checkoutサービスを試してみる。
概要
- SPIKEの特徴
- サンドボックス環境はアカウントを作るだけで利用出来ます。
- 本番環境でSPIKEのAPIを利用するためには月額3,000円のビジネスプレミアムに申し込む必要が有ります。
- この記事ではサンドボックス環境でテストしてみます。
SPIKE開発ドキュメント
- 開発用ドキュメントは、ユーザ登録後に誰でも閲覧でき、Sandbox環境も利用出来ます。
SPIKE Checkout利用時のシーケンス
- 単発決済の場合のシーケンスを書いてみました。
- SPIKE Checkoutを利用しないで、Token APIを利用すれば、自分のサイト上でユーザがクレジットカード情報を入力させることもできます。その場合は、Full APIに申し込む必要が有ります。
- シーケンス図は、FastPayの時に書いた物を流用したので、FastPayをSPIKEに読み替えて頂ければと思います。
デモ
1ページ目
- FastPayと違い、ボタンや、処理をマーチャントが自由に書けます。
2ページ目
- 以下のような結果表示が出たら成功です。
- 決済部分の主要コードは以下のようになります。
- FastPayとは、APIを作ってくれた方の設計思想の違いにより、呼び出し方はちょっと違います。This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
<?php $spike = new \Issei\Spike\Spike(trim(file_get_contents('./secret.key'))); $token = new \Issei\Spike\Model\Token($card_token); // 課金を作成 $request = new \Issei\Spike\ChargeRequest(); $request ->setToken($token) ->setAmount(666, 'JPY') ->setCapture(false) // If you set false, you can delay capturing. ; $product = new \Issei\Spike\Model\Product('my-product-00001'); $product ->setTitle('Product Name') ->setDescription('Description of Product.') ->setPrice(333, 'JPY') ->setLanguage('JA') ->setCount(2) ->setStock(97) ; $request->addProduct($product); $charge = $spike->charge($request); var_dump($charge); // 課金を確定 $charge = $spike->capture($charge); var_dump($charge); // 課金を取り消し $response = $spike->refund($charge); var_dump($response);
SPIKEで結果確認
- SPIKEの開発ダッシュボードからトランザクションの状態をリアルタイムに確認出来ます。
- https://spike.cc/dashboard/developer/analytics
- 取り消しなどもWeb上から行えます。
まとめ
- SPIKE Checkoutを使って、仮売上、実売上、実売上キャンセルを行いました。
- SPIKE APIのPHPライブラリに微妙に不具合があったので修正しました。
Comments
バグ修正のPRありがとうございました!早速マージさせて頂きましたm(__)m
どういたしまして!
ライブラリ作成ありがとうございます!たすかりました〜