TrueMoneyウォレット BETA

このページで扱うトピック

Omiseは、顧客がTrueMoneyウォレットから直接支払いを行えるようにするための一連のAPIを提供しています。TrueMoneyウォレットを使用すると、カードや決済の詳細を入力する必要がなくなり、顧客は短時間で決済を終えることができます。この機能を利用するには、顧客は携帯電話番号をTrueMoney ウォレットにご登録いただく必要があります。このガイドでは、この支払い方法の決済フローと基本的な実装方法について説明します。

本サービスは、現在Omise Thailandで契約中の加盟店のみご利用いただけます。

TrueMoney は現在クローズドベータ版です。TrueMoneyウォレットのご利用に関心がある事業者様は、 こちらのフォームに詳細を記入し送付してください。本サービスがご利用可能となりましたら、最新情報をご提供いたします。

決済フロー

TrueMoneyウォレットによる決済を選択したお客様は、ワンタイムパスワード(OTP)を使用した「リダイレクト」決済フローが適用されます。顧客が携帯番号を入力すると、ワンタイムパスワードが携帯電話に送信され、決済金額を承認、確認するように求められます。完了すると顧客は加盟店のWebサイトにリダイレクトされます。

  1. 決済時に、決済方法としてTrueMoneyウォレットをご選択いただきます。
  2. 携帯番号を入力した後、携帯に送信されたワンタイムパスワード(OTP)を入力します。
  3. 顧客が実際にする作業は、決済情報の確認とワンタイムパスワード(OTP)の入力のみとなります。

実装

通常、TrueMoneyウォレットの課金作成は以下のようなステップとなります。

  1. ソースAPI を使用して新しい決済ソースを作成する。
  2. 最初のステップで作成したソースIDを渡し、課金APIを使用して新しい課金を作成する。

これは、パブリックキー(公開鍵)を使用してクライアント側(ユーザのブラウザや携帯電話など)で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_urihttps://pay.omise.co/...)に指定されているURLにリダイレクトして、ワンタイムパスワード(OTP)を入力します。

TrueMoney Authorize URI Live

テストモードでは、URLにアクセスし課金を手動で成功または失敗とマークすることで、一連の動作をシミュレートできます。

TrueMoney Authorize URI Test

ステータスを確認する

Webhooks

課金完了時の通知を受ける際には、イベントAPIを使用してください。WebhooksURLが設定されると、TrueMoneyの課金完了のたびに、charge.completeというイベント名のリクエストが送信されます。詳細はWebhooksをご覧ください。

課金が失敗した際は、課金オブジェクトのfailure_codefailure_messageをチェックし詳細をご説明ください。

code Description
payment_rejected 特段の理由なく、TrueMoneyサービスによって課金が拒否されました。
failed_processing 決済処理が失敗しました。
invalid_account 携帯電話番号がTrueMoneyアカウントでご利用いただけません。
insufficient_fund 決済に必要な残高が不足しています。

failure_codefailure_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バージョンを参照してください。

Omiseは、お客様のウェブサイト全般における利便性を向上するためにクッキーを利用し、お客様のアクセス、閲覧履歴に関する情報を収集します。 当社のウェブサイトを閲覧し続けることにより、お客様は当社のプライバシーポリシーに同意することとします。 詳細はこちら