メインコンテンツへスキップ

Alipay+ ユーザー提示モード(UPM)

POS端末で顧客の決済バーコードをスキャンすることで、Alipay+ユーザーからの店舗決済を受け付けます。

概要

ユーザー提示モード(Bスキャン C)では、加盟店が顧客のウォレットアプリに表示されたバーコードまたはQRコードをスキャンします。これは、POS端末にバーコードスキャナーを備えた高回転の小売環境に最適です。

主な機能:

  • 迅速なチェックアウト - 数秒でスキャンして処理完了
  • 複数のウォレット - 12以上のAlipay+パートナーウォレットからの決済に対応
  • 馴染みのあるフロー - 商品バーコードのスキャンと同様の操作
  • 大量取引対応 - 繁忙な小売環境に最適
  • クロスボーダー対応 - 海外からの旅行者の決済に対応

対応地域

地域通貨最小金額最大金額APIバージョン
タイTHB฿20.00฿150,000.002017-11-02
シンガポールSGD$1.00$20,000.002017-11-02

対応ウォレット

ウォレットタイシンガポール
Alipay CN
Alipay HK
KakaoPay
GCash
Touch 'n Go
TrueMoney

仕組み

決済フロー:

  1. 顧客がウォレットアプリを開く
  2. 顧客が決済バーコード/QRコードを表示
  3. 加盟店がPOS端末でバーコードをスキャン
  4. バーコードで自動的に課金が作成される
  5. 決済が即時処理される
  6. 両者が確認を受け取る

一般的な完了時間: 5〜15秒

実装方法

バーコードで課金を作成

UPMでは、スキャンしたバーコードで直接課金を作成します。

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"

レスポンスの処理

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年以内
  • 部分返金: 対応

ベストプラクティス

  1. スタッフへの教育 - 顧客にバーコードの提示を促す方法をスタッフに周知
  2. 優れたスキャナー - 信頼性の高いバーコードスキャナーを使用
  3. エラー処理 - 明確なエラーメッセージを表示
  4. 迅速なタイムアウト - 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_fundpayment_rejectedpayment_expired)。明確なエラーメッセージを表示し、再試行を許可してください。

UPMはMPMより高速ですか?

はい、UPMは通常より高速です。顧客のアプリから事前生成されたバーコードをスキャンするため、QRコードを生成したり顧客のスキャンを待つ必要がありません。一般的な完了時間は5〜15秒です。

関連リソース