Skip to content

Instantly share code, notes, and snippets.

@masatoi
Last active June 9, 2020 08:06
Show Gist options
  • Save masatoi/01e11f846df8a929d264c3cc6a41d071 to your computer and use it in GitHub Desktop.
Save masatoi/01e11f846df8a929d264c3cc6a41d071 to your computer and use it in GitHub Desktop.

チャージQRコード

店舗ユーザが発行し、エンドユーザがポケペイアプリから読み取ることでチャージ取引が発生するQRコードです。

チャージQRコードを解析すると次のようなURLになります(URLは環境によって異なります)。

https://www-sandbox.pokepay.jp/checks/xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx

QRコードを読み取る方法以外にも、このURLリンクを直接スマートフォン(iOS/Android)上で開くことによりアプリが起動して取引が行われます。(注意: 上記URLはsandbox環境であるため、アプリもsandbox環境のものである必要があります) 上記URL中の xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx の部分がチャージQRコードのIDです。

チャージQRコードの発行

チャージQRコードの発行は以下のように行ないます。

$request = new Pokepay\Request\CreateCheck(
  'xxxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx', // 送金元の店舗アカウントID(必須)
  array(
    "money_amount" => 100, // 付与マネー額
    "point_amount" => 20,  // 付与ポイント額
    "description" => "test check", // 説明文(アプリ上で取引の説明文として表示される)
    "is_onetime" => false, // ワンタイムかどうか。真の場合1度読み込まれた時点でそのチャージQRは失効する(デフォルト値は真)
    "usage_limit" => 10,   // ワンタイムでない場合、複数ユーザから読み取られ得る。その場合の最大読み取り回数
    "expires_at" => '2021-01-01T00:00:00+09:00', // チャージQR自体の失効日時
    "point_expires_at" => '2021-01-01T00:00:00+09:00', // チャージQRによって付与されるポイントの失効日時
    "point_expires_in_days" => 60, // チャージQRによって付与されるポイントの有効期限(相対指定、単位は日)
    // ポイントがエンドユーザによって消費されたときに負担が発生する店舗のアカウントID(デフォルトは本店アカウント)
    "bear_point_account" => 'yyyyyyyyyyyyy-yyyy-yyyy-yyyyyyyyyyyy',
  ));

送金元となる店舗アカウントIDは必須で、残りはオプショナルですが、money_amount(付与マネー額)とpoint_amount(付与ポイント額)の少なくともどちらか一方は必要です。 is_onetimeはチャージQRコードが一度の読み取りで失効するときにtrueにします。デフォルト値はtrueです。 is_onetimefalseの場合、そのチャージQRコードは1ユーザについては1回きりですが、複数ユーザによって読み取り可能なQRコードになります。 usage_limitは複数ユーザによって読み取り可能なチャージQRコードの読み取り回数に制限をつけるために指定します。省略すると無制限に読み取り可能なチャージQRコードになります。チャージQRコードは管理画面からいつでも無効化(有効化)することができます。

成功時は Pokepay\Response\Check オブジェクトをレスポンスとして返します。以下にプロパティを示します。

  • id (string): チャージQRコードのID
  • amount (double): チャージマネー額 (廃止予定)
  • moneyAmount (double): チャージマネー額
  • pointAmount (double): チャージポイント額
  • description (string): チャージQRコードの説明文(アプリ上で取引の説明文として表示される)
  • user (Response\User): 送金元ユーザ情報
  • isOnetime (bool): 使用回数が一回限りかどうか
  • isDisabled (bool): 無効化されているかどうか
  • expiresAt (DateTime): チャージQRコード自体の失効日時
  • privateMoney (Response\PrivateMoney): 対象マネー情報
  • usageLimit (integer): 一回限りでない場合の最大読み取り回数
  • usageCount (integer): 一回限りでない場合の現在までに読み取られた回数
  • token (string): チャージQRコードを解析したときに出てくるURL

チャージQRコードを読み取ることでチャージする

通常チャージQRコードはエンドユーザのアプリによって読み取られ、アプリとポケペイサーバとの直接通信によって取引が作られます。 もしエンドユーザとの通信をパートナーのサーバのみに限定したい場合、パートナーのサーバがチャージQRの情報をエンドユーザから代理受けして、サーバ間連携APIによって実際のチャージ取引をリクエストすることになります。

エンドユーザから受け取ったチャージ用QRコードのIDを以下のようにエンドユーザIDと共に渡すことでチャージ取引が作られます。

$request = new Pokepay\Request\CreateTopupTransactionWithCheck(
    'xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx',             // チャージ用QRコードのID
    'yyyyyyyy-yyyy-yyyyyyyyy-yyyyyyyyyyyy',             // エンドユーザーのID
);

成功時は Pokepay\Response\Transaction オブジェクトをレスポンスとして返します。プロパティは 取引情報を取得する を参照してください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment