Alipay+ ユーザー提示モード(UPM)
POS端末で顧客の決済バーコードをスキャンすることで、Alipay+ユーザーからの店舗決済を受け付けます。
概要
ユーザー提示モード(Bスキャン C)では、加盟店が顧客のウォレットアプリに表示されたバーコードまたはQRコードをスキャンします。これは、POS端末にバーコードスキャナーを備えた高回転の小売環境に最適です。
主な機能:
- ✅ 迅速なチェックアウト - 数秒でスキャンして処理完了
- ✅ 複数のウォレット - 12以上のAlipay+パートナーウォレットからの決済に対応
- ✅ 馴染みのあるフロー - 商品バーコードのスキャンと同様の操作
- ✅ 大量取引対応 - 繁忙な小売環境に最適
- ✅ クロスボーダー対応 - 海外からの旅行者の決済に対応
対応地域
| 地域 | 通貨 | 最小金額 | 最大金額 | APIバージョン |
|---|---|---|---|---|
| タイ | THB | ฿20.00 | ฿150,000.00 | 2017-11-02 |
| シンガポール | SGD | $1.00 | $20,000.00 | 2017-11-02 |
対応ウォレット
| ウォレット | タイ | シンガポール |
|---|---|---|
| Alipay CN | ✅ | ✅ |
| Alipay HK | ✅ | ✅ |
| KakaoPay | ✅ | ✅ |
| GCash | ✅ | — |
| Touch 'n Go | ✅ | ✅ |
| TrueMoney | ✅ | — |
仕組み
決済フロー:
- 顧客がウォレットアプリを開く
- 顧客が決済バーコード/QRコードを表示
- 加盟店がPOS端末でバーコードをスキャン
- バーコードで自動的に課金が作成される
- 決済が即時処理される
- 両者が確認を受け取る
一般的な完了時間: 5〜15秒
実装方法
バーコードで課金を作成
UPMでは、スキャンしたバーコードで直接課金を作成します。
- cURL
- Node.js
- PHP
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=150000" \
-d "currency=THB" \
-d "source[type]=alipayplus_upm" \
-d "source[barcode]=2897991359827699709"
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
const charge = await omise.charges.create({
amount: 150000,
currency: 'THB',
source: {
type: 'alipayplus_upm',
barcode: '2897991359827699709' // Scanned from customer's wallet
}
});
console.log('Charge status:', charge.status);
<?php
$charge = OmiseCharge::create([
'amount' => 150000,
'currency' => 'THB',
'source' => [
'type' => 'alipayplus_upm',
'barcode' => '2897991359827699709'
]
]);
echo "Status: " . $charge['status'];
?>
レスポンスの処理
app.post('/pos/payment', async (req, res) => {
const { amount, barcode } = req.body;
try {
const charge = await omise.charges.create({
amount: amount,
currency: 'THB',
source: {
type: 'alipayplus_upm',
barcode: barcode
}
});
if (charge.status === 'successful') {
// Payment successful immediately
printReceipt(charge);
res.json({ success: true, charge_id: charge.id });
} else if (charge.status === 'pending') {
// Wait for webhook
res.json({ success: false, message: 'Awaiting confirmation' });
} else {
res.json({ success: false, message: charge.failure_message });
}
} catch (error) {
res.json({ success: false, message: error.message });
}
});
Webhookの処理
app.post('/webhooks/omise', (req, res) => {
const event = req.body;
if (event.key === 'charge.complete') {
const charge = event.data;
if (charge.status === 'successful') {
notifyPOS(charge.id, 'success');
} else if (charge.status === 'failed') {
notifyPOS(charge.id, 'failed', charge.failure_message);
}
}
res.status(200).send('OK');
});
課金ステータス値
| ステータス | 説明 |
|---|---|
pending | ウォレットからの承認待ち |
successful | 決済完了 |
failed | 決済拒否または失敗 |
expired | 課金の制限時間超過 |
失敗コード
| コード | 説明 |
|---|---|
payment_expired | 決済期限切れ |
payment_rejected | 発行者により決済拒否 |
insufficient_fund | 残高不足または限度額到達 |
failed_processing | 一般的な処理エラー |
返金とボイド
- ボイド期限: 取引日の16:15 UTC まで
- 返金期限: 取引から1年以内
- 部分返金: 対応
ベストプラクティス
- スタッフへの教育 - 顧客にバーコードの提示を促す方法をスタッフに周知
- 優れたスキャナー - 信頼性の高いバーコードスキャナーを使用
- エラー処理 - 明確なエラーメッセージを表示
- 迅速なタイムアウト - UPMはほぼ即時処理されるべき
よくある質問
ユーザー提示モード(UPM)とは何ですか?
UPMは「Bスキャン C」(加盟店が顧客をスキャン)とも呼ばれ、顧客がウォレットアプリからバーコード/QRコードを表示し、加盟店がそれをスキャンする店舗決済方法です。MPMより高速で、高回転の小売に最適です。
MPMとUPMの違いは何ですか?
MPMでは加盟店がQRコードを表示し、顧客がスキャンします。UPMでは顧客がバーコードを表示し、加盟店がスキャンします。UPMは顧客側のステップが少ないため、通常より高速(5〜15秒)です。
どのようなスキャナーが必要ですか?
1Dおよび2Dバーコードを読み取れる標準的なバーコードスキャナーであれば使用できます。ほとんどの最新POSシステムには互換性のあるスキャナーが既に含まれています。スキャナーは顧客のウォレットアプリからの数字バーコードを読み取る必要があります。
どのウォレットがUPMに対応していますか?
UPMはすべてのAlipay+パートナーウォレット(Alipay CN、Alipay HK、KakaoPay、GCash、Touch 'n Go、TrueMoney)に対応しています。利用可能状況は地域によって異なります。
決済失敗をどのように処理しますか?
決済失敗は課金レスポンスで即座に返されます。failure_codeフィールドで詳細を確認してください(例:insufficient_fund、payment_rejected、payment_expired)。明確なエラーメッセージを表示し、再試行を許可してください。
UPMはMPMより高速ですか?
はい、UPMは通常より高速です。顧客のアプリから事前生成されたバーコードをスキャンするため、QRコードを生成したり顧客のスキャンを待つ必要がありません。一般的な完了時間は5〜15秒です。
関連リソース
- Alipay+ 概要 - Alipay+エコシステム完全ガイド
- Alipay+ MPM - マーチャント提示モード
- QR決済 - その他のQR決済方法