店舗ユーザが発行し、エンドユーザがポケペイアプリから読み取ることでチャージ取引が発生する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コードの発行は以下のように行ないます。
$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_onetime
がfalse
の場合、そのチャージ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の情報をエンドユーザから代理受けして、サーバ間連携APIによって実際のチャージ取引をリクエストすることになります。
エンドユーザから受け取ったチャージ用QRコードのIDを以下のようにエンドユーザIDと共に渡すことでチャージ取引が作られます。
$request = new Pokepay\Request\CreateTopupTransactionWithCheck(
'xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx', // チャージ用QRコードのID
'yyyyyyyy-yyyy-yyyyyyyyy-yyyyyyyyyyyy', // エンドユーザーのID
);
成功時は Pokepay\Response\Transaction
オブジェクトをレスポンスとして返します。プロパティは 取引情報を取得する を参照してください。