WebAPI
iOS
Web
square

WebサイトでSquareのPOSレジアプリを使う(iOS編)

Squareではスマートフォン向けにPOSレジアプリを提供しています。このアプリを使うことで手軽にレジ機能が使え、さらにクレジットカード決済も利用できるようになります。数種類の商品を素早く販売するキオスクアプリに使ったり、その場で金額を入力して決済してもらうことができます。

IMG_2894.PNG

このPOSレジアプリにはAPIがあります。POS APIというのですが、これを使うと自分の作ったスマートフォンアプリとPOSレジアプリを連携させられます。URLスキームを使ったアプリ連携機能を使うのですが、これは何もスマートフォンアプリだけでなく、Webサイトでも利用できます。

今回はこのWebサイトにおけるPOSレジ機能の利用法について紹介します。まずはiOSでの実装方法です。Androidでの実装はこちらを参考にしてください

コードについて

今回のコードはgoofmint/Square_Web_POS_API_Demoにアップロードしてあります。実装時の参考にしてください。このコードでは以下のライブラリを使っています。

  • Onsen UI
    Webサイトに簡単にネイティブアプリライクなUI/UXを実装できるライブラリです。
  • jQuery
    DOM操作用。

いずれも必須という訳ではありませんが、開発のしやすさのために利用しています。

POSレジアプリの呼び出しについて

今回は https://example.com/ というサイトで決済を開始し、決済が終わった後に https://example.com/callback というURLを呼び出す形で実装します。

まずWebサイト側では以下のようなコードでURLを呼び出します。

var dataParameter = {
  // 金額に関する情報
  "amount_money": {
    "amount" : "100",
    "currency_code" : "JPY"
  },
  // POSレジアプリがコールバックするURL
  "callback_url" : 'https://example.com/callback',
  // アプリケーションID(自分のものに置き換えてください)
  "client_id" : "YOUR_APPLICATION_ID",
  // バージョン(現在は1.3固定です)
  "version": "1.3",
  // 取引に関する説明書き
  "notes": "取引に関する説明書き",
  "options" : {
    // 利用できる決済方法
    "supported_tender_types" : [
      "CREDIT_CARD",      // クレジットカード
      "CASH",             // 現金
      "OTHER",            // その他
      "SQUARE_GIFT_CARD", // ギフトカード
      "CARD_ON_FILE"      // オフライン決済
    ]
  }
};
// URIの生成
var uri = "square-commerce-v1://payment/create?data=" + encodeURIComponent(JSON.stringify(dataParameter));
location.href = uri;

金額は数値とともに通貨単位を指定する必要があります。さらにコールバックURLは自分のサイトのものを、アプリケーションIDも自分のものに置き換えてください。決済手段は提供できるものを指定してください。

呼び出すURIですが、スキーマは square-commerce-v1 固定です。パスは /payment/create で、 data パラメータに対して各種設定を指定します。

実行してみる

実行すると Safari からPOSレジアプリが呼び出されて決済画面になります。

IMG_2893.PNG

決済が完了すると、再びSafariが呼び出されます。この時のURLは設定で指定しているコールバックURLになります。なお、このコールバックURLはSquareの管理画面であらかじめ設定しておかなければなりません。

Screenshot_ 2017-08-26 17.56.12.png

コールバックされたURLはGETリクエストになります。そしてdataパラメータを持っています。

IMG_2891.PNG

このdataパラメータで指定される文字列はJSONオブジェクトになります。例えばJavaScript上で処理を行う場合としては、次のように処理できるでしょう。

var param = JSON.parse(
  decodeURIComponent(
    location.search.replace('?data=', '')
  ));

こうして取得できるデータとしては下記になります。

パラメータ 内容
status 結果。正常終了の場合はokという文字です
transaction_id トランザクションID。ユニークなIDです
client_transaction_id クライアントトランザクションID。オフライン決済用です

このような手順でiOSのSafari上でPOSレジアプリによる決済を提供できるようになります。なお、Chromeなどのサードパーティーのブラウザでも利用できます。

実店舗や移動式店舗などと連動してWebサイト上で物販する際などにぜひ使ってみてください。カフェなどでアプリを作るのは難しくとも、HTMLであればそれほど手間をかけずに作れるのではないでしょうか。

Square Connect API Documentation