重要 2024年1月4日以降のドロップインのご利用につきまして

Yahoo!ウォレット FastPay を実装してみた!

オンライン決済サービス「Yahoo!ウォレット FastPay」に、新たに「継続課金」機能が追加されたということで、試してみました!

 

Yahoo!ウォレット FastPayは、事業者が自社サイトに数行のコードを貼り付けるだけでオンラインクレジットカード決済システムを導入できる決済サービス。
Yahoo!のアカウントを持っていればとりあえず利用できるっぽいので、早速試してみましょうってことでFastPayのガイドに従って実装してみました。

 

まずはプランなるものを作らなきゃらしいので、FastPayのサイトにアクセスしてみる。
で、右上に「Dashboard」リンクがあるのでこれをクリック。
ここでFastPayを利用するための設定ができると。
テスト環境が用意されていて全APIを試せるらしい。なのでテスト環境で実装してみる。
dashboard

 

「Plans」タブを開いて「新規作成」で登録画面がポップアップ表示されるので入力。
make-plan

 

金額やら課金サイクルなどを入力して登録すると、プランが作成されました。
plan_detail

 

これでFastPay側の準備は整ったので、あとは自分のサイトに実装していくだけ。
で、まずは申込みボタンの実装。
下記のコードを表示したい箇所に貼りつける。(サンプルコードはFastPayガイドに掲載されています。)

<script
src="http://s.yimg.jp/images/wallet/fastpay/js/1.0.0/fastpaySubscription.js" class="fastpay-button"
data-key="アプリケーションID"
data-plan="プランID"
data-redirect="申込み完了ページURL"
>
</script>

[アプリケーションID]:DashboardのAccountページで確認できます
[プランID]:作成したプランの詳細ページで確認できます。
[申込み完了ページURL]:顧客が決済情報を入力したあとに遷移する自サイトのページURL

 

とここで1つ問題が発生。
ボタンクリックで決済情報入力ページをポップアップ表示するか画面遷移するか、2通りのコードが用意されているのだが、ポップアップ表示にしたら申込み完了ページで必要な顧客の情報がなぜか取得できない。なぜだ。。。
とりあえず画面遷移なら取得できるので、画面遷移で進めることにする。

 

次に申込み確認を自動化するためのAPI実装。
※継続課金を有効にするには、顧客からの申込みに対し「確認処理」というものを行う必要がある。
 方法は、Dashboardから手動で行うか、APIで自動化するかの2通りある。

下記のコードを申込み完了ページに貼りつければいいらしい。

require "vendor/autoload.php";

use FastPay\FastPay;

$fastpay = new FastPay("シークレット"); // Accountページで確認できます
$token = $_GET["fastpayToken"]; //画面遷移の場合。ポップアップの場合はPOSTで取得 ← このPOSTが取得できなかった…

// 申込みの確定 
$subscription = $fastpay->subscription->activate(array(
    "subscription_id" => "subs_xxxxxxxxxxxxxx"
));
print_r($subscription->getArray());

いきなり知らないPHPファイルをrequireしてるけど、なにこれ?
ガイドを漁ると、APIライブラリをサーバーにインストールしなきゃっぽい。へー。

てことで、ガイドの記載に従ってAPIライブラリをインストール。

インストールできたら、これで準備完了。よし動くか確認しよ。

 

下記はボタンだけ実装したページ。
request

 

ボタンクリックで決済情報入力ページが表示された。よしよし。
(※テスト環境の場合、背景画像にTEST TEST・・・と表示されます。)
payment

 

申込みクリック。これで完了ページが表示されればOKってあれ?まっしろ・・・なぜだ!
うーむ、たぶんAPIの部分だよねー。1行ずつデバッグしますか。

 

requireは問題ないっぽい。インストールしたライブラリは読めてるなー。
あ、use演算子でこけてる。なんでだろ、サーバーのPHPバージョンとかかな?クラスのエイリアス宣言してるだけなんだけどな。
とりあえずuse演算子は使わないで、直指定でインスタンスを作るように修正。

 

で、そのあとのコードもチェック。
あれ、subscription_idに変な文字列セットしてる。ここ、上で取得してる$tokenをセットしなきゃでしょ。
中途半端だな、サンプルコード…

 

他におかしそうなところはないから、もう1回チャレンジ!
お、表示された!と思ったら、申込みの確定処理でこけてた。
うーん、インスタンスは作成されてるし、トークンも取得できてるんだけどなー。

 

これ以上はライブラリの解析になってくるから、検証はここで断念!
一応、確認処理を手動で行えば継続課金できることは確認したから、残念だけど本日はここまで!
今度Yahoo!さんに行って聞いてみよ。
ちなみに、下記が手動で確認処理を行った結果画面。
plan_detail2

 

試してみた所感としては、ガイド通りにやって使えるならば導入は簡単かなーと。
API使うのにCURLコマンドでインストールしなきゃだったりするので、UNIXの知識が多少必要かもだけど。
ところどころ躓いたので、もうちょっとドキュメントが充実すると嬉しいかなと。
あと、確認処理自動化をもっと手軽にできると導入ハードルがぐんと下がりますね。
まだ機能追加から1週間なので、ちょっと様子見というところですかね。