Atome QR
加盟店が生成したQRコードを顧客がスキャンし、Atomeアプリで承認することで、AtomeユーザーからのオフラインQRコード決済を受け付けます。
概要
Atome QRは、顧客がAtome Buy Now Pay Later(後払い)アカウントを使用して支払いを行うことができるオフラインQRベースの決済方法です。標準のAtomeリダイレクトフローとは異なり、顧客は加盟店が生成したQRコードをスキャンし、Atomeアプリで直接支払いを承認します。
主な特徴:
- ✅ オフライン承認 - 顧客がQRをスキャンしてアプリで支払い
- ✅ 後払い - 3回の無利息分 割払い
- ✅ リダイレクト不要 - QRコードは加盟店側で表示
- ✅ 3市場対応 - タイ、シンガポール、マレーシア
- ✅ 即時承認 - アプリ内でリアルタイムの与信判断
Atome QRを加盟店アカウントで有効にするには、support@omise.coまでお問い合わせください。
対応地域
| 地域 | 通貨 | 最小金額 | 最大金額 | APIバージョン |
|---|---|---|---|---|
| タイ | THB | ฿20.00 | ฿50,000.00 | 2017-11-02 |
| シンガポール | SGD | $1.50 | $3,000.00 | 2017-11-02 |
| マレーシア | MYR | RM10.00 | RM5,000.00 | 2017-11-02 |
仕組み
決済フロー:
- 加盟店がAtome QRソースを作成
- チェックアウトまたはPOSでQRコードを表示
- 顧客がAtomeアプリを開いてQRをスキャン
- Atomeが即時与信審査を実行
- 顧客が3回分割払いプランを確認
- 顧客が最初の支払いを確認
- 加盟店がWebhook確認を受信
一般的な完了時間: 30秒〜2分
実装
ステップ1: ソースの作成
- cURL
- Node.js
- PHP
curl https://api.omise.co/sources \
-u $OMISE_PUBLIC_KEY: \
-d "amount=50000" \
-d "currency=SGD" \
-d "type=atome_qr"
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
const source = await omise.sources.create({
type: 'atome_qr',
amount: 50000, // SGD 500.00
currency: 'SGD'
});
// QRコードURLを取得
const qrCodeUrl = source.scannable_code.image.download_uri;
console.log('QRコード:', qrCodeUrl);
<?php
$source = OmiseSource::create([
'type' => 'atome_qr',
'amount' => 50000,
'currency' => 'SGD'
]);
$qrCodeUrl = $source['scannable_code']['image']['download_uri'];
?>
ステップ2: 課金の作成
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=50000" \
-d "currency=SGD" \
-d "source=src_test_xxx"
統合リクエスト
ソースと課金を1つのリクエストで作成:
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=50000" \
-d "currency=SGD" \
-d "source[type]=atome_qr"
ステップ3: QRコードの表示
// チェックアウトページまたはPOSでQRコードを表示
const qrCodeUrl = charge.source.scannable_code.image.download_uri;
// HTMLで
document.getElementById('qr-code').src = qrCodeUrl;
ステップ4: Webhookの処理
app.post('/webhooks/omise', (req, res) => {
const event = req.body;
if (event.key === 'charge.complete') {
const charge = event.data;
if (charge.status === 'successful') {
// 支払い成功 - 注文を処理
fulfillOrder(charge.metadata.order_id);
} else if (charge.status === 'failed') {
// 失敗を処理
handleFailedPayment(charge);
}
}
res.status(200).send('OK');
});
QRコードの有効期限
デフォルトのQRコード有効期限は12時間です。expires_atパラメータを使用して、30秒から12時間の間でカスタマイズできます:
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=50000" \
-d "currency=SGD" \
-d "source=src_test_xxx" \
-d "expires_at=2024-12-31T23:59:59Z"
課金ステータス値
| ステータス | 説明 |
|---|---|
pending | QRコード表示済み、顧客のスキャン待ち |
successful | 支払い完了 |
failed | 支払い拒否または処理エラー |
expired | QRコードの有効期間終了 |
失敗コード
| コード | 説明 |
|---|---|
payment_expired | QRコードの有効期間終了 |
payment_rejected | Atomeが取引を拒否 |
failed_processing | 一般的な承認失敗 |
返金
Atome QR課金は、取引日から60日以内に部分返金または全額返金が可能です。
// 全額または部分返金
const refund = await omise.charges.refund('chrg_test_xxx', {
amount: 25000 // SGD 250.00の部分返金
});
ベストプラクティス
- 分割払い内訳を表示 - QR表示前に3回払いスケジュールを表示
- 適切な有効期限を設定 - QRの有効期間をチェックアウトセッションに合わせる
- 明確な説明 - 顧客にまずAtomeアプリを開くよう案内
- Webhook処理 - ポーリングだけでなく、必ずWebhookで確認
- 利用資格を表示 - Atome の利用資格要件を表示
よくある質問
Atome QRとは何ですか?
Atome QRは、オフラインQRベースのBuy Now Pay Later(後払い)決済方法です。標準のAtomeリダイレクトフローとは異なり、顧客は加盟店が表示するQRコードをスキャンし、Atomeアプリで直接支払いを承認します。購入金額は3回の無利息月払いに分割されます。
AtomeとAtome QRの違いは何ですか?
Atome(リダイレクト): 顧客はAtomeのウェブサイト/アプリにリダイレクトされて支払いを完了します。オンラインチェックアウトフローに適しています。
Atome QR: 加盟店がQRコードを表示し、顧客がAtomeアプリでスキャンします。店舗のPOSや顧客を自社ページに留めておきたい場合に適しています。
どちらも支払いを3回の無利息分割払いに分割します。
QRコードの有効期間はどのくらいですか?
デフォルトでは、Atome QRコードは12時間有効です。課金作成時にexpires_atパラメータを使用して、30秒から12時間の間でカスタマイズできます。
顧客が与信審査に落ちた場合はどうなりますか?
Atomeが顧客の申請を拒否した場合(与信不足、アカウントの問題など)、課金はpayment_rejectedの失敗コードで失敗します。この場合は、代替の支払い方法を提供してください。
Atome QR支払いを返金できますか?
はい、元の取引から60日以内であれば、全額返金と部分返金の両方がサポートされています。Atomeが顧客の分割払いを適切に返金処理します。
取引限度額はいくらですか?
限度額は地域によって異なります:
- タイ: ฿20〜฿50,000 THB
- シンガポール: $1.50〜$3,000 SGD
- マレーシア: RM10〜RM5,000 MYR
個々の顧客の限度額は、Atomeの与信限度額に基づいて低くなる場合があります。
関連リソース
- Atome(リダイレクト) - 標準リダイレクトフロー
- QR決済の概要 - すべてのQR決済方法
- Webhook - Webhook処理
- 返金 - 返金ポリシー