Square っていう決済サービスがある。
ずっとオフライン決済だけだと思っていたらオンライン決済ができることを知った。
ボコボコっと溝やら壁やらが出現して進めなくなるのでログに残そうと思った。
location_id ってなんだ
それがなにを指すのかもよくわからないまま(わかりながら進めよとは思うものの進めたい一心で)
Quick Pay Checkout (squareup.com) こちらのページを見て Quick Pay Checkout というものから手を付けた。
たぶん、他のサービスで言うところのチェックアウトなんだろう…か。
上記ページのコードをそのまま動かしてみようと思った。
コードの中に {UNIQUE_KEY} と {LOCATION_ID} というものがある。
{UNIQUE_KEY} は決済IDのような一意になるものを入れればいいんだろう…ということはわかる。
そして {LOCATION_ID} のほう。
こちらはこのコード内にはほかに app_id やら app_secret やら アカウントらしきものがないので何らかの ID なんだろうことはわかるのだが…
いろいろ探した。
ここか?これか? Square Developer サイトにアクセスする
開発者API:支払い、オーダー、お客さま – Square (squareup.com)
アカウントとかはあらかじめ作っている前提で進めると…
まず、 Applications というのを作る必要がある。
Apps – Square Developer Console (squareup.com)
ネーミングセンスがどうかとは思うが、とりあえず「sandbox」というアプリケーションを作成。
各アプリケーションは、Square APIにリクエストを行うために必要なAPIキーと設定の一意のセットを提供します。あるサンドボックス環境は各アプリケーションと一緒に作成され、トランザクションをテストできます。
上記画像の英文翻訳
テスト環境は一緒に作られるということなので安心。
メニューにこれとは別に「Sandbox test accounts」というのがあって、そこからどうやってもテスト環境のなにかを作ることができず迷った。
とりあえずこれでテスト環境は出来た・・・んだよな(笑)
アプリケーションにアクセス
さっそく sandbox アプリケーションにアクセスする。
ここからのURLはアプリケーション依存になるので割愛。
Application ID, Access token を発見。なるほどなるほど…ここにあるのか。
で、 location_id は??
通常は そのあたりがわかればいいのだが、肝心の LOCATION_ID となるものがない。
左側にメニューがあった。
ここの Locations があやしい。
アクセスしたら…
ここに LOCATION_ID があった!
すでに日本語訳にしてある画面ですみません。
OAuth ページでなにやらしろと。
でメニューの OAuth へ。
おおそれっぽい画面。
Sandbox Redirect URL に決済完了後の遷移先URL
Sandbox Application ID はたぶんそのまま
Sandbox Application secret もそのまま
一番下にある Test account authorizations にテストアカウントを入れる…のか。
Authorize an account ボタンを押すと、作成してるテストアカウントが表示されたので taman777 を選択した。
いろいろ権限設定なのだろうが、そのまま Save してみた。
ああ、増えた。もともとあった「Defalut Test Account」ってなに?
見たら、Access Token が書いてあった。これはこれだけで何かに使えるのだろう…今は触れないw
taman777 の詳細を見ると先ほど設定した権限ぽいものまでいろいろ書いてあった。
今回はここはこれまでにして、再び Locations に戻る。
今度は Location ID に値があった!!
結果的にここの Location ID と Access Token を使うということでした。
ここにある Location ID を {LOCATION_ID} に入れ込んで、アクセスしてみた。
なんかできてる
Checkout API Sandbox テストパネル
アクセスしたらこの画面が表示された。
この画面が表示されているのはコードをこうしているからかな。
if ($api_response->isSuccess()) {
$result = $api_response->getResult();
header('Location: ' . $result->getPaymentLink()->getUrl());
exit;
} else ~~~
次に を押す
正直、思ってたんとちがうけど、まあできたのかな。
「チェックアウトのプレビュー」を押すと、これ出ると思ったんだけどなって画面が表示された。
今回、 Jane も Doe も電話番号も入力してないのでサンプルっぽい。
また、深めていきます。