TrueMoneyウォレット BETA
このページで扱うトピック
Omiseは、顧客がTrueMoneyウォレットから直接支払いを行えるようにするための一連のAPIを提供しています。TrueMoneyウォレットを使用すると、カードや決済の詳細を入力する必要がなくなり、顧客は短時間で決済を終えることができます。この機能を利用するには、顧客は携帯電話番号をTrueMoney ウォレットにご登録いただく必要があります。このガイドでは、この支払い方法の決済フローと基本的な実装方法について説明します。
本サービスは、現在Omise Thailandで契約中の加盟店のみご利用いただけます。
決済フロー
TrueMoneyウォレットによる決済を選択したお客様は、ワンタイムパスワード(OTP)を使用した「リダイレクト」決済フローが適用されます。顧客が携帯番号を入力すると、ワンタイムパスワードが携帯電話に送信され、決済金額を承認、確認するように求められます。完了すると顧客は加盟店のWebサイトにリダイレクトされます。
- 決済時に、決済方法としてTrueMoneyウォレットをご選択いただきます。
- 携帯番号を入力した後、携帯に送信されたワンタイムパスワード(OTP)を入力します。
- 顧客が実際にする作業は、決済情報の確認とワンタイムパスワード(OTP)の入力のみとなります。
実装
通常、TrueMoneyウォレットの課金作成は以下のようなステップとなります。
これは、パブリックキー(公開鍵)を使用してクライアント側(ユーザのブラウザや携帯電話など)でTrueMoneyウォレット・ソースの作成が行われ、シークレットキー(秘密鍵)を使用してサーバー側で課金作成が行われることを前提としています。このフローをクライアント側で実装する際は、Omise.jsまたはOmiseモバイルSDK のいずれかを使用することをお勧めします。
注: Omise.jsの統合は近日中に公開されます。
推奨はされないものの、サーバー側でソースの作成と課金の両方が行われる必要がある場合、課金APIを使用してソースの作成と課金を行うことができます。
クライアント側のソースを作成する
TrueMoneyウォレットの決済方法は、ソースの種類として実装されています。 次のコードは、新しいTrueMoneyウォレットソースを作成する方法を示しています。
注: 以下の例では$OMISE_PUBLIC_KEY
環境変数をご自身のパブリックキー(公開鍵)が含まれるように設定しておく必要があります。
curl https://api.omise.co/sources \
-X POST \
-u $OMISE_PUBLIC_KEY: \
-d "amount=100000" \
-d "currency=thb" \
-d "type=truemoney" \
-d "phone_number=11111111111"
{
"object": "source",
"id": "src_test_5fxf2nn7bvpkrutcyiu",
"livemode": false,
"location": "/sources/src_test_5fxf2nn7bvpkrutcyiu",
"type": "truemoney",
"flow": "redirect",
"amount": 100000,
"currency": "thb",
"phone_number": "11111111111"
}
TrueMoney課金を作成する
上記で返されたオブジェクトのid
属性の値を利用して、新しい課金に対するソース
パラメータの値として渡します。この課金には、課金承認のためにサイトを離れる顧客が含まれるため、パラメータreturn_uri
も渡す必要があります。課金完了時に顧客がリダイレクトされるサイトのURLはこちらです。
注: この例では、ご自身のシークレットキー(秘密鍵)が含まれるよう、$OMISE_SECRET_KEY
環境変数を設定しておく必要があります。また、$ SOURCE_ID
には上記のid
属性の値を含める必要があります。
curl https://api.omise.co/charges \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "amount=100000" \
-d "currency=thb" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source=$SOURCE_ID"
{
"object": "charge",
"id": "chrg_test_5fxf2ntltpp1th6yawp",
"livemode": false,
"location": "/charges/chrg_test_5fxf2ntltpp1th6yawp",
"amount": 100000,
"currency": "thb",
"funding_amount": 100000,
"funding_currency": "thb",
"description": null,
"metadata": {
},
"status": "pending",
"capture": true,
"authorized": false,
"schedule": null,
"reversed": false,
"reversed_at": null,
"expires_at": "2019-05-24T08:09:48Z",
"expired": false,
"expired_at": null,
"voided": false,
"paid": false,
"paid_at": null,
"transaction": null,
"refunded": 0,
"refunds": {
"object": "list",
"from": "1970-01-01T00:00:00Z",
"to": "2019-05-17T08:09:48Z",
"offset": 0,
"limit": 20,
"total": 0,
"order": "chronological",
"location": "/charges/chrg_test_5fxf2ntltpp1th6yawp/refunds",
"data": [
]
},
"return_uri": "http://example.com/orders/345678/complete",
"failure_code": null,
"failure_message": null,
"card": null,
"customer": null,
"ip": null,
"dispute": null,
"created": "2019-05-17T08:09:48Z",
"source": {
"object": "source",
"id": "src_test_5fxf2n7baulmpak09c2",
"type": "truemoney",
"flow": "redirect",
"amount": 100000,
"currency": "thb",
"phone_number": "11111111111"
},
"disputable": false,
"capturable": false,
"reversible": false,
"refundable": false,
"reference": "pay2_test_5fxf2ntr10o6ibucntm",
"authorize_uri": "https://pay.omise.co/payments/pay2_test_5fxf2ntr10o6ibucntm/authorize"
}
サーバー側のソースと課金を作成する
課金作成時にソースを指定しなければならない場合(サーバ側)、課金APIを利用することで、一度のAPIコールでソースの作成と課金を行うことができます。
curl https://api.omise.co/charges \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "amount=100000" \
-d "currency=thb" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source[type]=truemoney" \
-d "source[phone_number]=11111111111"
{
"object": "charge",
"id": "chrg_test_5fxf2o3fifulprgiqf7",
"livemode": false,
"location": "/charges/chrg_test_5fxf2o3fifulprgiqf7",
"amount": 100000,
"currency": "thb",
"funding_amount": 100000,
"funding_currency": "thb",
"description": null,
"metadata": {
},
"status": "pending",
"capture": true,
"authorized": false,
"schedule": null,
"reversed": false,
"reversed_at": null,
"expires_at": "2019-05-24T08:09:49Z",
"expired": false,
"expired_at": null,
"voided": false,
"paid": false,
"paid_at": null,
"transaction": null,
"refunded": 0,
"refunds": {
"object": "list",
"from": "1970-01-01T00:00:00Z",
"to": "2019-05-17T08:09:50Z",
"offset": 0,
"limit": 20,
"total": 0,
"order": "chronological",
"location": "/charges/chrg_test_5fxf2o3fifulprgiqf7/refunds",
"data": [
]
},
"return_uri": "http://example.com/orders/345678/complete",
"failure_code": null,
"failure_message": null,
"card": null,
"customer": null,
"ip": null,
"dispute": null,
"created": "2019-05-17T08:09:49Z",
"source": {
"object": "source",
"id": "src_test_5fxf2o2v84ly5nu9yyf",
"type": "truemoney",
"flow": "redirect",
"amount": 100000,
"currency": "thb",
"phone_number": "11111111111"
},
"disputable": false,
"capturable": false,
"reversible": false,
"refundable": false,
"reference": "pay2_test_5fxf2o3j2moe92owpy8",
"authorize_uri": "https://pay.omise.co/payments/pay2_test_5fxf2o3j2moe92owpy8/authorize"
}
承認
上記のAPIコールから作成された課金オブジェクトには、属性authorize_uri
が含まれます。OTP入力フォームを含むTrueMoneyが運営するWebページのURLはこちらです。
ライブモードでは、ユーザーをauthorize_uri
(https://pay.omise.co/...
)に指定されているURLにリダイレクトして、ワンタイムパスワード(OTP)を入力します。
テストモードでは、URLにアクセスし課金を手動で成功または失敗とマークすることで、一連の動作をシミュレートできます。
ステータスを確認する
Webhooks
課金完了時の通知を受ける際には、イベントAPIを使用してください。WebhooksURLが設定されると、TrueMoneyの課金完了のたびに、charge.complete
というイベント名のリクエストが送信されます。詳細はWebhooksをご覧ください。
課金が失敗した際は、課金オブジェクトのfailure_code
とfailure_message
をチェックし詳細をご説明ください。
code | Description |
---|---|
payment_rejected |
特段の理由なく、TrueMoneyサービスによって課金が拒否されました。 |
failed_processing |
決済処理が失敗しました。 |
invalid_account |
携帯電話番号がTrueMoneyアカウントでご利用いただけません。 |
insufficient_fund |
決済に必要な残高が不足しています。 |
failure_code
とfailure_message
の詳細については、課金APIを確認してください。
マニュアル
課金API で説明されているように、id
を取得することで、status
属性、また課金ステータスの確認も可能です。
curl -s https://api.omise.co/charges/$CHARGE_ID \
-u $OMISE_SECRET_KEY: | jq -M .status
"pending"
返金
TrueMoneyウォレットの課金は、課金を作成した当日に限り、無効にすることができます。返金は、課金作成から30日以内のみ可能です。
当日のキャンセル (無効) |
翌日のキャンセル (返金) |
|||
---|---|---|---|---|
決済方法 | 全額 | 一部 | 全額 | 一部 |
TrueMoney Wallet (Wallet Balance) |
✅ | ✅ | ✅ | |
Bank Account | ✅ | ✅ | ✅ | |
Pay Next | ✅ | ✅ | ||
Pay Next Extra | ✅ | ✅ |
TrueMoneyウォレットの課金の返金方法については、返金APIドキュメントを参照してください。
TrueMoneyウォレットを有効化する
本番モードでの取引でAPIを使用する前に、利用規約をご確認ください。
最低限必要なAPIのバージョンは2017-11-02
です。 APIバージョンの更新に関するガイダンスについては、APIバージョンを参照してください。