1. 機能別 よくある質問一覧
よくある質問とその回答をカテゴリ別にまとめました。
左メニューまたは下部リストより、カテゴリを指定してご覧ください。
よくある質問とその回答をカテゴリ別にまとめました。
左メニューまたは下部リストより、カテゴリを指定してご覧ください。
トランザクショントークン CREATE リクエストは、クレジットカード情報を加盟店サイト内に入力させ、本サービスのAPIに送信します。
このリクエストを行うには PCI DSS に準拠している必要があります。
PCI DSSに準拠していない場合はこのリクエストを行うことはできませんのでご注意ください。
PCI DSSに準拠しておりトランザクショントークン CREATE リクエストの利用をご希望の場合は、弊社までご連絡ください。
トランザクショントークンオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
トランザクショントークンを作成した後はトランザクショントークンIDを指定して課金 / 定期課金を行ってください。
{secret}
部分){jwt}
部分)curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
payment_type | string | 支払い手段を参照 |
type | string | トークンの種類を参照 特定の支払い手段により種類が制限される場合あり 繰り返しに設定されていて、アカウントに無限に課金可能なトークンを作成する権限がない場合は、 usage_limit パラメーターを指定する必要あり |
usage_limit | string | このトークンがリカーリングトークンの場合に使用できる頻度 無限に課金可能なリカーリングトークンを作成する権限がある場合は空白可 |
string | メールアドレス ※オンライン決済は任意 | |
ip_address※ | string | ※we_chat_online(web, http_get)の場合 消費者のデバイスのIPv4アドレス |
metadata | object | メタデータを参照 |
metadata.univapay-reference-id | string (フリーフォーマット) | 任意の値 |
metadata.univapay-customer-id | string (UUID) | 顧客ID |
data | object | 支払い手段ごとに必要な情報が異なり、下記記載箇所よりそれぞれ詳細のパラメータを参照card (カードデータ), konbini (コンビニ払いデータ), online (オンライン払いデータ)のいずれか |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.cardholder | string | クレジットカードの所有者の名前 |
data.card_number | string | カード番号 |
data.exp_month | string | 有効期限(月) |
data.exp_year | string | 有効期限(年) |
data.cvv | string | CVV値 |
data.line1 | string | 住所1 |
data.line2 | string | 住所2 |
data.state | string | 住所の州/地域/都道府県 |
data.city | string | 住所の市町村区 |
data.country | string | 国 (ISO 3166-1形式のアルファベット2文字の国コード) |
data.zip | string | 郵便番号 |
data.phone_number.country_code | string | 電話番号の国コード |
data.phone_number.local_number | string | 電話番号 |
cvv_authorize.enabled | boolean | セキュリティコード認証機能が有効かどうか デフォルト値:false |
cvv_authorize.currency | string (ISO-4217) | 認証を行う通貨 デフォルト値:加盟店の基本通貨 |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.customer_name | string | 消費者名 |
data.phone_number.country_code | string | 電話番号の国コード 日本の番号のみ可能 |
data.phone_number.local_number | string | 消費者の電話番号 |
data.convenience_store | string | 消費者が支払いを選択したコンビニエンスストアseven_eleven , family_mart , lawson , mini_stop , seico_mart , pay_easy , circle_k , sunkus , daily_yamazaki , yamazaki_daily_store のいずれか |
data.expiration_period | string (ISO-8601 Duration) | 支払いの有効期限(作成日から最短30分最大60日間) デフォルトの値:30日間 例: P7D ※課金:Createで支払い期限日時を指定した場合はそちらを優先 |
data.expiration_time_shift | string (ISO-8601 Time with Timezone) | expiration_period を考慮した上で設定する時間例: expiration_period を追加した後の有効期限が2023-06-01T15:00:00+09:00の場合、expiration_time_shift を09:00:00+09:00と設定すると有効期限は2023-06-01T09:00+09:00※このフィールドが設定されている場合、 expiration_period は1日以上※コンビニ決済の場合のみ利用可能 ※セブンイレブン、セイコーマート/他支払(サークルK/サンクス/ペイジー)は時刻指定が利用できないためこのフィールドは無効 |
オンライン払いを選択した場合、課金を作成後QR事業者側の支払い画面を呼び出すためのURLが必要です。
イシュアトークンを取得するリクエストを別途送る必要があります。
詳しくはこちらをご覧ください。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.brand | string | 使用する支払いゲートウェイalipay_online (Alipay China),alipay_plus_online (Alipay+),pay_pay_online (Pay Pay),we_chat_online (WeChat Pay),d_barai_online (d払い)のいずれか |
data.call_method | string | クライアントが要求した実行方法http_get , http_post , sdk , web , app のいずれかsdk :ペイメントプロバイダーが提供するSDKで直接使用することweb :特定のAPIを拡張した特殊なブラウザ環境で直接使用することapp :ペイメントプロバイダーが提供するSDKのネイティブアプリ環境での利用http_get またはhttp_post を使用すると、issuer_token を新しいブラウザウィンドウまたは適切な対応するHTTPメソッドのiframe内で直接実行することが可能以下のブランドでは、以下の呼び出し方法に対応 – alipay_online: http_get , http_get_mobile , sdk (miniapp), app – alipay_plus_online: http_get , http_get_mobile , sdk (miniapp), app – pay_pay_online: http_post – we_chat_online: http_get (H5), sdk (miniapp), app (in-app), web (official account)※ http_get (H5)の場合、リクエスト前に利用予定のウェブブラウザのドメインをサポートデスクへ連絡する必要あり– d_barai_online: http_post |
data.user_identifier | string | 通常、ペイメントゲートウェイアプリケーションによって提供される、消費者のデバイスを一意に識別することができる消費者固有の識別子 不正行為を防止するために一部の決済事業者が要求しているもの これらのコールメソッドの以下のブランドでは、消費者固有の識別子の提供が必要 – we_chat_online : sdk (miniapp), web (official account) |
data.os_type | string | 使っているモバイルデバイスのOSandroid ,ios のいずれかこれらのコールメソッドの以下のブランドでは提供が必要 – alipay_plus_online : http_get_mobile , app |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.brand | string | 使用する支払いゲートウェイaozora_bank GMOあおぞらネット銀行のみ指定可能 |
curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}
'
--header 'Content-type: application/json'
--data "{
"payment_type": "card",
"email": "test@test.com",
"type":"recurring",
"data": {
"cardholder": "TARO YAMADA",
"card_number": "4000020000000000",
"exp_month": "12",
"exp_year": "2099",
"cvv": "123",
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": "1",
"local_number": "8029854583",
"cvv_authorize.enabled":"true"
},
"currency": "JPY"
}
}"
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-25T03:58:49.321896Z",
"updated_on": "2024-06-25T03:58:49.321896Z",
"last_used_on": null,
"data": {
"card": {
"cardholder": "TARO YAMADA",
"exp_month": 12,
"exp_year": 2099,
"card_bin": "400002",
"last_four": "0000",
"brand": "visa",
"card_type": "credit",
"country": "US",
"category": null,
"issuer": "RIVER VALLEY CREDIT UNION",
"sub_brand": "none"
},
"billing": {
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": 1,
"local_number": "8029854583"
}
},
"cvv_authorize": {
"enabled": false,
"status": null,
"charge_id": null,
"credentials_id": null,
"currency": null
},
"cvv_authorize_check": {
"status": null,
"charge_id": null,
"date": null
}
}
}
このページは初期設定が完了し、ウィジェットの概要が通読されていることを前提に作成しています。
「ウィジェットの概要」で説明の通り、支払い方法の選択次第で「決済」でなく「申込」がなされる可能性があるため、このページでは、ウィジェットで行われる「決済または申込」を「処理」と表現します。
ウィジェットをHTMLで設置するには、1行の<script>タグと、1つの<form>タグを用います。
<form>タグの中には<span>要素でパラメータ(各種フィールドとその値)を記述します。
アプリトークンは非常に長く規則性のない文字列なので、事前に管理画面でアプリトークンを控えるか、ジェネレータからのコピーを推奨します。
以下は、「支払う」と表示されたボタンでの、1000円を決済するためのウィジェットの設置例です。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<form action="<任意のURL>">
<span data-app-id="<アプリトークンID>"
data-txt="支払う"
data-checkout="payment"
data-amount="1000"
data-currency="jpy"
data-auto-submit="true"
></span>
</form>
処理の完了後、form action= で指定した”<任意のURL>”に対し、以下をsubmitします。
data-checkout-type=“token”
指定時には univapayTokenId
)data-checkout-type=“payment”
指定時には univapayChargeId
、data-token-type=“subscription”
指定時には univapaySubscriptionId
)処理結果によって、消費者の画面遷移をコントロールしたい場合は、これらを取得するプログラムを作成してください。
パラメータ(基本動作)で解説の通り、data-auto-submit
を利用することにより、完了ボタンを押してウィジェットを閉じた時、ウィジェットが含まれるフォームを自動でsubmit
する設定も可能です。
上記を利用して、spanタグの外側に設置したformタグのaction属性に指定したURLに遷移するようにすることも可能です。
Javascriptでウィジェットを設定する際は、<script>タグを利用することで、HTMLファイル内にJacaScriptのコードを埋め込んでウィジェットを設置することもできます。
以下は、「支払う」と表示されたボタンでの、1000円を決済するためのウィジェットの設置例です。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
var checkout = UnivapayCheckout.create({
appId: "<TOKEN>",
checkout: "payment",
amount: 100,
currency: "jpy",
cvvAuthorize: true,
});
var button = document.querySelector("#univapay-payment-checkout");
button.onclick = function () {
checkout.open();
};
function handleSubmit() {
event.preventDefault();
};
</script>
まず、ウィジェットを含むページに次の行をHTMLでの設置と同様に含める必要があります。
<script src="https://widget.univapay.com/client/checkout.js"></script>
HTMLでの設置とは異なり、自動的にページ上にボタンは作成されませんので、<form>タグと<button>タグで送信するための記述をします。
submitイベントが発火に反応して、onSubmitに指定された関数”handleSubmit()”を呼び出します。
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
<!--
タグ内にJavaScriptの記述をします
内容は以下で説明
-->
</script>
次に、UnivapayCheckout.createを呼び出す記述をします。
例えば、1000円の支払いを処理するウィジェット・オブジェクトを作成するには、以下を記述する必要があります。
var checkout = UnivapayCheckout.create({
appId: "<TOKEN>",
checkout: "payment",
amount: 1000,
currency: "jpy",
});
次に、<button>タグのonclick関数の処理を記述します。UnivapayCheckout.createによって返されたオブジェクトでopen関数を呼び出すことにより、ウィジェットを開きます。
var button = document.querySelector("#univapay-payment-checkout");
button.onclick = function () {
checkout.open();
};
最後に、formの送信を防ぐため、<button>要素をクリックしてsubmitイベントが発火した際の関数handleSubmitの記述をします。
function handleSubmit() {
event.preventDefault();
};
以下パラメータにより、ウィジェットのデザインが変更可能です。
その他、どんな処理をさせるか等の動作詳細は、左メニューから各種パラメータを参照のうえ、実装してください。
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用フィールド | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-text | テキスト(無制限) | ウィジェットを展開するためのボタン内テキスト | Pay with UnivaPay |
data-size | 半角英 | ウィジェットを展開するためのボタンサイズ 指定可能な値: small ,normal ,large | |
data-class | 半角英数 | ウィジェットを展開するためのボタンのclass属性に付与する値 webサイト側の style を記述を適用可能 | |
data-style | 半角英数 | ウィジェットを展開するためのボタンのstyle属性に付与する値 webサイト側の style を適用せず、インラインでstyle記述したい場合に利用 | |
data-hover-style | 半角英数 | ウィジェットを展開するためのボタンのhover時のstyle(インライン記述) | |
data-header header | テキスト(無制限) | ウィジェットのヘッダーに表示したいテキスト | 本サービス名 |
data-title title | テキスト(無制限) | ウィジェットのサブヘッダーに表示したい店舗名 | 管理画面での設定に依存 |
data-description description | テキスト(無制限) | ウィジェットのサブヘッダーの、店舗名の下に表示したいテキスト | 管理画面での設定に依存 |
data-submit-button-text submitButtonText | テキスト(無制限) | ウィジェットの「支払い」ボタンに、代わりに表示したいテキスト | 支払う |
処理の結果は、JSONデータとして管理画面の「Webhook」セクションで指定されたURLにPOSTされます。
「リファレンス > ウェブフック」を参照して、POSTされたデータを取得して注文状況などを更新するスクリプトを作成してください。
ウィジェットタグ内のソースコードに下記の関数を定義しておくことで、各イベントが発生した時にその内容を含めた通知を実行します。
処理結果に応じて元のページの表示内容や、遷移先をコントロールしたい場合は、こちらか、フォームタグからsubmitされる値を利用してください。
イベント | 内容 |
---|---|
Opened (univapay:opened) | 決済フォームを開くことで発生するイベントです。その他の情報は含みません。 |
Closed (univapay:closed) | 決済フォームを閉じることで発生するイベントです。他の情報は含みません。 |
Success (univapay:success) | 決済が成功すると発生するイベントです。生成されたリソースのIDと処理の詳細情報が含まれます。 |
Error (univapay:error) | いずれかの段階で処理が失敗することで発生するイベントです。生成されたリソースのIDが含まれます。 |
Token created (univapay:token-created) | トランザクショントークンが作成されたときに発生するイベントで、トークンの詳細情報を含みます。定期課金やリカーリング課金のように作成済のトランザクショントークンを利用して決済をする場合は発生しません。 |
Charge created (univapay:charge-created) | 課金が作成されたときに発生するイベントで、課金の詳細情報が含まれています。成功したかどうかに関わらず発生します。 |
Subscription created (univapay:subscription-created) | 定期課金が作成されたときに発生するイベントで、定期課金の詳細情報が含まれています。成功したかどうかに関わらず発生します。 |
Validation error (univapay:validation-error) | このイベントには各フィールドにエラーがある場合に発生します。エラーがない場合、または各フィールドがまだ選択されていない場合、オブジェクトにはオブジェクトは空白になります。 |
<script>
window.addEventListener("univapay:success", (e) => { console.info("Success event", e) }, false);
window.addEventListener("univapay:token-created", (e) => { console.info("Token event", e) }, false);
window.addEventListener("univapay:charge-created", (e) => { console.info("Charge event", e) }, false);
window.addEventListener("univapay:subscription-created", (e) => { console.info("Subscription event", e) }, false);
window.addEventListener("univapay:validation-error", (e) => { console.error("Validation error event", e) }, false);
</script>
ここでは、特定のオブジェクトに紐づかない項目について説明します。
APIとは、様々な決済手段を提供する RESTfulな HTTPS インターフェースです。
API を呼び出す為に、直接 HTTP リクエストを実行することも可能ですが、いくつかの開発言語向けにライブラリを提供しています。これらは様々なベストプラクティスや、型情報を提供するので、APIの統合をより簡単に行うことができます。これらの使用例は、本ドキュメントのリソースに対する呼び出し例として記載されています。
画面遷移をシンプルにする等の理由で、加盟店サイト内に独自の決済フォームを設けたい場合は、API連携を行ってください。
クレジットカード情報を加盟店サイト内に入力させ、APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSに準拠することが必要です。
PCI DSSに準拠していない場合、カード情報は当社準備の決済フォームを利用する構築をしてください。
PCI DSSに準拠している場合、トークン化から課金、返金までの全てのリクエストを本サービスのAPIに送信することが可能です。
APIはシークレットトークンなどの機密情報を含むためCORSでの実行を許可していません。
APIを呼び出す場合はサーバーアプリケーションから呼び出すよう実装してください。
ここでは、API連携開発をシンプルにする「SDK」について説明します。
APIとの連携開発を行う際は、本ドキュメントを参照して設計・開発してください。
開発言語が対応しているようであれば、SDK(Software Development Kit)の利用を推奨します。
SDKは、APIを利用するためのライブラリです。GitHub上で公開しています。
利用フローについては、Githubの「Readme」を参照してください。
GitHubは、ソフトウェア開発プロジェクトのためのソースコード管理サービスです。
GitHubの公式言語は英語で、アカウント設定画面から言語を日本語に指定することはできません。以降、最低限必要なアクションを日本語で解説します。
SDKの組込において技術的な質問がある場合や、ドキュメントへのフィードバックがある場合は、該当のリポジトリ※から「Issues」を選択し、当社エンジニアに質問・要望を日本語または英語で送信してください。
リポジトリとは:
「格納庫」を意味する言葉で、Githubでは組織またはプロジェクトの階層下に設置されるサブプロジェクトのような存在です。例:https://github.com/univapay/univapay-java-sdk
この場合は「univapay-java-sdk」がリポジトリです。
本サービスのAPIは、認証の為に JWT(JSON Web Token) を利用しています。
ヘッダで認証を行い、ペイロード部分にリクエストを記述するのが基本的な使い方です。
はじめに、ガイドの初期設定に従い、アプリケーショントークン(以降「アプリトークン」)を作成してください。
アプリケーショントークンは、「トークン」と「シークレット」の2部で構成されます。
シークレットは、アプリトークンを作成した時だけ表示されます。
表示されたシークレットは、くれぐれも忘れずに控えるようにしてください。
また、このシークレットは機密情報として取り扱う必要があります。
消費者のブラウザ上で実行されるようなフロントエンドアプリケーションのコードの中にシークレットを記述したり、インターネットで第三者が閲覧できる状態にしないでください。
レポートの生成、ブラウザ以外の経路での課金の作成など、サービスのバックエンドでの処理で利用されることを想定している、たいへん大きな権限を行使できる情報です。
当社では、加盟店さまのシークレットの管理上の問題に起因する事故について、一切の責任を負いかねます。
以降、全てのページで、HTTPリクエストヘッダのAuthorization
に記述する
{jwt}
」{secret}
」と、それぞれ記述します。
// シークレットなし
Bearer {jwt}
// シークレットあり
Bearer {secret}.{jwt}
管理画面からは、2種類のアプリトークンを作成可能です。
それぞれの意味合いと役割を表にしたものが以下です。
名前 | アプリトークンの権限 | シークレットの要否 |
---|---|---|
加盟店 | トランザクショントークンと課金の作成のみ不可 | 必要 |
店舗 | その「店舗」に対する全てのリクエストが可能 | ブラウザ上では不要 バックエンドからAPIへリクエストする際には必要 |
ウィジェットやインラインフォーム出力リクエストは、登録したドメインからであることを認証しています。
管理画面で「店舗」のアプリトークンを作成する際には、ドメインを登録してください。
本サービスのAPIには、レート制限と、リソース制限の2種類の制限があります。
また、このレート制限とは別に、クレジットカード決済において同一の
の組み合わせで、30秒以内に課金処理すると重複エラー(エラーコード:311)にを起こす仕様があります。
これは、重複課金を防止する事を目的としています。
本サービスのAPIは、アクセス先のリソースとパスに応じて「レート制限」を設定しています。
APIへのリクエスト元は、リクエストを行う度に「バーストレート」と呼ばれるものをレスポンスで受け取ります。
バーストレートは一度に送信できるリクエストの残高のような役割を果たします。
バーストレートは一定時間で補充されますが、使い果たした状態でリクエストを行うと、Too Many Requests
のエラーが発生します。
このバーストレートは、リクエストに対するレスポンスのヘッダで取得できます。
以下は、イグザクトバーストレートの上限が10、ルートバーストレートの上限が30に設定されたAPIへ、1件だけGETのリクエストを送った直後のレスポンス例です。
X-Remaining-Requests-Exact: 9
X-Remaining-Requests-Route: 29
X-Requests-Per-Minute-Exact: 120
X-Requests-Per-Minute-Route: 1200
意味合いとしては、以下の通りです。
イグザクトバーストレートの上限が10であるため、1件のリクエストは許容され、イグザクトバーストレートが「9」、パスバーストレートが「29」に、それぞれ減算されレスポンスされています。
イグザクトバーストレートは、0.001(1ミリ)秒ごとに0.02(この場合は1分あたり上限÷1分間のミリ秒換算=1,200/60,000)だけ回復します。
つまり、仮に次回10件のリクエストをするなら、イグザクトバーストレートが10まで回復するのを待つ必要があり、最短で0.05秒(1/0.02=50ミリ秒)の待機が必要になるということです。
なお、元のイグザクトバーストレートの上限が10であるため、0.05秒以上の待機をしても、上限の10以上まで増えることはありません。
各種レート制限には規定値が設定されており、規定値のあるものが、リクエストへのレスポンスのヘッダに出力されます。
課金の作成に関するリクエストを行う際にカウントされます。
対象API | X-Remaining-Requests (バーストレート) | X-Requests-Per-Minute (1分あたりのリクエスト上限) |
---|---|---|
POST /tokens POST /charges POST /subscriptions | 上限:100 | 3,000/分 |
これらのリクエストに対して
が、レスポンスされます。
後述する標準レート制限が同時に適用されることはなく、レスポンス内容も異なります。
標準レート制限は、以下2つに分類されます。
なお、全てのリクエストに対して
が、レスポンスされます。
また、全てのリクエストでルートバーストレートとイグザクトバーストレートの両方がカウントされます。
この制限が課金レート制限と同時に適用されることはなく、レスポンス内容も異なります。
アクセスするリソースの「パス」に対しての制限です。例えば
GET /charges/{charge_id_1}
GET /charges/{charge_id_2}
という2回のリクエストは、「/charges
」という同一のパスに対するものであるため、1つのパスに対し2回リクエストしたとカウントされます。
本サービスは全てのパスに対し、同一のルートバーストレートを設定しています。
対象 | X-Remaining-Requests-Route (ルートバーストレート) | X-Requests-Per-Minute-Route (1分あたりのリクエスト上限:ルート) |
---|---|---|
全てのパス | 上限:30 | 1,200 |
イグザクトバーストレートは、Exact(完全一致)の名の通り、リソースIDやクエリ文字列も含めて完全に一致するパスに対して適用されます。例えば
GET /charges/{charge_id_1}
というリクエストがされた場合は、この/charges/{charge_id_1}
に対して、カウントされます。
本サービスは全てのリクエストに対し、同一のイグザクトバーストレートを設定しています。
対象 | X-Remaining-Requests-Exact (イグザクトバーストレート) | X-Requests-Per-Minute-Exact (1分あたりのリクエスト上限:イグザクト) |
---|---|---|
全てのクエリ | 上限:10 | 120 |
1つの加盟店または店舗で、有効にできるリソース数には上限があります。
この上限を超えるリソースの作成リクエストには、ResourceLimitReached
エラーが出力されます。
リソース | 上限 |
---|---|
webhook (ウェブフック) | 20 |
jwt (アプリトークン) | 20 |
パスワードリセットトークン | 5回/日 |
テスト課金 | 1440件/日 |
当社APIからのレスポンスは JSON 形式で返されます。
レスポンスと共に返されるHTTPステータスコードによって、リクエストの結果を判別できます。
APIの呼び出しが失敗すると、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。
詳細はエラーコードを参照ください。
リストとして返されるすべてのリソースはページネートされリソースの作成日の降順でソートされます。
ページあたりのアイテムの件数はデフォルトで10件です。
items
(array):リソースのリストhas_more
(boolean):表示されているリストの最後のリソースの次に更にリソースがあるかどうか{
"items": [],
"has_more": false
}
以下のパラメータを指定することでリストの次のページを取得することが可能です。
limit
(number):10–100の範囲の整数で返却するリソースの数cursor
(string):リソースの取得開始位置を指定する為のリソースのIDcursor_direction
:リソースのソート順で、asc
(昇順) もしくは desc
(降順)例えば、以下のリクエストで最初の100個の課金(Charge)リソースを取得することができます。
curl -h 'Authorization: Bearer {secret}.{jwt}' https://api.univapay.com/charges?limit=100
{
"items": [
{
"id": "4050058b-646a-4fae-8876-babf0dc0c3f0"
...
},
...
{
"id": "34daac6d-63a8-485b-a9ea-75a2e24a258d"
...
}
],
"has_more": true
}
"has_more":true
となっているのでさらにリソースがある事がわかります。
次の100件の課金を取得するには、リストの最後のリソースID34daac6d-63a8-485b-a9ea-75a2e24a258d
をリクエストパラメータのcursor
として指定します。
curl -h 'Authorization: Bearer {secret}.{jwt}' https://api.univapay.com/charges?cursor=34daac6d-63a8-485b-a9ea-75a2e24a258d&limit=100
以下の新規リソース作成時にメタデータ付与 / 既存リソースのメタデータ更新が可能です。
付与できるメタデータの個数に制限はありませんが、リクエストボディ全体は最大256KBです。
メタデータはフラットなJSONとして保存されます。
本サービスと加盟店のシステム上のレコード(消費者や消費者による注文データ等)とを関連付けるために使用することを推奨します。
{
// Other request parameters
"metadata": {
"customer_id": 12345,
"shipping_details": "Customer wants it now"
}
}
ポーリングとは、対象のトランザクションに対してステータスの変化を検出するまで GET リクエストを行い、トランザクションのステータスが変化したタイミングで通知を受け取れる実装方法です。
当社APIのトランザクションは、作成直後に処理中(pending
)のステータスになりますが、処理結果がクレジットカード会社などの決済事業者によって反映されていない状態のため、参考になる情報ではありません。
そのため、決済を行った後、消費者に対して決済の状態をなるべく早く反映させたい場合は、ポーリングの利用を推奨します。
ポーリングではなく、ウェブフックを利用してステータスを取得する場合は、こちらのページを参照してください。
以下4つのリソースに対して、1回のAPIリクエストでトランザクションのステータスを効率的にポーリングする手段を提供しています。
これらのリソースに GET リクエストを送信する時、リクエストURLに対してクエリパラメータで polling
: true
と指定すると、対象のリソースが最終的な状態に遷移するまでAPIの内部でポーリングします。
例)課金の GET リクエスト
https://api.univapay.com/stores/{storeId}/charges/{chargeId}?polling=true
リソースごとの、最終的な状態を表すステータスは下記の通りです。
リソース | 最終的な状態を表すステータス |
---|---|
課金 | Canceled, Error, Failed, Successful |
返金 | Error, Failed, Successful |
キャンセル | Error, Failed, Successful |
定期課金 | ‐ |
最初の状態が、課金:処理中(pending
) / 定期課金:待機中(Unverified
)の場合、何かしらステータスが変化したタイミングで「最終的な状態」とみなし、ポーリングは終了します。
ポーリング利用時は、以下の点に注意してください。
Successful
)になる場合があります。当社APIでは冪等なリクエストを行うことができます。
冪等性は強力な安全性を提供するため、予期しない理由などで1つのリクエストが複数回実行されないようにし、重複決済を防ぐことができます。
冪等性リクエストは POST
、PATCH
リクエストでのみ利用可能です。
特にトランザクショントークン、課金、定期課金、返金などの作成や更新時は、常に冪等性リクエストを使用することを推奨します。
上記、利用可能メソッドのリクエストヘッダに Idempotency-Key
キーを指定することで利用可能です。
※任意の文字列を指定できますが、UUIDのようにランダムに生成された文字列を使用することを推奨します
※冪等性の保証は現在ベストエフォートで提供されており、冪等性のチェックができない状態が発生する可能性があります。
この場合リクエストが処理された後、レスポンスの Idempotency-Status
ヘッダに error
が入ります。
リクエストに冪等性キーが指定された場合、当社APIはまず、以前に同じキーのリクエストが処理されたかを確認します。
※冪等性キーの有効期間は24時間です。同じ冪等性キーの2回目リクエストがこの期限を過ぎてしまった場合、APIはこれを1回目のリクエストとみなして実行してしまいます。
冪等性リクエストのレスポンスには、Idempotency-Status
ヘッダが含まれます。(以下表参照)
値 | 説明 |
---|---|
disabled | 冪等性リクエストをサポートしていない |
successfully_stored | このレスポンスは指定された冪等性キーとして保存され。※ 同じキーを使用した次回のリクエストは、この保存されたレスポンスが返される |
retrieved_idempotent_response | リクエストは実際には処理されず、指定した冪等性キーとして保存されているレスポンスが返された |
error | API内部のキャッシュからレスポンスの取得する時、もしくはキャッシュに処理結果を保存時に何らかのエラーが発生した為、冪等性のチェックができなかった リクエストされた処理は実行されている |
conflicting_key | 指定された冪等性キーが以前に異なるAPIやメソッドで使用されている |
同一リカーリングトークンまたは同一カードに対して同一金額 ※ で連続して課金を行う場合、30秒以下の間隔で実行しようとすると、課金制限によってエラー「400 CHARGE_TOO_QUICK」が発生します。
※定期課金に関して、以下の場合のみ、違う金額でも課金制限が適用されます。
課金制限は、冪等性キーの実装 かつ サポートデスクへの依頼によって、最短1秒に変更可能です。
同一消費者に対して連続で課金できる間隔を短縮したい場合は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
本サービスは主要な通貨で直接決済を行うことができますが、直接決済できない通貨の場合には決済処理時に自動で変換することができます。
ドルの場合セントという2桁の補助単位がありますが、通貨単位のドルと補助単位のセントを合わせて一つの整数にしてリクエストしてください。例えば、10.00
ドルは、1000
と送ります。
直接決済可能な通貨は以下の通りです。
JPY
日本円USD
米ドル※接続しているアクワイアラ(カード会社)やセンター(カード会社と紐づくオンライン処理用のセンター)で許可されている通貨であることが必須です。
加盟店さまで直接決済が利用可能な通貨についてはサポートデスクにお問い合わせください。
直接決済に対応していない通貨を使用する場合、振込先の銀行口座に設定してある通貨に自動的に変換されます。
設定された通貨が使用できない場合は、デフォルト設定である日本円に変換されます。
請求情報には変換後の通貨が使用されますので、別の通貨に変換される場合は、カード利用者に通知するようにして下さい。
2025年3月31日
こちらの期限はラッパー利用店舗も対象です。
※ラッパーとは
旧システムで実装されている決済送信先及び決済リクエストパラメータ変更の必要がなく、新システム側で決済が稼働できる機能。
※https://cp.ccps.jp/の管理画面でご利用できるサービスが対象で、対面QR決済サービスは対象外です。
下記決済サービスに関しては新システムでは取り扱いを行いません。
加盟店さまにメールで通知した案内文はこちらを確認して下さい。
※本文中のURLは一部差し替えを行っています
本ドキュメントは、「国際ブランドが付帯したカードの決済」「PayPayオンライン決済」「Paidy決済」「銀行振込決済」「コンビニ決済」「Alipay Online決済」「Alipay + Online決済」「Wechat Online決済」を行うために、univapay.comドメインで展開する決済システム(以降「本サービス」という)の利用について記述したものす。
本ドキュメントは、加盟店さまやシステム連携先さまに、本サービスを利用開始するまでの設計・開発を可能とするためのものです。
本ドキュメントは、予告なく変更されることがあります。
本ドキュメントは、日本語を使用して作成しています。
他言語で閲覧したい場合は、ブラウザの翻訳機能を利用してください。
問い合わせは、日本語・英語にて受け付けています。
本ドキュメントでは、各プログラミング言語の仕様に準じ、以下の通り表記しています。
設置(記述)方法 | フィールド名のケース | フィールド名の記述例 | 値のケース | 値の記述例 |
---|---|---|---|---|
HTML | kebab-case (ケバブケース) すべて小文字、ハイフン区切りで記述 | data-foo-bar-baz ※始めに data が必要 | snake_case (スネークケース) すべて小文字、アンダースコア区切りで記述 | foo_bar |
JavaScript | lowerCamelCase (ローワーキャメルケース) 1語目のみ小文字始まり、2語目以降は頭文字のみ大文字 | fooBarBaz | 〃 | 〃 |
本ドキュメントでは、上記表のように「メタ構文変数」を、foo
bar
baz
qux
quux
… と表記します。これらを「実際には様々変化し得る部分」と解釈してください。
消費者のクレジットカード情報を加盟店サイト内に入力(通過か保持)させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSに準拠することが必要です。
本サービスは利便性や品質向上のため、隔週月曜日(※)の15時より小規模なシステムアップデートのリリースを行っています。
大幅な変更を伴うリリースはシステム連携先さまや加盟店さまへ事前通知しますが、軽微な更新は通知なく行いますので、ご承知おきください。
※定期リリース日時は改修内容よって、多少前後することがあります
以下以上のバージョンで、本サービスの動作を確認しています。
ブラウザ | バージョン |
---|---|
Google Chrome | 80 |
Microsoft Edge | 80 |
Mozilla Firefox | 72 |
Apple Safari | 13.1 |
Apple Safari(iOS) | 13.4 |
Opera | 67 |
本サービスを利用開始するためのガイドです。
利用開始前に、必ずご通読ください。
本ドキュメントは、「国際ブランドが付帯したカードの決済」「PayPayオンライン決済」「Paidy決済」「銀行振込決済」「コンビニ決済」「Alipay Online決済」「Alipay + Online決済」「Wechat Online決済」を行うために、univapay.comドメインで展開する決済システム(以降「本サービス」という)の利用について記述したものす。
本ドキュメントは、加盟店さまやシステム連携先さまに、本サービスを利用開始するまでの設計・開発を可能とするためのものです。
本ドキュメントは、予告なく変更されることがあります。
本ドキュメントは、日本語を使用して作成しています。
他言語で閲覧したい場合は、ブラウザの翻訳機能を利用してください。
問い合わせは、日本語・英語にて受け付けています。
本ドキュメントでは、各プログラミング言語の仕様に準じ、以下の通り表記しています。
設置(記述)方法 | フィールド名のケース | フィールド名の記述例 | 値のケース | 値の記述例 |
---|---|---|---|---|
HTML | kebab-case (ケバブケース) すべて小文字、ハイフン区切りで記述 | data-foo-bar-baz ※始めに data が必要 | snake_case (スネークケース) すべて小文字、アンダースコア区切りで記述 | foo_bar |
JavaScript | lowerCamelCase (ローワーキャメルケース) 1語目のみ小文字始まり、2語目以降は頭文字のみ大文字 | fooBarBaz | 〃 | 〃 |
本ドキュメントでは、上記表のように「メタ構文変数」を、foo
bar
baz
qux
quux
… と表記します。これらを「実際には様々変化し得る部分」と解釈してください。
消費者のクレジットカード情報を加盟店サイト内に入力(通過か保持)させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSに準拠することが必要です。
本サービスは利便性や品質向上のため、隔週月曜日(※)の15時より小規模なシステムアップデートのリリースを行っています。
大幅な変更を伴うリリースはシステム連携先さまや加盟店さまへ事前通知しますが、軽微な更新は通知なく行いますので、ご承知おきください。
※定期リリース日時は改修内容よって、多少前後することがあります
以下以上のバージョンで、本サービスの動作を確認しています。
ブラウザ | バージョン |
---|---|
Google Chrome | 80 |
Microsoft Edge | 80 |
Mozilla Firefox | 72 |
Apple Safari | 13.1 |
Apple Safari(iOS) | 13.4 |
Opera | 67 |
本サービスには、大きく分けて2通りの利用方法があります。
いずれの方法でも初期設定が必要です。
本サービスの管理画面を用いて、決済金額を加盟店さまにて設定し、作成したフォームのURLを消費者に提供することが可能です。
上記の運用方法の場合は、こちらをご覧ください。
本サービスは、プログラムを記述することでオンライン上にある加盟店さまの商用サイトと連携することが可能です。
予め、システム連携先さまによって、簡易な設定のみで利用可能となっている場合もあります。
具体的には、以下のよう「初回決済(トークン化)のリクエスト方法」と「決済結果の取得方法」を設計・開発することを本サービスでは「連携」と定義しています。
の3通りのインターフェイスを用意しています。詳しくはリンク先を参照してください。
PCI-DSSに準拠している加盟店さまの場合、APIに対して直接カード情報を送信して決済することも可能です。
決済の完了後には、ウェブフックやAPIへのリクエストで結果を取得できます。
ただし、ウェブフックによる結果取得はあくまで簡易的なもので、到達を保証するものではありません。エラーの種類によってはリトライを実行します。詳細はこちらをご覧下さい。
何かしらの原因で取得できなかった場合は、APIにリクエストすることで能動的に取得することを推奨します。
本サービスを利用するためには、いくつかの設定を管理画面で行う必要があります。
このページでは、利用開始までの大まかな流れを説明します。
アプリトークンとは、どの店舗で決済を行うかの判別のためのキーとして機能します。
全ての決済でアプリトークンは必須です。
管理画面>アプリトークンの「新規作成」を押下し「店舗」のアプリトークンを作成してください。
利用方法によってアプリトークン作成時の行動および次に読むページが異なるため、以下を参照ください。
利用方法 | アプリトークン作成時の行動 | 次に読むべきページ |
---|---|---|
システム連携せずに利用 (リンクフォームを利用) | シークレットを控えておく必要はありません。 | 利用ガイド『管理画面の使い方』を参照ください。 このページを以降読む必要はありません。 |
システム連携して利用 (ウィジェット、インラインフォームを利用) | シークレットを控えておく必要はありません。 利用するWEBサイトのドメインを登録する必要があります。 | このページを読み進めてください。 |
システム連携して利用 (APIでリクエスト) | シークレットを控えておく必要があります。 | このページを読み進めてください。 |
ウェブフックを作成すると、本サービスでの処理結果を、加盟店さまが指定したURLにHTTP POSTリクエストで通知するようになります。
消費者の遷移とは近いタイミングで実行しますが、必ずしも同期するとは限りません。
加盟店さま側のシステム(カートや受注管理のシステム)と連携したい場合は作成してください。
ただし、ウェブフックはあくまでも即時性を担保するための簡易的な仕組みで、到達を保証するものではないため、決済結果の判定をウェブフックのみに依存することは非推奨です。
精度の高い判定を求める場合は、APIへ決済結果取得をリクエストする仕組みを設計、実装してください。
画面遷移のコントロールがしたい場合は、ウィジェットやインラインフォームからのコールバック、リンクフォームからのリダイレクト設定でも可能です。
ウェブフックを受信する仕組みの作成には、SDKを利用できます。
メールや管理画面で処理結果を確認するので十分なら、この設定は必要ありません。
※詳細はこちら
アプリトークンとウェブフックを作成した後は、サイト構成やサービス内容に沿った、当社の決済フォームと課金方式を選びます。
実際に消費者が利用するフォームを作成、設置します。
詳細は、各決済フォームのセットアップページをご覧ください。
それぞれのセットアップにはSDKが利用できます。
公開前には、必ずテストモードでフォームが意図した通りに動作しているかを確認してください。(テストモードのアプリトークンを作成することでテスト決済が可能です)
※クレジット決済の場合は管理画面の「テスト課金」にあるカード番号でテストができます。
行われた決済は管理画面で確認・操作が可能です。
管理画面の使い方はこちらをご覧ください。
本サービスは、現段階ではオンラインでの決済にのみ対応しています。
各銘柄のロゴを利用したい場合は、ロゴの下にあるボタンをクリックしてダウンロードしてください。
消費者が決済フォームにカード番号などの必要情報を入力し、決済します。
非対面の取引※に限り、利用可能です。
※磁気テープやICチップのスキャンを行わない
利用できるのは、国際ブランド(VISA / Mastercard / JCB / American Express / Diners Club / DISCOVER)のマークが券面に記載されたクレジットカードです。
購入代金を自由な形で翌月にまとめて支払うことができるサービスです。
決済フォームでメールアドレスと電話番号を入力し、SMS認証を行って決済します。
決済ごとに専用の口座が消費者へ発行され、振込確認を自動で行います。
発行する口座は「GMOあおぞらネット銀行」のものです。
消費者が決済フォームからモバイルペイメントアプリで認証することで、オンラインでの決済を行います。
詳細はこちらを参照ください。
本ガイドでは、当社が提供している管理画面の構成や利用方法を説明しています。
下記の画像付き資料をご確認ください。
本サービスで最も簡単なご利用方法は「リンクフォーム決済」です。
決済金額を加盟店にて設定し、作成したフォームのURLを消費者に提供する単純な決済方法です。
下記の画像付き資料をご確認ください。
決済フォームとは、決済や申込のために消費者が情報を入力する画面のことです。
本サービスでは3種のフォームを選択可能です。加盟店さまの利用イメージに沿ったフォームを選択してください。
本サービスの全てのフォームは、加盟店さまのwebサイトにカード情報が通過することがなく、保存することも処理することもありません。
これにより、カード情報の漏洩リスクを最小限に抑えながら、柔軟な課金方式で商用サイトを運用できます。
フォーム種類 | 対応している決済手段 | 設置方法 | このような方向け |
---|---|---|---|
ウィジェット 詳細 | 全て | 十数行のごく短い(※)タグ | プログラミング可能でシステム連携する 多品目を合算して決済する |
インラインフォーム 詳細 | クレジットのみ | 40行程度の短い(※)タグかjavascriptのコード | 〃 |
リンクフォーム 詳細 | 全て | 短縮URLとそのQRコードをメールやメッセンジャーで送信 webサイトには<a>タグで設置 | システム連携しない プログラミング不可 単品販売のみ |
当社決済フォームを利用した場合の、決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
プログラミングの難しい加盟店さま向けに、指定されたパラメータでの各種決済フォーム用のタグを出力するジェネレータを管理画面内に用意しています。 ※利用方法はこちら
もちろん、各種パラメータを変数として、動的にタグ出力するプログラムを作成いただくことも問題ありません。
そのためのSDKもこちらに用意しています。
トークンとは、カード情報(カード番号と有効期限)を復号できないよう、ランダムな文字列に暗号化したもののことです。
本サービスの決済フォームでは、消費者が入力したカード情報を自動的にトークンへ置き換える処理を行います。
これを「トークン化」といいます。
トークンには複数の種類があります。
どの種類のトークンを作成するか、トークンを用いてどのような処理を行うかは、加盟店さまが自由に指定できます。
行える処理については、ページ下部「チェックアウトタイプとトークンタイプの見取り図」を参照してください。
当社サービスで発行できるトークンの種別(token-type
)には以下の3つがあります。
ワンタイムトークンは1回だけ課金を作ることができ、有効期間は作成から5分間です。
大量の課金を処理するために、並行して複数のワンタイムトークンを作ることができますが、一定期間内に同一のカードで課金できる回数には制限があります。
一定のスケジュールで消費者に請求をする必要がある場合、定期課金トークンの利用を推奨します。
このトークンは定期課金を作成することができ、定期課金では課金の間隔、初回金額、定期課金金額、開始日を指定することができます。
このトークンの有効期間は作成から5分間です。定期課金はキャンセルされるまで期限なしで継続されますが、課金回数を指定した定期課金の作成も可能です。
※当システムでは同一カード番号で定期課金トークンを作成できるのは1つまでのため、5分以内に同一カード番号を入力して送信するとエラーが発生します。
定期課金トークンに対して課金されると再度作成が可能になります。
一度決済したクレジットカードで、任意のタイミングで再び決済を行いたい場合はリカーリングトークンの作成を推奨します。
トークンが作成されると、その個人情報は UnivaPay のプラットフォーム上に安全に保管されます。
初回の処理で課金を行わずカード情報の登録のみ行う運用の場合は、セキュリティコード認証を行うように実装する必要があります。
上記運用でセキュリティコード認証を行わない場合、作成後5分以内にトークンが使用されないとCVVは自動的に期限切れになり、それ以降の課金は失敗します。
※詳細はこちら
トークン作成時のチェックアウト(checkout-type
)の種類は、以下2通りです。
表内で動作を説明します。
checkout-type | 説明 |
---|---|
token | カード情報をトークン化するが、その際に課金を伴わない |
payment | カード情報をトークン化するが、同時に課金も行う |
checkout-type= token | checkout-type= payment | |
---|---|---|
token-type= one_time | 非推奨 ※有効期限が5分だけで存在意義が薄い | 都度課金時に推奨 |
token-type= subscription | いつでも自動課金を開始できる 「定期課金トークン」を作成 (要保存) 「定期課金」の作成リクエストがあるまで課金しない | 指定されたサイクルと金額で、 停止申請があるまで自動で課金される 「定期課金」データを作成 (要保存) 指定次第で初回分も課金 「定期課金トークン」も作成 |
token-type= recurring | いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) | 初回の課金を行い、かつ、 いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) |
本サービスには、4つの処理があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
オーソリ(仮売上) | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえする この仮押さえは、各カードの発行会社が定める期間中(国内発行は60日間、海外発行は30日間が典型)のみ有効です。 本サービスでは、課金の作成をリクエストする際に capture フィールドにfalse の値を指定することで、オーソリ処理が行えます。一般的な物販では、注文時は消費者によってオーソリの手続きが行われるようにし、発送時に加盟店側でキャプチャするという運用が主流です。 しかし、在庫切れでメーカー取り寄せとなった場合など、発送手続きまでに時間がかかる場合は、一旦のキャンセル処理の実施が推奨されます。 その理由は、消費者の与信枠を長期間圧迫することを避けるためです。 | クレジットカード Paidy |
セキュリティコード認証(CVV認証) | 入力されたクレジットカードが、決済時点で有効かどうかを確認する カード情報のトークン化を行う際に消費者へセキュリティコード認証を要求し、1円のオーソリを行うことで、カードの有効性チェックをしています。 この処理によって、初回の決済で課金を行わずにカード情報をトークン化し、後日課金を行えます。 | クレジットカード |
キャプチャ | 事前に作成したトランザクショントークンに対し、売上確定処理を行う オーソリ済みの課金データに対してキャプチャを行うと、売上の処理が行われ、仮押さえされていた与信枠が売上確定の状態で消し込まれます。 | クレジットカード Paidy |
返金 | 過去にキャプチャした課金データに対し、返金処理を行う 返金を実行すると、既にカード会社からの引き落としが完了した後でも、各カード会社の引き落とし日に相殺される、もしくは振込が行われるといった処理がされます 返金は管理画面からの操作、またはAPIへのリクエスト送信で行います。 | 全て |
本サービスには3つの課金種類があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
都度課金 | 一度きりの決済を行う最も基本的な課金方式です。 クレジットカードの場合のみ ・オーソリ(仮売上) ・キャプチャ(売上確定処理) が指定できます。 | 全て |
定期課金 | 指定したサイクルで定期的に課金します。 停止・再開は管理画面の「定期課金」メニューまたはAPIで可能。 | クレジットカード Paidy |
リカーリング課金 | フォームで入力されたカード情報を 「リカーリングタイプ」のトークンとして保存し、 課金時に送信する必要があります。 任意の周期と金額で課金することができます。 | クレジットカード 銀行振込 コンビニ決済 Paidy |
本サービスとシステム連携して、注文や消費者のデータベースへ、支払い状態を反映する必要がある場合は、ウェブフックを受信してデータベースへの書き込みを行うプログラムを作成・設置してください。
ウェブフックの実行はベストエフォートであるため、対象のサーバや回線の状況によっては受信に失敗することがあります。
したがって、処理結果の判定をウェブフックで行うことは問題ありませんが、本来、処理結果を受信しているべきだが未受信ステータスの注文情報を、加盟店さまのデータベース上で検知した場合には、本サービスのAPIへ能動的に
へのリクエストを行い、補完することを推奨します。
ウィジェットまたはインラインフォームを利用する場合、ウェブフックだけでなく、処理の完了後に行われるJavaScriptのコールバックも結果判定に利用できます。
ただし、
には、受け取れない場合がありますので、ウェブフックと同様にGET/LISTによる補完をしてください。
また、以下についても注意してください。
課金の種類 | 処理結果の通知・取得方法 |
---|---|
定期課金subscription | 本サービス側で自動実行するため、結果の取得方法がウェブフックかGET/LISTリクエストに限定される |
リカーリングrecrring | APIへのリクエストで行われるため、結果の取得方法がレスポンス、ウェブフック、GET/LISTリクエストに限定される |
一部のアクワイアラ(カード会社)やセンター(カード会社と紐づくオンライン処理用のセンター)では、リクエストが行われた場合、処理がラグをもって段階的に行われることがあります。
特に、海外クレジットカード会社に接続している場合は、一般的に数分ほどのラグをもって処理が行われます。
当社からアクワイアラへリクエストを行った後、GETリクエストを定期的に行うことで結果を取得し、ステータスを反映する仕様です。
そのため、capture
、refund
、cancel
のリクエストを行った場合、ステータスが段階的に変化します。
返却されるステータスは、リクエストによって異なります。
リクエスト | 段階的に返却されるステータス |
---|---|
capture | pending 、authorized ※、successful / failed / error |
refund / cancel | pending 、 successful / failed / error |
※アクワイアラやセンターのメンテナンスや障害、通信状況などによってauthorized
の状態が続くことがあります。
また、決済フォーム(リンクフォーム / ウィジェット / インラインフォーム)より消費者が課金を行う場合、当社からアクワイアラへ課金リクエストが成功した時点で完了画面へ遷移する仕様です。
課金のGETリクエストやコールバックで課金が作成されたことを確認し、authorized
の確認をもって次の処理を実行する等、数分ほどのラグを考慮した実装を推奨します。
サービスや商品の提供は、継続的な課金のGETリクエスト(ポーリング機能の活用等)によってステータスが successful
に更新されたことを必ず確認してから行ってください。
トークンタイプにrecurring
を指定する場合は、繰り返し課金を目的としたトークンの保存を行うことについて、消費者に対して必ず事前の同意承諾を得るか、加盟店サイト内で十分な告知※を行ってください。
万が一、同意の取得や告知が十分でなかった場合は、消費者から加盟店さまに対して、支払いに対する異議や抗弁の申し立てがされる場合があります。
また、そのような事態が連続した場合は、カード会社から加盟店さまに対して加盟契約解除を言い渡されることがありますが、当社ではその責任を一切負いかねます。予めご了承ください。
クレジットカード情報はPCI-DSSに準拠したシステムでトークン化され、当社ではトークンを保存します。トークンの利用目的は、消費者の再購入やサービス利用状況に応じて再課金することです。課金は必ず消費者の事前同意を得た状態で行われ、無断で行われることはありません。なお、保存したトークンは本サービスでのみ利用可能なもので、万一漏洩することがあっても他サービスの課金に使われることはありません。 |
ウィジェットボタンの直下など、消費者が確認しやすい場所にに注意書きを設置してください。
なお、インラインフォームをご利用の場合は、インラインフォームが含まれる前のページか、インラインフォームの付近に、注意書きを設置してください。
本サービスにはいくつかの制限があります。
同一のグローバルIPアドレスから決済を連続で失敗した場合、そのIPアドレスに対して12時間の制限をかけます。
1つの加盟店で制限されたIPアドレスは他加盟店でも制限され、制限のかかったIPアドレスから管理画面にアクセスすると、
管理画面>店舗>リンクフォーム設定上にエラーが表示されます。
1か月間の課金額より返金額が上回る場合は返金不可の制限をかけます。
海外で発行されたカードでの決済を拒否します。
※管理画面から制限の有無が設定可能です。
短時間で大量のリクエストをした場合に制限をかけます。
詳細はAPI制限のページを確認してください。
このページでは、本ドキュメントで使用している用語の意味を説明します。
※あくまで本ドキュメント内における用語の意味です。
用語 | 説明 |
---|---|
アクワイアラ | 加盟店を増やすことを目的としたカード会社のこと。 国際ブランドであるVisaやMasterCardなどからライセンスを取得し、加盟店開拓・審査・管理等を行う。 |
後払い | 商品を受け取った後、指定された期日までに代金を支払う決済手段のこと。 |
アプリトークン | 課金などのリクエストを行った店舗を判別するためのキーのこと。 全ての決済で必須。 |
イシュア | カード利用者を増やすことを目的としたカード会社のこと。 消費者に対してカードを発行し、引き落とし情報や利用状況の管理・利用明細の発行・請求等を行う。 |
一時停止 / 永久停止 | 定期課金を停止すること。 停止後に再開可能な一時停止と、再開不可な永久停止の2つ種類がある。 |
インターフェース | 異なる機器やシステム、ソフトウェア間で情報のやり取りが行われる際、その間をつなぐ装置や機能のこと。 |
インラインフォーム | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 インラインフレームに本サービスの決済フォームのリソースを表示するタイプ。 |
ウィジェット | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 ポップアップウインドウとして表示されるタイプ。 |
ウェブフック | 課金などイベントが実行された際、外部サービスにHTTP で通知する仕組みのこと。 |
オーソリ | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえすること。 仮売上と同義。 詳細はこちら |
用語 | 説明 |
---|---|
回数指定 / 回数無制限 | 定期課金の種類の名称で、課金が行われる全体の回数を指定されたタイプ / 回数を指定せず、停止するまで課金を継続するタイプのこと。 |
課金 | 商品やサービスの購入(利用)料金を課すること。 |
加盟店 | 本サービスの利用中の法人 / 個人のこと。 |
仮売上 | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえすること。 オーソリと同義。 詳細はこちら |
カードブランド | 独自の決済システムネットワークをクレジットカード発行会社へ貸し出している会社のこと。 国際ブランドの中で Visa、Mastercard、JCB、American Express、Diners Club が主流で「世界5大ブランド」と呼ばれている。 |
為替レート | 国の通貨を他国の通貨に交換する場合の取引価格および交換比率のこと。 外国為替相場と同義。 |
キャプチャ | オーソリ(仮売上)処理を行った課金情報に対して、売上確定処理(実売上)を行うこと。 |
キャンセル | ステータスが「処理待ち」もしくは「オーソライズ済」の課金情報に対して行う、課金を取りやめる処理のこと。 |
銀行振込 | 指定された銀行口座にお金を振り込む支払方法のこと。 |
クエリパラメータ | URLの末尾( ? 以降)に付与されているパラメータのこと。主に抽出する条件を絞り込むことを目的として追加する。 |
ゲートウェイ | 店舗およびオンライン上で取引のカード決済を可能にする技術プラットフォームのこと。 接続先と同義。 |
決済 | お金の支払うことで債権・債務を解消すること。 |
決済手数料 / 手数料率 | 消費者がキャッシュレス決済で支払い時に、加盟店さまに発生する費用と、決済金額に対するその割合のこと。 |
コールバック | ウィジェットタグ内のソースコードに関数を定義しておくことで、各イベントが発生した時にその内容を含めた通知を受け取れる仕組みのこと。 |
用語 | 説明 |
---|---|
システム連携先 | 当システムと加盟店さまのシステムを連携して、加盟店さまのユーザーに対して提供している事業者さまのこと。 |
消費者 | 加盟店さまの商品やサービスの購入者(利用者)のこと。 |
商品 | 加盟店さまが販売している商品の名称や金額・課金方式を登録することができる、当システムの機能名。 |
シークレット | 機密性の高い情報や特権システムを含むサービスおよびITリソースにアクセスするために使用する情報のこと。 当システムでえは、アプリトークン発行時にシークレットも同時に発行される。 |
ステータス | 情報の処理状態のこと。 |
セキュリティコード | クレジットカードの不正利用を防ぐために、カードの裏面に印字されている3桁(または4桁)の数字のこと。 |
セキュリティコード認証 | インターネットなどでクレジットカードを利用するときに、セキュリティコードを入力すること。 |
接続先 | 店舗およびオンライン上で取引のカード決済を可能にする技術プラットフォームのこと。 ゲートウェイと同義。 |
用語 | 説明 |
---|---|
チェックアウト | 消費者が購入を完全に確定し、支払いを完了させること。 |
チャージバック | カード利用者が不正利用などの理由により利用代金の支払に同意しないために、クレジットカード会社が加盟店さまに対して、その代金の支払いを取り消しまたは返金を要求すること。 |
通知メール | 加盟店さまと消費者に対して、処理結果に応じて各種メールが送信される通知機能のこと。 |
都度課金 | 一度きりの決済を行う最も基本的な課金方式のこと。 |
定期課金 | 定期的かつ自動的に課金する、当システムの機能のこと。 |
店舗 | 1つの契約に対して作成された店子(たなこ)のこと。 1加盟店ごとに1店舗存在している。 |
トランザクション | オーソリ,キャプチャ,キャンセル等、取引を行うために必要な「処理」の単位のこと。 |
トランザクショントークン / トークン | カード情報(カード番号と有効期限)を復号できない別の文字列に置き換えた文字列のこと。 トークン化によって、情報漏えいリスクを軽減可能。 |
用語 | 説明 |
---|---|
入金 | 商品やサービスの購入(利用)料金を、銀行やコンビニ等から指定口座へ振り込むこと。 |
用語 | 説明 |
---|---|
パラメータ | システムの挙動に影響を与えるデータ(変数)のこと。 任意のパラメータを指定することで、処理を変化させることができる。 |
フィールド名 | 項目名のこと。 例)amount:金額 |
プロバイダ | クレジットカードをはじめとする決済手段のオンラインサービスを提供する企業のこと。 |
分割払い | 商品やサービスの購入(利用)料金を、複数回に分けて支払う方法のこと。 分割可能な回数は、カード会社と消費者の契約によって異なる。 |
冪等 | ある操作を何度行っても、同じ結果になるという概念のこと。 当社では、冪等なリクエストを行うことで予期しない理由で1つのリクエストが複数回実行されないようにし、重複決済を防ぐことが可能。 詳細はこちら |
返金 | 消費者にお金を返す処理のこと。 |
ポーリング | 対象のトランザクションに対してステータスの変化を検出するまで GET リクエストを行い、トランザクションのステータスが変化したタイミングで通知を受け取れる実装方法のこと。 詳細はこちら |
用語 | 説明 |
---|---|
メタデータ | 決済情報やトークン情報に任意で付与できるデータのこと。 主に、本サービスと消費者や消費者による注文データ等を関連付けるために使用される。 |
用語 | 説明 |
---|---|
与信枠 | カードの利用可能枠のこと。 利用限度額と同義。 |
用語 | 説明 |
---|---|
リカーリングトークン | 繰り返し課金に利用するために、消費者のクレジットカード情報をトークン化(復号できない別の文字列に置き換え)したもの。 |
リカーリング課金 | リカーリングトークンに対して課金を行うこと。 詳細はこちら |
リトライ | 定期課金の支払い失敗後、再度課金を行うこと。 詳細はこちら |
リボ払い | 「リボルビング払い」の略で、一定の金額を毎月返済するクレジットカードの支払方法のこと。 |
リンクフォーム | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 APIに対してHTTP GETメソッドで決済の詳細を送信することで、決済フォームのリソースを生成し、そこ消費者を遷移させるタイプ。 |
用語 | 説明 |
---|---|
CSV課金 | CSVファイルをアップロードすることで、既存の顧客に再び課金することができる機能のこと。 詳細はこちら |
EMV 3-Dセキュア | カード利用者の決済情報などを基に、カード会社が高リスクと判断する取引にのみワンタイムパスワードなどの追加認証を実施するサービスのこと。 |
ID | 「identification(アイデンティフィケーション)」の略で、情報を識別・把握するためのユニークな文字列のこと。 |
ISO-4217 | 各種の通貨を表す国際規格(通貨コード)のこと。 |
ISO-8601 | 日付と時刻の表記に関する国際規格のこと。 |
PCI-DSS | 「Payment Card Industry Data Security Standard」の略で、カード会員情報の保護を目的に定められた、 情報セキュリティの国際統一基準のこと。 |
QRコード決済 / バーコード決済 | QRコードやバーコードを読み取って行う決済方法のこと。 |
APIとは、様々な決済手段を提供する RESTfulな HTTPS インターフェースです。
API を呼び出す為に、直接 HTTP リクエストを実行することも可能ですが、いくつかの開発言語向けにライブラリを提供しています。これらは様々なベストプラクティスや、型情報を提供するので、APIの統合をより簡単に行うことができます。これらの使用例は、本ドキュメントのリソースに対する呼び出し例として記載されています。
画面遷移をシンプルにする等の理由で、加盟店サイト内に独自の決済フォームを設けたい場合は、API連携を行ってください。
クレジットカード情報を加盟店サイト内に入力させ、APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSに準拠することが必要です。
PCI DSSに準拠していない場合、カード情報は当社準備の決済フォームを利用する構築をしてください。
PCI DSSに準拠している場合、トークン化から課金、返金までの全てのリクエストを本サービスのAPIに送信することが可能です。
APIはシークレットトークンなどの機密情報を含むためCORSでの実行を許可していません。
APIを呼び出す場合はサーバーアプリケーションから呼び出すよう実装してください。
ここでは、API連携開発をシンプルにする「SDK」について説明します。
APIとの連携開発を行う際は、本ドキュメントを参照して設計・開発してください。
開発言語が対応しているようであれば、SDK(Software Development Kit)の利用を推奨します。
SDKは、APIを利用するためのライブラリです。GitHub上で公開しています。
利用フローについては、Githubの「Readme」を参照してください。
GitHubは、ソフトウェア開発プロジェクトのためのソースコード管理サービスです。
GitHubの公式言語は英語で、アカウント設定画面から言語を日本語に指定することはできません。以降、最低限必要なアクションを日本語で解説します。
SDKの組込において技術的な質問がある場合や、ドキュメントへのフィードバックがある場合は、該当のリポジトリ※から「Issues」を選択し、当社エンジニアに質問・要望を日本語または英語で送信してください。
リポジトリとは:
「格納庫」を意味する言葉で、Githubでは組織またはプロジェクトの階層下に設置されるサブプロジェクトのような存在です。例:https://github.com/univapay/univapay-java-sdk
この場合は「univapay-java-sdk」がリポジトリです。
本サービスを利用するためのガイドです。
本サービスを利用開始するためのガイドです。
利用開始前に、必ずご通読ください。
本ドキュメントは、「国際ブランドが付帯したカードの決済」「PayPayオンライン決済」「Paidy決済」「銀行振込決済」「コンビニ決済」「Alipay Online決済」「Alipay + Online決済」「Wechat Online決済」を行うために、univapay.comドメインで展開する決済システム(以降「本サービス」という)の利用について記述したものす。
本ドキュメントは、加盟店さまやシステム連携先さまに、本サービスを利用開始するまでの設計・開発を可能とするためのものです。
本ドキュメントは、予告なく変更されることがあります。
本ドキュメントは、日本語を使用して作成しています。
他言語で閲覧したい場合は、ブラウザの翻訳機能を利用してください。
問い合わせは、日本語・英語にて受け付けています。
本ドキュメントでは、各プログラミング言語の仕様に準じ、以下の通り表記しています。
設置(記述)方法 | フィールド名のケース | フィールド名の記述例 | 値のケース | 値の記述例 |
---|---|---|---|---|
HTML | kebab-case (ケバブケース) すべて小文字、ハイフン区切りで記述 | data-foo-bar-baz ※始めに data が必要 | snake_case (スネークケース) すべて小文字、アンダースコア区切りで記述 | foo_bar |
JavaScript | lowerCamelCase (ローワーキャメルケース) 1語目のみ小文字始まり、2語目以降は頭文字のみ大文字 | fooBarBaz | 〃 | 〃 |
本ドキュメントでは、上記表のように「メタ構文変数」を、foo
bar
baz
qux
quux
… と表記します。これらを「実際には様々変化し得る部分」と解釈してください。
消費者のクレジットカード情報を加盟店サイト内に入力(通過か保持)させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSに準拠することが必要です。
本サービスは利便性や品質向上のため、隔週月曜日(※)の15時より小規模なシステムアップデートのリリースを行っています。
大幅な変更を伴うリリースはシステム連携先さまや加盟店さまへ事前通知しますが、軽微な更新は通知なく行いますので、ご承知おきください。
※定期リリース日時は改修内容よって、多少前後することがあります
以下以上のバージョンで、本サービスの動作を確認しています。
ブラウザ | バージョン |
---|---|
Google Chrome | 80 |
Microsoft Edge | 80 |
Mozilla Firefox | 72 |
Apple Safari | 13.1 |
Apple Safari(iOS) | 13.4 |
Opera | 67 |
本サービスには、大きく分けて2通りの利用方法があります。
いずれの方法でも初期設定が必要です。
本サービスの管理画面を用いて、決済金額を加盟店さまにて設定し、作成したフォームのURLを消費者に提供することが可能です。
上記の運用方法の場合は、こちらをご覧ください。
本サービスは、プログラムを記述することでオンライン上にある加盟店さまの商用サイトと連携することが可能です。
予め、システム連携先さまによって、簡易な設定のみで利用可能となっている場合もあります。
具体的には、以下のよう「初回決済(トークン化)のリクエスト方法」と「決済結果の取得方法」を設計・開発することを本サービスでは「連携」と定義しています。
の3通りのインターフェイスを用意しています。詳しくはリンク先を参照してください。
PCI-DSSに準拠している加盟店さまの場合、APIに対して直接カード情報を送信して決済することも可能です。
決済の完了後には、ウェブフックやAPIへのリクエストで結果を取得できます。
ただし、ウェブフックによる結果取得はあくまで簡易的なもので、到達を保証するものではありません。エラーの種類によってはリトライを実行します。詳細はこちらをご覧下さい。
何かしらの原因で取得できなかった場合は、APIにリクエストすることで能動的に取得することを推奨します。
本サービスを利用するためには、いくつかの設定を管理画面で行う必要があります。
このページでは、利用開始までの大まかな流れを説明します。
アプリトークンとは、どの店舗で決済を行うかの判別のためのキーとして機能します。
全ての決済でアプリトークンは必須です。
管理画面>アプリトークンの「新規作成」を押下し「店舗」のアプリトークンを作成してください。
利用方法によってアプリトークン作成時の行動および次に読むページが異なるため、以下を参照ください。
利用方法 | アプリトークン作成時の行動 | 次に読むべきページ |
---|---|---|
システム連携せずに利用 (リンクフォームを利用) | シークレットを控えておく必要はありません。 | 利用ガイド『管理画面の使い方』を参照ください。 このページを以降読む必要はありません。 |
システム連携して利用 (ウィジェット、インラインフォームを利用) | シークレットを控えておく必要はありません。 利用するWEBサイトのドメインを登録する必要があります。 | このページを読み進めてください。 |
システム連携して利用 (APIでリクエスト) | シークレットを控えておく必要があります。 | このページを読み進めてください。 |
ウェブフックを作成すると、本サービスでの処理結果を、加盟店さまが指定したURLにHTTP POSTリクエストで通知するようになります。
消費者の遷移とは近いタイミングで実行しますが、必ずしも同期するとは限りません。
加盟店さま側のシステム(カートや受注管理のシステム)と連携したい場合は作成してください。
ただし、ウェブフックはあくまでも即時性を担保するための簡易的な仕組みで、到達を保証するものではないため、決済結果の判定をウェブフックのみに依存することは非推奨です。
精度の高い判定を求める場合は、APIへ決済結果取得をリクエストする仕組みを設計、実装してください。
画面遷移のコントロールがしたい場合は、ウィジェットやインラインフォームからのコールバック、リンクフォームからのリダイレクト設定でも可能です。
ウェブフックを受信する仕組みの作成には、SDKを利用できます。
メールや管理画面で処理結果を確認するので十分なら、この設定は必要ありません。
※詳細はこちら
アプリトークンとウェブフックを作成した後は、サイト構成やサービス内容に沿った、当社の決済フォームと課金方式を選びます。
実際に消費者が利用するフォームを作成、設置します。
詳細は、各決済フォームのセットアップページをご覧ください。
それぞれのセットアップにはSDKが利用できます。
公開前には、必ずテストモードでフォームが意図した通りに動作しているかを確認してください。(テストモードのアプリトークンを作成することでテスト決済が可能です)
※クレジット決済の場合は管理画面の「テスト課金」にあるカード番号でテストができます。
行われた決済は管理画面で確認・操作が可能です。
管理画面の使い方はこちらをご覧ください。
本サービスは、現段階ではオンラインでの決済にのみ対応しています。
各銘柄のロゴを利用したい場合は、ロゴの下にあるボタンをクリックしてダウンロードしてください。
消費者が決済フォームにカード番号などの必要情報を入力し、決済します。
非対面の取引※に限り、利用可能です。
※磁気テープやICチップのスキャンを行わない
利用できるのは、国際ブランド(VISA / Mastercard / JCB / American Express / Diners Club / DISCOVER)のマークが券面に記載されたクレジットカードです。
購入代金を自由な形で翌月にまとめて支払うことができるサービスです。
決済フォームでメールアドレスと電話番号を入力し、SMS認証を行って決済します。
決済ごとに専用の口座が消費者へ発行され、振込確認を自動で行います。
発行する口座は「GMOあおぞらネット銀行」のものです。
消費者が決済フォームからモバイルペイメントアプリで認証することで、オンラインでの決済を行います。
詳細はこちらを参照ください。
本ガイドでは、当社が提供している管理画面の構成や利用方法を説明しています。
下記の画像付き資料をご確認ください。
本サービスで最も簡単なご利用方法は「リンクフォーム決済」です。
決済金額を加盟店にて設定し、作成したフォームのURLを消費者に提供する単純な決済方法です。
下記の画像付き資料をご確認ください。
決済フォームとは、決済や申込のために消費者が情報を入力する画面のことです。
本サービスでは3種のフォームを選択可能です。加盟店さまの利用イメージに沿ったフォームを選択してください。
本サービスの全てのフォームは、加盟店さまのwebサイトにカード情報が通過することがなく、保存することも処理することもありません。
これにより、カード情報の漏洩リスクを最小限に抑えながら、柔軟な課金方式で商用サイトを運用できます。
フォーム種類 | 対応している決済手段 | 設置方法 | このような方向け |
---|---|---|---|
ウィジェット 詳細 | 全て | 十数行のごく短い(※)タグ | プログラミング可能でシステム連携する 多品目を合算して決済する |
インラインフォーム 詳細 | クレジットのみ | 40行程度の短い(※)タグかjavascriptのコード | 〃 |
リンクフォーム 詳細 | 全て | 短縮URLとそのQRコードをメールやメッセンジャーで送信 webサイトには<a>タグで設置 | システム連携しない プログラミング不可 単品販売のみ |
当社決済フォームを利用した場合の、決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
プログラミングの難しい加盟店さま向けに、指定されたパラメータでの各種決済フォーム用のタグを出力するジェネレータを管理画面内に用意しています。 ※利用方法はこちら
もちろん、各種パラメータを変数として、動的にタグ出力するプログラムを作成いただくことも問題ありません。
そのためのSDKもこちらに用意しています。
トークンとは、カード情報(カード番号と有効期限)を復号できないよう、ランダムな文字列に暗号化したもののことです。
本サービスの決済フォームでは、消費者が入力したカード情報を自動的にトークンへ置き換える処理を行います。
これを「トークン化」といいます。
トークンには複数の種類があります。
どの種類のトークンを作成するか、トークンを用いてどのような処理を行うかは、加盟店さまが自由に指定できます。
行える処理については、ページ下部「チェックアウトタイプとトークンタイプの見取り図」を参照してください。
当社サービスで発行できるトークンの種別(token-type
)には以下の3つがあります。
ワンタイムトークンは1回だけ課金を作ることができ、有効期間は作成から5分間です。
大量の課金を処理するために、並行して複数のワンタイムトークンを作ることができますが、一定期間内に同一のカードで課金できる回数には制限があります。
一定のスケジュールで消費者に請求をする必要がある場合、定期課金トークンの利用を推奨します。
このトークンは定期課金を作成することができ、定期課金では課金の間隔、初回金額、定期課金金額、開始日を指定することができます。
このトークンの有効期間は作成から5分間です。定期課金はキャンセルされるまで期限なしで継続されますが、課金回数を指定した定期課金の作成も可能です。
※当システムでは同一カード番号で定期課金トークンを作成できるのは1つまでのため、5分以内に同一カード番号を入力して送信するとエラーが発生します。
定期課金トークンに対して課金されると再度作成が可能になります。
一度決済したクレジットカードで、任意のタイミングで再び決済を行いたい場合はリカーリングトークンの作成を推奨します。
トークンが作成されると、その個人情報は UnivaPay のプラットフォーム上に安全に保管されます。
初回の処理で課金を行わずカード情報の登録のみ行う運用の場合は、セキュリティコード認証を行うように実装する必要があります。
上記運用でセキュリティコード認証を行わない場合、作成後5分以内にトークンが使用されないとCVVは自動的に期限切れになり、それ以降の課金は失敗します。
※詳細はこちら
トークン作成時のチェックアウト(checkout-type
)の種類は、以下2通りです。
表内で動作を説明します。
checkout-type | 説明 |
---|---|
token | カード情報をトークン化するが、その際に課金を伴わない |
payment | カード情報をトークン化するが、同時に課金も行う |
checkout-type= token | checkout-type= payment | |
---|---|---|
token-type= one_time | 非推奨 ※有効期限が5分だけで存在意義が薄い | 都度課金時に推奨 |
token-type= subscription | いつでも自動課金を開始できる 「定期課金トークン」を作成 (要保存) 「定期課金」の作成リクエストがあるまで課金しない | 指定されたサイクルと金額で、 停止申請があるまで自動で課金される 「定期課金」データを作成 (要保存) 指定次第で初回分も課金 「定期課金トークン」も作成 |
token-type= recurring | いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) | 初回の課金を行い、かつ、 いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) |
本サービスには、4つの処理があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
オーソリ(仮売上) | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえする この仮押さえは、各カードの発行会社が定める期間中(国内発行は60日間、海外発行は30日間が典型)のみ有効です。 本サービスでは、課金の作成をリクエストする際に capture フィールドにfalse の値を指定することで、オーソリ処理が行えます。一般的な物販では、注文時は消費者によってオーソリの手続きが行われるようにし、発送時に加盟店側でキャプチャするという運用が主流です。 しかし、在庫切れでメーカー取り寄せとなった場合など、発送手続きまでに時間がかかる場合は、一旦のキャンセル処理の実施が推奨されます。 その理由は、消費者の与信枠を長期間圧迫することを避けるためです。 | クレジットカード Paidy |
セキュリティコード認証(CVV認証) | 入力されたクレジットカードが、決済時点で有効かどうかを確認する カード情報のトークン化を行う際に消費者へセキュリティコード認証を要求し、1円のオーソリを行うことで、カードの有効性チェックをしています。 この処理によって、初回の決済で課金を行わずにカード情報をトークン化し、後日課金を行えます。 | クレジットカード |
キャプチャ | 事前に作成したトランザクショントークンに対し、売上確定処理を行う オーソリ済みの課金データに対してキャプチャを行うと、売上の処理が行われ、仮押さえされていた与信枠が売上確定の状態で消し込まれます。 | クレジットカード Paidy |
返金 | 過去にキャプチャした課金データに対し、返金処理を行う 返金を実行すると、既にカード会社からの引き落としが完了した後でも、各カード会社の引き落とし日に相殺される、もしくは振込が行われるといった処理がされます 返金は管理画面からの操作、またはAPIへのリクエスト送信で行います。 | 全て |
本サービスには3つの課金種類があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
都度課金 | 一度きりの決済を行う最も基本的な課金方式です。 クレジットカードの場合のみ ・オーソリ(仮売上) ・キャプチャ(売上確定処理) が指定できます。 | 全て |
定期課金 | 指定したサイクルで定期的に課金します。 停止・再開は管理画面の「定期課金」メニューまたはAPIで可能。 | クレジットカード Paidy |
リカーリング課金 | フォームで入力されたカード情報を 「リカーリングタイプ」のトークンとして保存し、 課金時に送信する必要があります。 任意の周期と金額で課金することができます。 | クレジットカード 銀行振込 コンビニ決済 Paidy |
本サービスとシステム連携して、注文や消費者のデータベースへ、支払い状態を反映する必要がある場合は、ウェブフックを受信してデータベースへの書き込みを行うプログラムを作成・設置してください。
ウェブフックの実行はベストエフォートであるため、対象のサーバや回線の状況によっては受信に失敗することがあります。
したがって、処理結果の判定をウェブフックで行うことは問題ありませんが、本来、処理結果を受信しているべきだが未受信ステータスの注文情報を、加盟店さまのデータベース上で検知した場合には、本サービスのAPIへ能動的に
へのリクエストを行い、補完することを推奨します。
ウィジェットまたはインラインフォームを利用する場合、ウェブフックだけでなく、処理の完了後に行われるJavaScriptのコールバックも結果判定に利用できます。
ただし、
には、受け取れない場合がありますので、ウェブフックと同様にGET/LISTによる補完をしてください。
また、以下についても注意してください。
課金の種類 | 処理結果の通知・取得方法 |
---|---|
定期課金subscription | 本サービス側で自動実行するため、結果の取得方法がウェブフックかGET/LISTリクエストに限定される |
リカーリングrecrring | APIへのリクエストで行われるため、結果の取得方法がレスポンス、ウェブフック、GET/LISTリクエストに限定される |
一部のアクワイアラ(カード会社)やセンター(カード会社と紐づくオンライン処理用のセンター)では、リクエストが行われた場合、処理がラグをもって段階的に行われることがあります。
特に、海外クレジットカード会社に接続している場合は、一般的に数分ほどのラグをもって処理が行われます。
当社からアクワイアラへリクエストを行った後、GETリクエストを定期的に行うことで結果を取得し、ステータスを反映する仕様です。
そのため、capture
、refund
、cancel
のリクエストを行った場合、ステータスが段階的に変化します。
返却されるステータスは、リクエストによって異なります。
リクエスト | 段階的に返却されるステータス |
---|---|
capture | pending 、authorized ※、successful / failed / error |
refund / cancel | pending 、 successful / failed / error |
※アクワイアラやセンターのメンテナンスや障害、通信状況などによってauthorized
の状態が続くことがあります。
また、決済フォーム(リンクフォーム / ウィジェット / インラインフォーム)より消費者が課金を行う場合、当社からアクワイアラへ課金リクエストが成功した時点で完了画面へ遷移する仕様です。
課金のGETリクエストやコールバックで課金が作成されたことを確認し、authorized
の確認をもって次の処理を実行する等、数分ほどのラグを考慮した実装を推奨します。
サービスや商品の提供は、継続的な課金のGETリクエスト(ポーリング機能の活用等)によってステータスが successful
に更新されたことを必ず確認してから行ってください。
トークンタイプにrecurring
を指定する場合は、繰り返し課金を目的としたトークンの保存を行うことについて、消費者に対して必ず事前の同意承諾を得るか、加盟店サイト内で十分な告知※を行ってください。
万が一、同意の取得や告知が十分でなかった場合は、消費者から加盟店さまに対して、支払いに対する異議や抗弁の申し立てがされる場合があります。
また、そのような事態が連続した場合は、カード会社から加盟店さまに対して加盟契約解除を言い渡されることがありますが、当社ではその責任を一切負いかねます。予めご了承ください。
クレジットカード情報はPCI-DSSに準拠したシステムでトークン化され、当社ではトークンを保存します。トークンの利用目的は、消費者の再購入やサービス利用状況に応じて再課金することです。課金は必ず消費者の事前同意を得た状態で行われ、無断で行われることはありません。なお、保存したトークンは本サービスでのみ利用可能なもので、万一漏洩することがあっても他サービスの課金に使われることはありません。 |
ウィジェットボタンの直下など、消費者が確認しやすい場所にに注意書きを設置してください。
なお、インラインフォームをご利用の場合は、インラインフォームが含まれる前のページか、インラインフォームの付近に、注意書きを設置してください。
本サービスにはいくつかの制限があります。
同一のグローバルIPアドレスから決済を連続で失敗した場合、そのIPアドレスに対して12時間の制限をかけます。
1つの加盟店で制限されたIPアドレスは他加盟店でも制限され、制限のかかったIPアドレスから管理画面にアクセスすると、
管理画面>店舗>リンクフォーム設定上にエラーが表示されます。
1か月間の課金額より返金額が上回る場合は返金不可の制限をかけます。
海外で発行されたカードでの決済を拒否します。
※管理画面から制限の有無が設定可能です。
短時間で大量のリクエストをした場合に制限をかけます。
詳細はAPI制限のページを確認してください。
このページでは、本ドキュメントで使用している用語の意味を説明します。
※あくまで本ドキュメント内における用語の意味です。
用語 | 説明 |
---|---|
アクワイアラ | 加盟店を増やすことを目的としたカード会社のこと。 国際ブランドであるVisaやMasterCardなどからライセンスを取得し、加盟店開拓・審査・管理等を行う。 |
後払い | 商品を受け取った後、指定された期日までに代金を支払う決済手段のこと。 |
アプリトークン | 課金などのリクエストを行った店舗を判別するためのキーのこと。 全ての決済で必須。 |
イシュア | カード利用者を増やすことを目的としたカード会社のこと。 消費者に対してカードを発行し、引き落とし情報や利用状況の管理・利用明細の発行・請求等を行う。 |
一時停止 / 永久停止 | 定期課金を停止すること。 停止後に再開可能な一時停止と、再開不可な永久停止の2つ種類がある。 |
インターフェース | 異なる機器やシステム、ソフトウェア間で情報のやり取りが行われる際、その間をつなぐ装置や機能のこと。 |
インラインフォーム | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 インラインフレームに本サービスの決済フォームのリソースを表示するタイプ。 |
ウィジェット | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 ポップアップウインドウとして表示されるタイプ。 |
ウェブフック | 課金などイベントが実行された際、外部サービスにHTTP で通知する仕組みのこと。 |
オーソリ | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえすること。 仮売上と同義。 詳細はこちら |
用語 | 説明 |
---|---|
回数指定 / 回数無制限 | 定期課金の種類の名称で、課金が行われる全体の回数を指定されたタイプ / 回数を指定せず、停止するまで課金を継続するタイプのこと。 |
課金 | 商品やサービスの購入(利用)料金を課すること。 |
加盟店 | 本サービスの利用中の法人 / 個人のこと。 |
仮売上 | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえすること。 オーソリと同義。 詳細はこちら |
カードブランド | 独自の決済システムネットワークをクレジットカード発行会社へ貸し出している会社のこと。 国際ブランドの中で Visa、Mastercard、JCB、American Express、Diners Club が主流で「世界5大ブランド」と呼ばれている。 |
為替レート | 国の通貨を他国の通貨に交換する場合の取引価格および交換比率のこと。 外国為替相場と同義。 |
キャプチャ | オーソリ(仮売上)処理を行った課金情報に対して、売上確定処理(実売上)を行うこと。 |
キャンセル | ステータスが「処理待ち」もしくは「オーソライズ済」の課金情報に対して行う、課金を取りやめる処理のこと。 |
銀行振込 | 指定された銀行口座にお金を振り込む支払方法のこと。 |
クエリパラメータ | URLの末尾( ? 以降)に付与されているパラメータのこと。主に抽出する条件を絞り込むことを目的として追加する。 |
ゲートウェイ | 店舗およびオンライン上で取引のカード決済を可能にする技術プラットフォームのこと。 接続先と同義。 |
決済 | お金の支払うことで債権・債務を解消すること。 |
決済手数料 / 手数料率 | 消費者がキャッシュレス決済で支払い時に、加盟店さまに発生する費用と、決済金額に対するその割合のこと。 |
コールバック | ウィジェットタグ内のソースコードに関数を定義しておくことで、各イベントが発生した時にその内容を含めた通知を受け取れる仕組みのこと。 |
用語 | 説明 |
---|---|
システム連携先 | 当システムと加盟店さまのシステムを連携して、加盟店さまのユーザーに対して提供している事業者さまのこと。 |
消費者 | 加盟店さまの商品やサービスの購入者(利用者)のこと。 |
商品 | 加盟店さまが販売している商品の名称や金額・課金方式を登録することができる、当システムの機能名。 |
シークレット | 機密性の高い情報や特権システムを含むサービスおよびITリソースにアクセスするために使用する情報のこと。 当システムでえは、アプリトークン発行時にシークレットも同時に発行される。 |
ステータス | 情報の処理状態のこと。 |
セキュリティコード | クレジットカードの不正利用を防ぐために、カードの裏面に印字されている3桁(または4桁)の数字のこと。 |
セキュリティコード認証 | インターネットなどでクレジットカードを利用するときに、セキュリティコードを入力すること。 |
接続先 | 店舗およびオンライン上で取引のカード決済を可能にする技術プラットフォームのこと。 ゲートウェイと同義。 |
用語 | 説明 |
---|---|
チェックアウト | 消費者が購入を完全に確定し、支払いを完了させること。 |
チャージバック | カード利用者が不正利用などの理由により利用代金の支払に同意しないために、クレジットカード会社が加盟店さまに対して、その代金の支払いを取り消しまたは返金を要求すること。 |
通知メール | 加盟店さまと消費者に対して、処理結果に応じて各種メールが送信される通知機能のこと。 |
都度課金 | 一度きりの決済を行う最も基本的な課金方式のこと。 |
定期課金 | 定期的かつ自動的に課金する、当システムの機能のこと。 |
店舗 | 1つの契約に対して作成された店子(たなこ)のこと。 1加盟店ごとに1店舗存在している。 |
トランザクション | オーソリ,キャプチャ,キャンセル等、取引を行うために必要な「処理」の単位のこと。 |
トランザクショントークン / トークン | カード情報(カード番号と有効期限)を復号できない別の文字列に置き換えた文字列のこと。 トークン化によって、情報漏えいリスクを軽減可能。 |
用語 | 説明 |
---|---|
入金 | 商品やサービスの購入(利用)料金を、銀行やコンビニ等から指定口座へ振り込むこと。 |
用語 | 説明 |
---|---|
パラメータ | システムの挙動に影響を与えるデータ(変数)のこと。 任意のパラメータを指定することで、処理を変化させることができる。 |
フィールド名 | 項目名のこと。 例)amount:金額 |
プロバイダ | クレジットカードをはじめとする決済手段のオンラインサービスを提供する企業のこと。 |
分割払い | 商品やサービスの購入(利用)料金を、複数回に分けて支払う方法のこと。 分割可能な回数は、カード会社と消費者の契約によって異なる。 |
冪等 | ある操作を何度行っても、同じ結果になるという概念のこと。 当社では、冪等なリクエストを行うことで予期しない理由で1つのリクエストが複数回実行されないようにし、重複決済を防ぐことが可能。 詳細はこちら |
返金 | 消費者にお金を返す処理のこと。 |
ポーリング | 対象のトランザクションに対してステータスの変化を検出するまで GET リクエストを行い、トランザクションのステータスが変化したタイミングで通知を受け取れる実装方法のこと。 詳細はこちら |
用語 | 説明 |
---|---|
メタデータ | 決済情報やトークン情報に任意で付与できるデータのこと。 主に、本サービスと消費者や消費者による注文データ等を関連付けるために使用される。 |
用語 | 説明 |
---|---|
与信枠 | カードの利用可能枠のこと。 利用限度額と同義。 |
用語 | 説明 |
---|---|
リカーリングトークン | 繰り返し課金に利用するために、消費者のクレジットカード情報をトークン化(復号できない別の文字列に置き換え)したもの。 |
リカーリング課金 | リカーリングトークンに対して課金を行うこと。 詳細はこちら |
リトライ | 定期課金の支払い失敗後、再度課金を行うこと。 詳細はこちら |
リボ払い | 「リボルビング払い」の略で、一定の金額を毎月返済するクレジットカードの支払方法のこと。 |
リンクフォーム | 決済フォーム(消費者がカード情報を入力するためのインターフェイス)のこと。 APIに対してHTTP GETメソッドで決済の詳細を送信することで、決済フォームのリソースを生成し、そこ消費者を遷移させるタイプ。 |
用語 | 説明 |
---|---|
CSV課金 | CSVファイルをアップロードすることで、既存の顧客に再び課金することができる機能のこと。 詳細はこちら |
EMV 3-Dセキュア | カード利用者の決済情報などを基に、カード会社が高リスクと判断する取引にのみワンタイムパスワードなどの追加認証を実施するサービスのこと。 |
ID | 「identification(アイデンティフィケーション)」の略で、情報を識別・把握するためのユニークな文字列のこと。 |
ISO-4217 | 各種の通貨を表す国際規格(通貨コード)のこと。 |
ISO-8601 | 日付と時刻の表記に関する国際規格のこと。 |
PCI-DSS | 「Payment Card Industry Data Security Standard」の略で、カード会員情報の保護を目的に定められた、 情報セキュリティの国際統一基準のこと。 |
QRコード決済 / バーコード決済 | QRコードやバーコードを読み取って行う決済方法のこと。 |
本サービスと加盟店さまの商用サイトとを連携するための実装ガイドです。
「はじめに」を通読の上、ご覧ください。
ウィジェットは、消費者がカード情報を入力するためのインターフェイスで、ポップアップウインドウとして表示されるタイプのフォームです。
ウィジェットは、以下の役割を果たします。
消費者に、希望の支払い方法をクリック(またはタップ)で選択させます。
この選択画面で表示される選択肢は、ウィジェットのタグまたはコードの記述内容に依存します。なお、支払い方法を単一に指定した場合、この選択画面は省略されます。
選択された「支払い方法」毎に予め設定されている必須情報を、消費者に入力させます。
入力欄はウィジェットのタグまたはコードの記述内容によって、追加することも可能です。
詳しくはこちら
選択された「支払い方法」毎に、各種処理を行います。
一部、赤字※印の項目は申込完了後、消費者が支払いを行うのを待機します。
誤って「決済完了」とみなさないよう、くれぐれも注意してください。
支払い方法 | 処理 | 認証後の処理 |
---|---|---|
クレジットカード | カード会社に対し、要求された処理(オーソリ/キャプチャ)で認証 | 認証済みのカード情報をトークン化して決済処理 以降、以下を<共通処理>と記載: JavaScriptでコールバック ウェブフック APIからの取得が可能に |
銀行振込 | その申込専用の振込口座を発行し、メール送信(疎通は確認しない) | 本サービスが振込完了の通知を受け取り次第、完了判定※ <共通処理> |
Paidy | Paidyのフォームに遷移し、メールアドレスや電話番号で認証 | 認証時点で完了判定 <共通処理> |
オンラインモバイル | 各銘柄の挙動詳細はこちら | 本サービスが通知を受け取り次第、完了判定 <共通処理> |
コンビニ決済 | 支払いたいコンビニを選択し「申込」を行い、メール送信(疎通は確認しない) | 本サービスが支払完了の通知を受け取り次第、完了判定※ <共通処理> |
ウィジェット内の表示項目は、設置時のパラメータによって以下を制御可能です。
詳しくはこちら
管理画面から、ウィジェットのデザインを編集可能です。
店舗>一般>全体設定>ブランディング から、PNGまたはJPGで店舗アイコンを編集できます。
未編集の場合は標準(デフォルト)の画像が表示されます。
店舗>決済フォーム>ウィジェット>テーマ から、タイトル背景とメイン(タイトルバーとボタンに使用)のカラーが編集可能です。
ウィジェットを利用した場合の決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
このページは「初期設定」が完了していることを前提に作成しています。
リンクフォームは、APIに対してHTTP GETメソッドで決済の詳細を送信することで、決済フォームのリソースを生成し、そこ消費者を遷移させ、決済後にリダイレクトすることができます。
加盟店さまの多くは、管理画面から店舗内にリンクフォームの設定をし、短縮URLをメール送信するか、サイト内に<a>タグとして設置する運用をすると想定しています。
そのため、原則的に不要と認識していますが、ここでは、APIの挙動を解説します。
プログラムの記述ができる方にとっては、リンクフォームを選択して動的にタグを書き出すことは、タグが長くなるだけで何のメリットもありません。
また、iframeタグを使用してウェブページへリンクフォームを埋め込む実装はできません。
そのため、動的にタグ出力をするのであれば、メリットの多いウィジェットを採用することを強く推奨します。
リンクフォームは、技術や予算の都合上、動的なタグ出力を行えない方を対象する機能とご認識ください。
リンクフォームは、以下の役割を果たします。
消費者に、希望の支払い方法をクリック(またはタップ)で選択させます。
この選択画面で表示される選択肢は、リンクフォームのタグの記述内容に依存します。なお、支払い方法を単一に指定した場合、この選択画面は省略されます。
選択された「支払い方法」毎に予め設定されいる必須情報を、消費者に入力させます。
入力欄はタグの記述内容によって、追加することも可能です。
詳しくはこちら
https://checkout.univapay.com/forms/<各店舗のフォームID>
各店舗のフォームIDは、管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>URLコード
から確認してください。forms/
から?appID
の間に記載されています。
例)https://checkout.univapay.com/forms/0a000ebb-caa0-00bf-ad0e-0de0e000fbe0?appId=xxx…
各種パラメータを?hoo=111&bar=222&baz=333
…のように続けて記述したものを表示し、消費者の遷移を促してください。
管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>URLコード
で、各種設定を反映した、タグの生成が可能です。
管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>設定
で、リンクフォームの各種設定が可能です。
以下は、事前に管理画面から動作を設定できる内容です。
以下は、タグで値を指定すれば、そちらを優先し、元の設定を無視します。
以下は、タグ設置時にの指定に関わらず、設定が優先されます。
言語は、タグで値を指定すれば、そちらを優先し、元の設定を無視します。
カスタムの入力欄は、タグで何かしらの値を指定すれば、そちらを優先し、元の設定を無視します。
リダイレクトURLは、タグで何かしらの値を指定すれば、そちらを優先し、元の設定を無視します。
以下の処理ステータス毎に、別のURLを指定できます。
テーマの設定は、タグでの指定で変更することはできません。全てのフォームで統一されます。
処理の完了後は、パラメータによる指定通りに、消費者をリダイレクトします。
ウィジェットのようにリダイレクト時に結果をHTTP GETやSubmitで送信したり、JavaScriptのコールバックはできません。
一方で成功時と失敗時、それぞれのリダイレクト先は指定でき、追加したメタデータをHTTP GETメソッドで送信(消費者の遷移と同時に)できます。
したがって、処理後の画面遷移を制御することは可能ではありますが、送信先のURLは消費者からも可視であるため、処理結果の判定や、サービスを受ける権利の付与は行わない事を推奨します。
また、誤ってサービスを履行したり、物品を発送した場合でも、当社では一切の責任を負いかねます。
結果判定には、消費者から不可視の「GETによる取得」か、「ウェブフック」を用いることを推奨します。
リンクフォームを利用した場合の決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
このページは初期設定が完了していることを前提に作成しています。
インラインフォームは、インラインフレームに本サービスの決済フォームのリソースを表示し、消費者に直接カード情報を入力させて処理することを目的としたものです。
インラインフォームはクレジットカード決済のみを行うことができ、他の決済は利用できません。
インラインフォームは、以下の役割を果たします。
クレジットカード決済の際の必須情報を、消費者に入力させます。
入力欄はインラインフォームのタグ記述内容によって、追加することも可能です。
詳しくはこちら
支払い方法 | 処理 | 認証後の処理 |
---|---|---|
クレジットカード | カード会社に対し、要求された処理(オーソリ/キャプチャ)で認証 | 認証済みのカード情報をトークン化して決済処理 完了後の処理: <form> のsubmit ウェブフック APIからの取得が可能に |
インラインフォームのデザインは、パラメータによって指定可能です。
設置先のサイトに、ある程度違和感なく溶け込むデザインを施すことができます。
詳しくはこちら
本サービスと加盟店さまの商用サイトとを連携するための実装ガイドです。
「はじめに」を通読の上、ご覧ください。
本サービスの銀行振込は、申込ごとに発行したユニークな口座番号への振込確認・消込を自動で行い、結果を反映する仕組みです。
利用する口座は「GMOあおぞらネット銀行」から発行されます。
これにより、手作業による振込確認と消込が必要なくなります。
銀行振込でサポートしている内容は、以下を参照してください。
都度課金およびリカーリング課金を利用できます。
定期課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 注意点 |
---|---|
CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
電算システムを利用した決済手段です。
決済フォームでの情報入力が完了すると、指定したコンビニエンスストアで入金を行うための情報が発行されます。
入金に必要な情報は、通知メールもしくはメタデータから確認可能です。
発行された情報をもとに消費者が入金を行うと、入金確認を自動で行い、結果を反映します。
また、管理画面の「ウェブフック」でURLを登録することによって、入金結果のシステム通知を受けることも可能です。
コンビニ決済でサポートしている内容は、以下を参照してください。
都度課金およびリカーリング課金を利用できます。
定期課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 無視される理由 |
---|---|
CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
決済処理を行う際に各QR事業者(プロバイダ事業者)の画面に遷移し、消費者側がログインして決済する または 各アプリを開いて決済する手段です。
下記がオンライン決済に該当します。
オンライン決済でサポートしている内容は、以下を参照してください。
都度課金のみ利用できます。
定期課金やリカーリングトークンを用いた継続的な課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 無視される理由 |
---|---|
カード登録(リカーリングトークン作成) CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
本サービスを実装する上で、必要に応じて理解する必要がある各機能の仕様について記載しています。
定期課金では、事前に指定したサイクルで自動的に課金を行います。
2回目以降の課金は、課金日の午前7時※より順次課金を開始します。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金を作成する方法については実装ガイドの各ページを参照してください。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち | 継続中の定期課金で課金を失敗し、再課金を待っている状態 または 一時停止後に再開し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
処理 | 説明 |
---|---|
一時停止・永久停止・停止予約 | 停止処理をするとその時点から継続的な課金を行わないようになる 設定によっては停止リクエストがあった時、次回課金実行日まで停止しないようにすることも可能 |
再開 | 一時停止になっている定期課金を再開する 再開後はリトライ日、もしくは次回課金日に実行される |
リトライ | 定期課金のサイクルでの課金が失敗した際に一定間隔で再度課金を実行する 間隔・回数はリクエストのパラメータまたは管理画面より設定が可能 |
支払い情報の更新 | クレジットカード等、消費者の支払い情報を変更する 詳細はこちら |
定期課金情報の更新 | 管理画面から次回課金日、次回課金金額、メタデータ、メールアドレスなどの編集が可能 |
仮売上 | 定期課金の初回課金を仮売上にする キャプチャされた後に定期課金が開始しサイクル毎に課金が行われる |
回数制限付き定期課金 | 回数を制限した定期課金を行い、回数分の課金が完了後終了する※ |
初回無料の定期課金 | 初回処理でセキュリティコード認証を行うことで、初回の金額が0円の定期課金を作成することが可能 |
分割払い | 各決済フォームで分割回数を指定して決済すると、定期課金として作成される APIで作成する場合は定期課金オブジェクトでフィールドを指定する必要あり |
消費者が自ら支払い方法を更新する方法はいくつか存在します。
新たに情報を登録して加盟店さまで既存の支払い情報と紐づけていただくか、既存の支払い情報を引き継いで更新する2つの場合に分かれます。
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | subscriptionid を利用したフォームを準備する※詳細はこちら |
ウィジェット・インラインフォーム | data-subscription-id を利用したフォームを準備する※詳細はこちら |
定期課金変更URL | 管理画面>定期課金>詳細 から、 カード情報変更フォームのURLを消費者に共有する |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
ウィジェット・インラインフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
以下のページでは「支払い情報の確認・変更画面」についての利用方法を説明します。
決済、定期課金、リカーリングトークンの情報をCSVデータで管理画面からダウンロードすることができます。
作成したデータのダウンロード有効期限は1時間です。
仕様上、50万件以上のダウンロードを行おうとするとエラーが発生しますので、それより少ない件数で実行してください。
各検索条件を指定することで、出力させたい情報を絞り込むことが可能です。
検索条件は加盟店さまがいる国が基準となって変動しますが、CSVに出力される決済データの時間帯は固定で日本標準時(JST)に設定されています。
例:加盟店さまが台湾にいる場合
検索場所…台湾 GMT+8: 2023/7/1 00:00:00 ~2023/8/1 00:00:00
出力結果…日本 GMT+9: 2023/7/1 01:00:00 ~2023/8/1 01:00:00
ダウンロード方法によって取得できる項目は一部異なります。
決済、定期課金、リカーリングトークンに加え、決済の中でも管理画面の「すべてのプロバイダ」から決済方法毎に絞り込むことで一部項目が変化します。
方法毎の取得項目の一覧についてはこちらのファイルから確認して下さい。
項目 | 説明 |
---|---|
課金ID | 課金作成時に生成されるユニークなID |
定期課金ID | 定期課金作成時に生成されるユニークなID |
トークンID | トランザクショントークン作成時に生成されるユニークなID |
加盟店 | 加盟店名 |
店舗 | 店舗名 |
イベント | 実行された処理の種類 ※詳細はページ下部の表 |
イベント作成日時 | イベントが実行された日時 |
イベント金額 | 各イベントの金額 |
イベント通貨 | イベントを実行した時の通貨 |
定期課金作成日時 | 定期課金を作成した日時 |
定期課金更新日時 | 定期課金が更新された日時 |
定期課金金額(サイクル支払額) | サイクル毎に支払う金額 |
トークン作成日時 | リカーリングトークンが作成された日時 |
最後に使用された日時 | リカーリングトークンに課金処理が実行された最新の日時 |
セキュリティコード認証 | セキュリティコード認証を行ったリカーリングかどうか |
モード | 処理のモード本番 or テスト |
定期課金モード | 処理のモード本番 or テスト |
トークンモード | 処理のモード本番 or テスト |
トークンメタデータ | トークンに付与されているメタデータ |
課金メタデータ | 課金実行時に付与されたメタデータ |
課金ステータス | 課金の実行結果 (リンク) |
定期課金ステータス | 定期課金の状態 (リンク) |
決済方法 | 決済方法 |
プロバイダ | 決済方法 |
メソッド | 決済の実行方法 |
ブランド | クレジットカードのブランド、もしくはコンビニ決済の支払い先店舗の種類 |
ゲートウェイ | 決済接続先名 |
エラーコード | エラーコード |
承認番号 | 接続先へリクエストした決済ごとの任意の番号 |
返金作成日時 | 返金実行日時 |
理由 | 返金理由 |
メモ | 返金メモ |
返金金額 | 返金金額 |
返金通貨 | 返金実行時の通貨 |
返金ステータス | 返金の実行結果 |
定期課金種類 | 定期課金の種類通常 or回数指定 or分割 orリボ |
スケジュール期間 | 定期課金のサイクル |
月末に固定 | 定期課金実行日が月末日に固定されているか |
次回課金日(次の支払い) | 次回課金日 |
最後課金 | 最後に定期課金が実行された日時 |
次回課金金額 | 次回課金金額 |
分割残り金額 | 回数指定定期課金の場合、支払い完了するまでの残り金額 |
メールアドレス | メールアドレス |
住所1 | 番地 |
住所2 | ビル名・その他 |
市区町村 | 市区町村 |
都道府県 | 都道府県 |
国 | 国 |
郵便番号 | 郵便番号 |
カードの種類 | クレジットカードの種類クレジット orデビット orプリペイド |
カード名義 | カード名義 |
有効期限(月) | 有効期限(月) |
有効期限(年) | 有効期限(年) |
下4桁 | クレジットカードの下4桁 |
カテゴリー | クレジットカードの種類 |
発行者 | クレジットカードの発行会社 |
発行国 | クレジットカードの発行国 |
CVVオーソリの利用 | セキュリティコード認証を行ったか |
CVVオーソリステータス | セキュリティコード認証の状態 |
お客様名 | 消費者の名前 |
お支払い期限 | 入金(振込)期限日時 |
金融機関番号 | 310 固定 |
金融機関名 | GMOあおぞら 固定 |
支店番号 | 振込先口座の支店番号 |
支店名 | 振込先口座の支店名 |
口座種別 | 普通 固定 |
口座番号 | 振込先口座番号 |
入金額 | 入金した金額(合計ではない) |
銀行実行日 | GMOあおぞら銀行で支払いが実行された日時 |
項目 | GMOあおぞら銀行側で実行された処理入金 or 支払い or(空白) |
入金ステータス | 入金の状態 |
支払い金額 | GMOあおぞら銀行で支払いが実行された金額 |
イベント | 内容 |
---|---|
売上 | 課金処理が成功した |
売上失敗 | 課金処理が失敗した |
取消 | 課金処理が失敗した |
キャンセル | オーソリ(仮売上)のキャプチャ/銀行振込/コンビニ決済/オンライン決済/対面QRコード決済(MPM)を申し込んだ状態で、加盟店さまが決済を取りやめた |
返金 | 返金処理が成功した |
返金失敗 | 返金処理が失敗した |
赤伝返金 | 月をまたいだキャンセル処理が行われた |
ワンタイムトークン発行 | 課金を行うためにワンタイムトークンが発行された |
リカーリングトークン発行 | 支払い情報を登録するために、リカーリングトークンが発行された |
オーソリ | 仮売上処理が成功した |
オーソリ失敗 | 仮売上処理が失敗した |
CVVオーソリ | カード登録をするために、CVV認証を行い成功した |
CVVオーソリ失敗 | カード登録をするために、CVV認証を行い失敗した |
キャップチャー | オーソリ済の状態から、キャプチャー(実売上)処理を行った |
3-Dセキュア登録確認 | 3-Dセキュア認証を行う必要があるかの確認処理を行った |
3-Dセキュア登録確認失敗 | 3-Dセキュア認証を行う必要があるかの確認処理が失敗した |
3-Dセキュア認証処理待ち | 3-Dセキュア認証を行うためのイシュアトークン取得に成功した |
3-Dセキュア認証処理待ち失敗 | 3-Dセキュア認証を行うためのイシュアトークン取得に失敗した |
3-Dセキュア認証 | 3-Dセキュア認証処理が成功した |
3-Dセキュア認証失敗 | 3-Dセキュア認証処理が失敗した |
3-Dセキュア認証タイムアウト | 3-Dセキュア認証処理中に、接続が切れた または 一定時間経過しても処理が完了しなかった等の理由でタイムアウトした |
銀行振込口座発行 | 銀行振込の申込が入ったときに、振込口座が発行された |
銀行振込入金 | 銀行振込の申込に対して、消費者が入金処理を行った |
処理待ち | オーソリ(仮売上)のキャプチャ/銀行振込/コンビニ決済/オンライン決済/対面QRコード決済(MPM)の決済情報を生成し、消費者の課金処理を待っている状態 |
処理待ち失敗 | オーソリ(仮売上)のキャプチャ/銀行振込/コンビニ決済/オンライン決済/対面QRコード決済(MPM)の決済情報の生成に失敗した |
CSVファイルをアップロードすることで、既存の顧客に再び課金することができる機能です。
顧客の支払い情報が予めリカーリングトークンとして登録されている必要があります。
CSVファイルで提供された情報を元に、指定された顧客データの中で最も新しく登録されたリカーリングトークンを識別します。
その後、リカーリングトークンに保存された支払い情報を再利用して、新たな課金を行います。
対応している決済方法は、クレジットカード / Paidyのみです。
銀行振込 / コンビニ決済は対応していません。
※ご利用にはオプション契約が必要です。
※アップロード、結果ダウンロード時の文字コードはUTF-8です。
CSVファイル作成には、4つの項目が必要です:
項目 | 説明 |
---|---|
ジョブID | どの種類のデータを探せばよいかをシステムに知らせます |
顧客データ | 顧客と関連するリカーリングトークンを識別するために使用されるデータです |
金額 | 新しい課金金額を入力する欄です。例:1000 |
通貨 | 新しい課金通貨を選択する欄です。例:円ならJPY、米ドルならUSD |
メタデータを付与するためには、「通貨」の右の列にフィールドを指定する必要があります。
基本のパターンは「:」で区切ったキーと値です。key-one:value one
複数追加したい場合は「|」で区切ります。key-one:value one|key-two:value two
値に「,」を利用する場合は下記のように指定してください。key-one:"value one,123"
顧客IDはメタデータであり、リカーリングトークン登録処理時に任意で付与することができます。
システムでは、この顧客IDでタグ付けされたリカーリングトークンを検索し、新しい課金を行います。
例:1,c5d1b760-c7db-4696-a943-8ce90c988486(顧客ID),1000,JPY
このオプションを使用するには、1列目にジョブIDとして2
を、2列目に顧客のメールアドレスを入力してください。
システムでは、このメールアドレスがタグ付けされた最新のリカーリングトークンを検索し、新しい課金を行います。
例:
2,test@univapay.com(メールアドレス),1000,JPY
リファレンスIDはメタデータであり、リカーリングトークン登録処理時に任意で付与することができます。
システムでは、このリファレンスIDがタグ付けされた最新のリカーリングトークンを検索し、新しい課金を行います。
例:
3,AB0001(リファレンスID),1000,JPY
リカーリングトークン作成時に当システムで自動的に発番されるIDを用います。
システムでは、このIDを持つリカーリングトークンを検索し、新しい課金を行います。
例:
4,11ecc509-cc27-28fe-9283-033858e9ed30(リカーリングトークンID),1000,JPY
※異なるジョブの指定を同じCSVファイルにまとめることも可能です
1,c5d1b760-c7db-4696-a943-8ce90c988486,3000,JPY
2,test001@test.com,2500,JPY
3,AB00001,1000,JPY
4,11ecc509-cc27-28fe-9283-033858e9ed30,500,JPY
CSV課金完了後、管理画面から結果ファイルをダウンロード可能です。
ファイルの内容(ヘッダー)は下記となります。
検索コマンド,検索パラメータ,リクエスト金額,リクエスト通貨,メタデータ,課金ステータス,課金金額,課金通貨,課金ID,エラーメッセージ
3,AB00001,1000,JPY,metadata,SUCCESSFUL,1000,JPY,11ed1a13-525e-1bea-b97b-a
商品機能は加盟店さまが販売している商品の、名称や金額・課金方式について登録することができます。
登録した商品は各決済フォームで選択・指定することでテンプレートのように使用することができます。
※ご利用にはオプション契約が必要になります。
まず管理画面で商品を作成します。
作成方法、各項目についてはこちらを確認して下さい。
次に各決済フォームで登録した商品の情報を指定します。
決済方式 | 利用方法 |
---|---|
リンクフォーム | ・管理画面>リンクフォーム の作成画面で「商品」を有効 かつ 任意の商品を追加して保存 ・作成時に指定した商品コードをパラメータに追加 詳細はこちら |
ウィジェット・インラインフォーム | 作成時に指定した商品コードをパラメータに追加 詳細はこちら |
API | 非対応 |
この機能では、一度の決済で複数の商品を処理できます。
ただ、同時に決済できる商品の種類には利用する決済フォームごとに制限があります。
決済方式 | 可能な利用方法 |
---|---|
リンクフォーム | 都度課金商品同士の複数追加 都度課金商品と定期課金商品(1つまで)の複数追加 定期課金商品同士の複数追加 ※開発中 |
ウィジェット・インラインフォーム | 都度課金商品同士の複数追加 |
,
」(カンマ)で区切って下さい。app-id
,checkout
を指定する必要があります。amount
や定期課金の場合 period
等cvv-authorize
の指定が必要です。capture
を併用して指定してください。テンプレートでは、決済メールテンプレートの作成・編集ができます。
テンプレートを作成しない場合は、決済システム側のデフォルトの決済完了メールが送信されます。
別ページに例を記載していますが、その他メールの内容についてはテストモードで決済をすることで確認できます。
本サービスで発生する各種イベントの結果は「ウェブフック」として、それぞれの指定先URLにHTTP POSTメソッドで送信されます。
ウェブフックは、管理画面>ウェブフック>ウェブフック追加 から設定できます。
複数のイベントで同じURLを、チェックボックスで指定することも可能です。
作成したウェブフックのURL、Authorizationヘッダー、トリガーは、後から変更することもできます。
※通知内容の各オブジェクトの説明、ウェブフック情報の取得・変更処理のAPIについてはこちら
ウェブフックはベストエフォートのため、通知の成功や通知速度を保証するものではありません。
決済の結果を短時間で加盟店さまのページで次の処理を行いたい場合は、APIのリクエストで課金情報の取得(課金:GET)、もしくはウィジェットのパラメータに記述を追加することでコールバックのイベントをリアルタイムで受け取ることを推奨します。
ウェブフックの通知が失敗した場合、返却されたエラーコードによってリトライを行います。
失敗により停止したウェブフックは管理画面・もしくはAPIで再開する必要があります。
リトライ間隔は、1回目は1分でその後指数関数的に増加※し、最大は15分です。
※1分、2分、4分、8分、、と間隔が伸びていくこと
レスポンスステータスコード | 処理 |
---|---|
2xx | 成功のためリトライしない |
3xx | リトライせず、失敗後即停止する |
4xx、500、501、502 | 初回含む最大10回のリトライを行い、最大回数に達すると停止する |
5xx(500-502以外) ※当社側、加盟店さま側の3秒以上のレスポンスのタイムアウト時含む | 初回含む最大10回のリトライを行い、最大回数に達しても停止しない |
200
のレスポンスを返さないと、当社側で失敗と判断してリトライを実行します。管理画面より、ウェブフックが失敗・停止した際にメール通知を受け取る設定ができます。
必要な場合は、管理画面>一般設定>一般>通知 の「ウェブフック」の各項目を有効にしてください。
※イベントごとに取得できる情報の一覧やパラメータの説明、ステータスについては各リソースタイプのリンク先よりご確認ください。
イベント名 | 通知の契機 | 管理画面でのトリガー名 | リソースタイプ |
---|---|---|---|
charge_updated | 都度の課金申込が完了し、ステータスがauthorized (オーソリ済)awaiting (入金待ち:銀行振込やコンビニ決済で発生)のいずれかに更新された時 | 課金情報/ステータスの更新 | 課金 |
charge_finished | 都度の課金処理が完了し、ステータスがcanceled (返金済み)error (エラー)failed (失敗)successful (成功)のいずれかに更新された時 | 課金 | 課金 |
subscription_payment | 定期課金の課金が成功した時 | 定期課金成功 | 定期課金 |
subscription_completed | 回数または総額を指定した定期課金の、すべての支払が完了した時 (または分割払いが選択された場合、 charge_finished と並行) | 定期課金完了 | 定期課金 |
subscription_failure | 定期課金が失敗し、ステータスがunverified (待機中:定期課金を作成し、初回課金を待機中)unconfirmed (作成失敗:初回課金に失敗し、定期課金が稼働していない)unpaid (リトライ待ち)のいずれかに更新された時 | 定期課金失敗 | 定期課金 |
subscription_canceled | 定期課金のステータスがcanceled (永久停止:リクエストで移行し再開不可)に更新された時 | 定期課金永久停止 | 定期課金 |
subscription_suspended | 定期課金のステータスがsuspended (一時停止:管理画面で「一時停止」ボタンを押下、リトライ回数の超過、リクエストのいずれかで移行)に更新された時 | 定期課金一時停止 | 定期課金 |
subscription_created | 新しい定期課金リソースのレコードが作成された時 | 定期課金作成 | 定期課金 |
token_created | トークンが作成された時 | トークン作成 | トランザクショントークン |
token_updated | トークンが更新された時 | トークン更新 | トランザクショントークン |
token_cvv_auth_updated | トークンのdata.cvv_authorized.status が更新された時。 | CVV認証ステータス更新 | トランザクショントークン |
refund_finished | 返金(Refund)が完了successful (成功)failed (失敗) | 返金 | 返金 |
recurring_token_deleted | リカーリングトークンが削除された時 | リカーリングトークン削除 | トランザクショントークン |
token_replaced | リカーリングトークンが更新された時 | リカーリングトークン更新 | トランザクショントークン |
cancel_finished | キャンセルの状態がerror (エラー)failed (失敗)successful (成功)になった時 | キャンセル完了 | キャンセル |
customs_declaration_finished | WeChat Pay(オンライン)の三単合一における「税関申告」が完了 | 税関申告完了 | – |
本サービスには、大きく分けて2通りの利用方法があります。
いずれの方法でも初期設定が必要です。
本サービスの管理画面を用いて、決済金額を加盟店さまにて設定し、作成したフォームのURLを消費者に提供することが可能です。
上記の運用方法の場合は、こちらをご覧ください。
本サービスは、プログラムを記述することでオンライン上にある加盟店さまの商用サイトと連携することが可能です。
予め、システム連携先さまによって、簡易な設定のみで利用可能となっている場合もあります。
具体的には、以下のよう「初回決済(トークン化)のリクエスト方法」と「決済結果の取得方法」を設計・開発することを本サービスでは「連携」と定義しています。
の3通りのインターフェイスを用意しています。詳しくはリンク先を参照してください。
PCI-DSSに準拠している加盟店さまの場合、APIに対して直接カード情報を送信して決済することも可能です。
決済の完了後には、ウェブフックやAPIへのリクエストで結果を取得できます。
ただし、ウェブフックによる結果取得はあくまで簡易的なもので、到達を保証するものではありません。エラーの種類によってはリトライを実行します。詳細はこちらをご覧下さい。
何かしらの原因で取得できなかった場合は、APIにリクエストすることで能動的に取得することを推奨します。
決済情報と消費者に関する個人情報を取得する為のリソースです。
課金(Charge)や定期課金を作成する為にはトランザクショントークンが事前に作成されている必要があります。
決済を行うシステムが PCI DSS に準拠していない場合、カード番号のような保護が必要な情報を直接取得することはできません。
代わりにAndroidのモバイルウィジェットや、本サービスが提供するブラウザウィジェット や 決済端末 など当社の提供するソリューションを使用する必要があります。
1回だけ課金を作ることができ有効期間は作成から5分間です。
大量の課金を処理するために並行して複数のワンタイムトークンを作ることができますが、一定期間内に同一のカードで課金できる回数には制限があります。
課金のオーソリ(仮売上)と、後日に売上を確定させるキャプチャ(実売上)にも使用することができます。
キャプチャは指定した日付に自動的に行うことや任意のタイミングでAPIを呼び出して行うことができます。
キャプチャする金額はオーソリを行った金額以下である必要があります。
課金のオーソリを行うには、オーソリに対応したゲートウェイ(接続先)を使用する必要があります。
詳しくは課金(Charge)を参照してください。
一定のスケジュールで顧客に請求をする必要がある場合、定期課金トークンを使用することをお薦めします。
定期課金を作成することができ、定期課金では課金の間隔、初回金額、定期課金金額、開始日を指定することができます。
このトークンの有効期間は作成から5分間です。
定期課金はキャンセルされるまで期限なしで継続されます。
定期課金は、一定期間をかけて支払いをする為の分割払いのプランを作成することができます。
詳しくは定期課金リソースを参照してください。
当システムでは同一カード番号で定期課金トークンを作成できるのは1つまでのため、5分以内に同一カード番号を入力して送信するとエラーが発生します。
定期課金トークンに対して課金されると再度作成が可能になります。
一度決済したクレジットカードで、任意のタイミングで再び決済を行いたい場合はリカーリングトークンの作成をお勧めします。
リカーリング(再利用可能)トランザクショントークンを作成するには、アカウントに対して作成権限が必要となります。
審査によって、トークンを無制限(infinite
)利用できるか、制限付き(bounded
)で利用可能かが決まります。
無制限の場合は、そのトークンは任意のタイミングで課金を作成することができます。
制限付きの場合は、そのトークンは一定期間に1回しか課金を作成することができません。
トークンが作成されると、その個人情報は UnivaPay のプラットフォーム上に安全に保管され、変更することはできなくなります。
PATCH(変更)可能な情報は、email
/ metadata
とセキュリティコード(CVV)のみです。
CVVはリカーリングトークンを使用している場合で、課金金額がストア設定で指定したしきい値を超えた場合に必要となります。
これは設定された上限を超える追加の請求について、消費者の同意を得る為の仕組みです。
作成後5分以内にトークンが使用されない場合、CVVは自動的に期限切れになり、構成によっては、トークンのCVV値で再度更新する必要がある場合があります。
リカーリングトークンによるクレジットカード払いでのみ利用できる機能です。
有効なクレジットカードとそれに対応するCVVを事前に承認して、後で支払いに利用できるようにします。
たとえば、消費者がカード情報を保存すれば、その後いつでもそれを使って購入することができます。
デフォルトでは、data.cvv_authorize.enabled=true
でない限り、この機能は有効になっていません。
内部的には、システムがゲートウェイに認証リクエスト(1円の仮売のリクエスト)を行い、これには少なくとも数秒かかる場合があります。
これが完了すると、リカーリングトークンはそのゲートウェイに承認済みとしてロックされ、 cvv_authorize.status
は current
に更新されます。
トークンは、承認プロセスが正常に完了するまで課金を作成することはできません。
課金作成を行う前に、常にステータスが current
であることを確認することを推奨します。
それ以外の場合は、続行する前にCVV値を更新してください。
なんらかの理由でゲートウェイが加盟店からリンク解除されている場合、トークンは「非アクティブ」(inactive
)状態に移行するため、CVV値をトランザクショントークンのUPDATEで更新する必要があります。
その後、自動的に認証が試行されます。
トランザクショントークンは以下の支払い手段を持ちます。
支払手段ごとに異なる支払い情報が必要となります。
詳細は、トランザクショントークンの作成 のdataパラメータを参照ください。
フィールド | データ型 | 備考 |
---|---|---|
id | UUID | トランザクショントークンのID |
store_id | UUID | 店舗ID 契約時に自動付与 |
string | 支払いの為の消費者のメールアドレス | |
ip_address | string | 消費者のデバイスのIPv4アドレス |
type | string | トークンが作成できる課金の種類 one_time / subscription / recurring |
active | boolean | トークンが利用済みか無効かどうか ※typeがone_timeかsubscriptionの場合 |
usage_limit | string | typeがrecurringの場合、このトークンが使用可能な間隔 存在し得る値: daily weekly monthly annually null(トークンの利用制限が無い場合) |
mode | string | どのモードでトークンが作成されたか トークン作成時に使ったアプリケーショントークンにより決定 存在し得る値: live(本番モード) test(テストモード) |
payment_type | string | このトークンが保持する支払い手段の種類 |
metadata | object | トランザクショントークンに保存されているメタデータ |
created_on | ISO-8601 | トランザクショントークンの作成日時 |
updated_on | ISO-8601 | トランザクショントークンの更新日時 |
last_used_on | ISO-8601 | トランザクショントークンの最終使用日時 |
data.card.cardholder | string | カードの所有者の名前 |
data.card.exp_month | number | 有効期限(月) |
data.card.exp_year | number | 有効期限(年) |
data.card.last_four | string | カード番号の最後4桁 |
data.card.card_bin | string | カード番号のBIN番号 |
data.card.card_type | string | カードのタイプ |
data.card.country | string | カードの発行国 |
data.card.brand | string | カードブランド 存在し得る値: visa mastercard jcb diners_club unionpay american_express maestro discover unknown |
data.card.category | string | カードのカテゴリー |
data.card.issuer | string | カード発行会社 |
data.card.sub_brand | string | カードのサブブランド |
data.billing.line1 | string or null | カードの請求先住所1 |
data.billing.line2 | string or null | カードの請求先住所2 |
data.billing.state | string or null | カードの請求先住所の州 / 地域 / 都道府県 |
data.billing.city | string or null | カードの請求先住所の市町村区 |
data.billing.country | string (ISO Alpha-2) | カードの請求先住所の国 |
data.billing.zip | string or null | カードの請求先住所の郵便番号 |
data.billing.phone_number.country_code | string or null | 請求先住所の電話番号の国コード |
data.billing.phone_number.local_number | string | 請求先住所の電話番号 |
data.cvv_authorize.enabled | boolean | セキュリティコード認証機能が有効かどうか |
data.cvv_authorize.status | string | 認証のステータス 存在し得る値: 保留(pending) 処理中(current) 失敗(failed) 非アクティブ(inactive) |
data.cvv_authorize.currency | string (ISO-4217) | 手動で更新された場合に認証を行うように要求された通貨 |
data.cvv_authorize.charge_id | string(UUID) | 認証に使用された課金情報のID |
data.cvv_authorize.credentials_id | string(UUID) | 認証に使用された資格情報ID トークンはこの資格情報にロックされ、非アクティブ化するとトークンは非アクティブ(inactive)状態に変わる |
data.gateway | string | 支払い処理を行ったゲートウェイ QRコード支払いの場合に利用可能 |
data.brand | string | ブランド onlineとbank_transfer支払いの場合に利用可能 |
data.issuer_token | string | イシュアトークン payment_typeがonlineの場合 |
data.issuer_token_payload | string | イシュアトークンのペイロード payment_typeがonlineの場合 |
data.call_method | string | クライアントが要求した実行方法 存在し得る値: HTTP get HTTP post sdk MiniApp app Native App web in-app browser H5 |
data.user_identifier | string | 一部のブランドで使用されている消費者固有の識別子 |
data.os_type | string | モバイルデバイスのOS |
data.customer_name | string | 顧客名 コンビニ払いの場合に利用可能 |
data.phone_number.country_code | string or null | 電話番号の国コード |
data.phone_number.local_number | string | 電話番号 |
data.convenience_store | string | 支払いを行うコンビニエンスストア名 コンビニ払いの場合に利用可能 |
data.expiration_period | string (ISO-8601 Duration) | 支払期間 コンビニ払い / 銀行振込の場合に利用可能 |
data.expiration_time_shift | string (ISO-8601 Duration) | 支払期限の時間 コンビニ払い / 銀行振込の場合に利用可能 |
data.match_amount | string | 振込金額のマッチングアルゴリズム 銀行振込の場合に利用可能 |
data.bank_code | string | 振込支払先の銀行コード 銀行振込の場合に利用可能 |
data.bank_name | string | 振込支払先の銀行名 銀行振込の場合に利用可能 |
data.branch_code | string | 振込支払先の支店コード 銀行振込の場合に利用可能 |
data.branch_name | string | 振込支払先の支店名 銀行振込の場合に利用可能 |
data.account_number | string | 振込支払先の口座番号 銀行振込の場合に利用可能 |
data.account_holder_name | string | 振込支払先の口座名義 銀行振込の場合に利用可能 |
イシュアトークン
トランザクショントークン CREATE リクエストは、クレジットカード情報を加盟店サイト内に入力させ、本サービスのAPIに送信します。
このリクエストを行うには PCI DSS に準拠している必要があります。
PCI DSSに準拠していない場合はこのリクエストを行うことはできませんのでご注意ください。
PCI DSSに準拠しておりトランザクショントークン CREATE リクエストの利用をご希望の場合は、弊社までご連絡ください。
トランザクショントークンオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
トランザクショントークンを作成した後はトランザクショントークンIDを指定して課金 / 定期課金を行ってください。
{secret}
部分){jwt}
部分)curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
payment_type | string | 支払い手段を参照 |
type | string | トークンの種類を参照 特定の支払い手段により種類が制限される場合あり 繰り返しに設定されていて、アカウントに無限に課金可能なトークンを作成する権限がない場合は、 usage_limit パラメーターを指定する必要あり |
usage_limit | string | このトークンがリカーリングトークンの場合に使用できる頻度 無限に課金可能なリカーリングトークンを作成する権限がある場合は空白可 |
string | メールアドレス ※オンライン決済は任意 | |
ip_address※ | string | ※we_chat_online(web, http_get)の場合 消費者のデバイスのIPv4アドレス |
metadata | object | メタデータを参照 |
metadata.univapay-reference-id | string (フリーフォーマット) | 任意の値 |
metadata.univapay-customer-id | string (UUID) | 顧客ID |
data | object | 支払い手段ごとに必要な情報が異なり、下記記載箇所よりそれぞれ詳細のパラメータを参照card (カードデータ), konbini (コンビニ払いデータ), online (オンライン払いデータ)のいずれか |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.cardholder | string | クレジットカードの所有者の名前 |
data.card_number | string | カード番号 |
data.exp_month | string | 有効期限(月) |
data.exp_year | string | 有効期限(年) |
data.cvv | string | CVV値 |
data.line1 | string | 住所1 |
data.line2 | string | 住所2 |
data.state | string | 住所の州/地域/都道府県 |
data.city | string | 住所の市町村区 |
data.country | string | 国 (ISO 3166-1形式のアルファベット2文字の国コード) |
data.zip | string | 郵便番号 |
data.phone_number.country_code | string | 電話番号の国コード |
data.phone_number.local_number | string | 電話番号 |
cvv_authorize.enabled | boolean | セキュリティコード認証機能が有効かどうか デフォルト値:false |
cvv_authorize.currency | string (ISO-4217) | 認証を行う通貨 デフォルト値:加盟店の基本通貨 |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.customer_name | string | 消費者名 |
data.phone_number.country_code | string | 電話番号の国コード 日本の番号のみ可能 |
data.phone_number.local_number | string | 消費者の電話番号 |
data.convenience_store | string | 消費者が支払いを選択したコンビニエンスストアseven_eleven , family_mart , lawson , mini_stop , seico_mart , pay_easy , circle_k , sunkus , daily_yamazaki , yamazaki_daily_store のいずれか |
data.expiration_period | string (ISO-8601 Duration) | 支払いの有効期限(作成日から最短30分最大60日間) デフォルトの値:30日間 例: P7D ※課金:Createで支払い期限日時を指定した場合はそちらを優先 |
data.expiration_time_shift | string (ISO-8601 Time with Timezone) | expiration_period を考慮した上で設定する時間例: expiration_period を追加した後の有効期限が2023-06-01T15:00:00+09:00の場合、expiration_time_shift を09:00:00+09:00と設定すると有効期限は2023-06-01T09:00+09:00※このフィールドが設定されている場合、 expiration_period は1日以上※コンビニ決済の場合のみ利用可能 ※セブンイレブン、セイコーマート/他支払(サークルK/サンクス/ペイジー)は時刻指定が利用できないためこのフィールドは無効 |
オンライン払いを選択した場合、課金を作成後QR事業者側の支払い画面を呼び出すためのURLが必要です。
イシュアトークンを取得するリクエストを別途送る必要があります。
詳しくはこちらをご覧ください。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.brand | string | 使用する支払いゲートウェイalipay_online (Alipay China),alipay_plus_online (Alipay+),pay_pay_online (Pay Pay),we_chat_online (WeChat Pay),d_barai_online (d払い)のいずれか |
data.call_method | string | クライアントが要求した実行方法http_get , http_post , sdk , web , app のいずれかsdk :ペイメントプロバイダーが提供するSDKで直接使用することweb :特定のAPIを拡張した特殊なブラウザ環境で直接使用することapp :ペイメントプロバイダーが提供するSDKのネイティブアプリ環境での利用http_get またはhttp_post を使用すると、issuer_token を新しいブラウザウィンドウまたは適切な対応するHTTPメソッドのiframe内で直接実行することが可能以下のブランドでは、以下の呼び出し方法に対応 – alipay_online: http_get , http_get_mobile , sdk (miniapp), app – alipay_plus_online: http_get , http_get_mobile , sdk (miniapp), app – pay_pay_online: http_post – we_chat_online: http_get (H5), sdk (miniapp), app (in-app), web (official account)※ http_get (H5)の場合、リクエスト前に利用予定のウェブブラウザのドメインをサポートデスクへ連絡する必要あり– d_barai_online: http_post |
data.user_identifier | string | 通常、ペイメントゲートウェイアプリケーションによって提供される、消費者のデバイスを一意に識別することができる消費者固有の識別子 不正行為を防止するために一部の決済事業者が要求しているもの これらのコールメソッドの以下のブランドでは、消費者固有の識別子の提供が必要 – we_chat_online : sdk (miniapp), web (official account) |
data.os_type | string | 使っているモバイルデバイスのOSandroid ,ios のいずれかこれらのコールメソッドの以下のブランドでは提供が必要 – alipay_plus_online : http_get_mobile , app |
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
data.brand | string | 使用する支払いゲートウェイaozora_bank GMOあおぞらネット銀行のみ指定可能 |
curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}
'
--header 'Content-type: application/json'
--data "{
"payment_type": "card",
"email": "test@test.com",
"type":"recurring",
"data": {
"cardholder": "TARO YAMADA",
"card_number": "4000020000000000",
"exp_month": "12",
"exp_year": "2099",
"cvv": "123",
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": "1",
"local_number": "8029854583",
"cvv_authorize.enabled":"true"
},
"currency": "JPY"
}
}"
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-25T03:58:49.321896Z",
"updated_on": "2024-06-25T03:58:49.321896Z",
"last_used_on": null,
"data": {
"card": {
"cardholder": "TARO YAMADA",
"exp_month": 12,
"exp_year": 2099,
"card_bin": "400002",
"last_four": "0000",
"brand": "visa",
"card_type": "credit",
"country": "US",
"category": null,
"issuer": "RIVER VALLEY CREDIT UNION",
"sub_brand": "none"
},
"billing": {
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": 1,
"local_number": "8029854583"
}
},
"cvv_authorize": {
"enabled": false,
"status": null,
"charge_id": null,
"credentials_id": null,
"currency": null
},
"cvv_authorize_check": {
"status": null,
"charge_id": null,
"date": null
}
}
}
トランザクショントークンオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){Id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/tokens/{id} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/tokens/11ef32a7-3a71-8662-803f-1bc27702eeec \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-25T03:58:49.321896Z",
"updated_on": "2024-06-25T03:58:49.321896Z",
"last_used_on": null,
"data": {
"card": {
"cardholder": "TARO YAMADA",
"exp_month": 12,
"exp_year": 2099,
"card_bin": "400002",
"last_four": "0000",
"brand": "visa",
"card_type": "credit",
"country": "US",
"category": null,
"issuer": "RIVER VALLEY CREDIT UNION",
"sub_brand": "none"
},
"billing": {
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": 1,
"local_number": "8029854583"
}
},
"cvv_authorize": {
"enabled": false,
"status": null,
"charge_id": null,
"credentials_id": null,
"currency": null
},
"cvv_authorize_check": {
"status": null,
"charge_id": null,
"date": null
}
}
}
トランザクショントークンオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
リクエストURLにクエリパラメータを追加することで、表示するリソースを絞り込むこともできます。
課金 / 返金などをまとめて表示させたい場合はトランザクション:Listを推奨します。
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/tokens \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/tokens \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
from | string (ISO-8601) | 指定した日付以降に作成されたトランザクショントークンを表示 例: 2024-01-23T00:00:00Z |
to | string (ISO-8601) | 指定した日付以前に作成されたトランザクショントークンを表示 例: 2024-01-23T00:00:00Z |
id | string (UUID) | トランザクショントークンID |
short_id | string | トランザクショントークンの下6桁 |
type | string | トランザクショントークンの種類をフィルタリングrecurring ,subscription のいずれか |
string | メールアドレスでフィルタリング | |
cardholder | string | トランザクショントークンに登録されたカード名義でフィルタリング ※決済方法がクレジットの場合のみ利用可能 |
card_exp | number | yyyy-MM の形式でカードの有効期限でフィルタリング例:2024-01 ※決済方法がクレジットの場合のみ利用可能 |
card_last_four | number | カード番号の下4桁でフィルタリング ※決済方法がクレジットの場合のみ利用可能 |
phone_number | number | 電話番号でフィルタリング |
brand | string | 決済事業者のブランドでフィルタリング 例: visa , alipay_china , pay_pay_mpm , seven_eleven , we_chat_online , aozora_bank 等 |
customer_id | string (UUID) | `univapay-customer-id`を利用して登録されたカスタマーIDのメタデータでフィルタリング |
mode | string | モードでフィルタリングするlive またはtest |
metadata | string | メタデータでフィルタリング |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/tokens \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/tokens \
--header 'Authorization: Bearer {secret}.{jwt}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-25T03:58:49.321896Z",
"updated_on": "2024-06-25T03:58:49.321896Z",
"last_used_on": null,
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"user_data": {
"cardholder_name": "taro yamada",
"email": "test@test.com",
"brand": "visa",
"gateway": null,
"service_provider": null
}
},
{
"id": "11ef2f91-5611-1c20-8699-273823d9185d",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "demo@demo.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-21T05:44:33.249892Z",
"updated_on": "2024-06-24T07:02:18.28909Z",
"last_used_on": "2024-06-24T07:02:18.067656Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"user_data": {
"cardholder_name": "hanako yamada",
"email": "demo@demo.com",
"brand": "visa",
"gateway": null,
"service_provider": null
}
},
<中略>
],
"has_more": true,
"total_hits": 99
}
トランザクショントークンオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/tokens/{id} \
--header 'Content-type: application/json'
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
string | 支払いの為の顧客のメールアドレス | |
cardholder | string | カード名義 |
metadata | object | トランザクショントークンに保存されているメタデータ |
data.cvv | number | カードのCVV リカーリングトークンを使用して課金を作成する際に RECURRING_USAGE_REQUIRES_CVV エラーがした場合に必要CVVだけを更新する場合はアプリケーショントークンのシークレットは不要 |
data.line1 | string | 住所1 |
data.line2 | string | 住所2 |
data.state | string | 住所の州/地域/都道府県 |
data.city | string | 住所の市町村区 |
data.country | string | 国 (ISO 3166-1形式のアルファベット2文字の国コード) |
data.zip | string | 郵便番号 |
data.phone_number.country_code | string | 電話番号の国コード |
data.phone_number.local_number | string | 電話番号 |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/tokens/11efa58e-e0b7-9a02-9ca6-7788908dad3a \
--header 'Authorization: Bearer {secret}.{jwt}'
--data '{
"email": "test.update@test.com",
"data": {
"cardholder": "TARO YAMADA",
"card_number": "4000020000000000",
"exp_month": "12",
"exp_year": "2099",
"cvv": "123",
"line1": "11111",
"line2": "222",
"state": "Tokyo",
"city": "テスト区一丁目",
"country": "JP",
"zip": "1234567",
"phone_number": {
"country_code": "81",
"local_number": "08000000000"
}
}
}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11efa58e-e0b7-9a02-9ca6-7788908dad3a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test.update@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": { },
"created_on": "2024-11-18T09:24:14.584144Z",
"updated_on": "2024-11-19T05:53:48.547425Z",
"last_used_on": "2024-11-18T09:24:14.795465Z",
"data": {
"card": {
"cardholder": "TARO YAMADA",
"exp_month": 12,
"exp_year": 2099,
"card_bin": "400002",
"last_four": "0000",
"brand": "visa",
"card_type": "credit",
"country": "US",
"category": null,
"issuer": "RIVER VALLEY CREDIT UNION",
"sub_brand": "none"
},
"billing": {
"line1": "11111",
"line2": "222",
"state": "Tokyo",
"city": "テスト区一丁目",
"country": "JP",
"zip": "1234567",
"phone_number": {
"country_code": 81,
"local_number": "08000000000"
}
},
"cvv_authorize": {
"enabled": false,
"status": null,
"charge_id": null,
"credentials_id": null,
"currency": "JPY"
},
"cvv_authorize_check": {
"status": null,
"charge_id": null,
"date": null
},
"three_ds": {
"enabled": false,
"status": null,
"redirect_endpoint": null,
"redirect_id": null
}
}
}
トランザクショントークンオブジェクトに対するDELETEリクエストには以下が必要です。(括弧内は入力箇所)
削除した際紐づいていた定期課金などは行えなくなりますのでご注意ください。
{storeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request DELETE \
--url https://api.univapay.com/stores/{storeId}/tokens/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request DELETE \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/tokens/11ef295d-9ead-08f2-aad1-6f74362679e5 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記はBodyの記述例でリクエストした場合の例です。
204
トランザクショントークンオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){Id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/tokens/{id} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/tokens/11ef32a7-3a71-8662-803f-1bc27702eeec \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"email": "test@test.com",
"payment_type": "card",
"active": true,
"mode": "test",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {},
"created_on": "2024-06-25T03:58:49.321896Z",
"updated_on": "2024-06-25T03:58:49.321896Z",
"last_used_on": null,
"data": {
"card": {
"cardholder": "TARO YAMADA",
"exp_month": 12,
"exp_year": 2099,
"card_bin": "400002",
"last_four": "0000",
"brand": "visa",
"card_type": "credit",
"country": "US",
"category": null,
"issuer": "RIVER VALLEY CREDIT UNION",
"sub_brand": "none"
},
"billing": {
"line1": "123 abc st",
"line2": "apt 123",
"state": "OR",
"city": "Portland",
"country": "US",
"zip": "12345",
"phone_number": {
"country_code": 1,
"local_number": "8029854583"
}
},
"cvv_authorize": {
"enabled": false,
"status": null,
"charge_id": null,
"credentials_id": null,
"currency": null
},
"cvv_authorize_check": {
"status": null,
"charge_id": null,
"date": null
}
}
}
本サービスと加盟店さまの商用サイトとを連携するための実装ガイドです。
「はじめに」を通読の上、ご覧ください。
ウィジェットは、消費者がカード情報を入力するためのインターフェイスで、ポップアップウインドウとして表示されるタイプのフォームです。
ウィジェットは、以下の役割を果たします。
消費者に、希望の支払い方法をクリック(またはタップ)で選択させます。
この選択画面で表示される選択肢は、ウィジェットのタグまたはコードの記述内容に依存します。なお、支払い方法を単一に指定した場合、この選択画面は省略されます。
選択された「支払い方法」毎に予め設定されている必須情報を、消費者に入力させます。
入力欄はウィジェットのタグまたはコードの記述内容によって、追加することも可能です。
詳しくはこちら
選択された「支払い方法」毎に、各種処理を行います。
一部、赤字※印の項目は申込完了後、消費者が支払いを行うのを待機します。
誤って「決済完了」とみなさないよう、くれぐれも注意してください。
支払い方法 | 処理 | 認証後の処理 |
---|---|---|
クレジットカード | カード会社に対し、要求された処理(オーソリ/キャプチャ)で認証 | 認証済みのカード情報をトークン化して決済処理 以降、以下を<共通処理>と記載: JavaScriptでコールバック ウェブフック APIからの取得が可能に |
銀行振込 | その申込専用の振込口座を発行し、メール送信(疎通は確認しない) | 本サービスが振込完了の通知を受け取り次第、完了判定※ <共通処理> |
Paidy | Paidyのフォームに遷移し、メールアドレスや電話番号で認証 | 認証時点で完了判定 <共通処理> |
オンラインモバイル | 各銘柄の挙動詳細はこちら | 本サービスが通知を受け取り次第、完了判定 <共通処理> |
コンビニ決済 | 支払いたいコンビニを選択し「申込」を行い、メール送信(疎通は確認しない) | 本サービスが支払完了の通知を受け取り次第、完了判定※ <共通処理> |
ウィジェット内の表示項目は、設置時のパラメータによって以下を制御可能です。
詳しくはこちら
管理画面から、ウィジェットのデザインを編集可能です。
店舗>一般>全体設定>ブランディング から、PNGまたはJPGで店舗アイコンを編集できます。
未編集の場合は標準(デフォルト)の画像が表示されます。
店舗>決済フォーム>ウィジェット>テーマ から、タイトル背景とメイン(タイトルバーとボタンに使用)のカラーが編集可能です。
ウィジェットを利用した場合の決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
このページは初期設定が完了し、ウィジェットの概要が通読されていることを前提に作成しています。
「ウィジェットの概要」で説明の通り、支払い方法の選択次第で「決済」でなく「申込」がなされる可能性があるため、このページでは、ウィジェットで行われる「決済または申込」を「処理」と表現します。
ウィジェットをHTMLで設置するには、1行の<script>タグと、1つの<form>タグを用います。
<form>タグの中には<span>要素でパラメータ(各種フィールドとその値)を記述します。
アプリトークンは非常に長く規則性のない文字列なので、事前に管理画面でアプリトークンを控えるか、ジェネレータからのコピーを推奨します。
以下は、「支払う」と表示されたボタンでの、1000円を決済するためのウィジェットの設置例です。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<form action="<任意のURL>">
<span data-app-id="<アプリトークンID>"
data-txt="支払う"
data-checkout="payment"
data-amount="1000"
data-currency="jpy"
data-auto-submit="true"
></span>
</form>
処理の完了後、form action= で指定した”<任意のURL>”に対し、以下をsubmitします。
data-checkout-type=“token”
指定時には univapayTokenId
)data-checkout-type=“payment”
指定時には univapayChargeId
、data-token-type=“subscription”
指定時には univapaySubscriptionId
)処理結果によって、消費者の画面遷移をコントロールしたい場合は、これらを取得するプログラムを作成してください。
パラメータ(基本動作)で解説の通り、data-auto-submit
を利用することにより、完了ボタンを押してウィジェットを閉じた時、ウィジェットが含まれるフォームを自動でsubmit
する設定も可能です。
上記を利用して、spanタグの外側に設置したformタグのaction属性に指定したURLに遷移するようにすることも可能です。
Javascriptでウィジェットを設定する際は、<script>タグを利用することで、HTMLファイル内にJacaScriptのコードを埋め込んでウィジェットを設置することもできます。
以下は、「支払う」と表示されたボタンでの、1000円を決済するためのウィジェットの設置例です。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
var checkout = UnivapayCheckout.create({
appId: "<TOKEN>",
checkout: "payment",
amount: 100,
currency: "jpy",
cvvAuthorize: true,
});
var button = document.querySelector("#univapay-payment-checkout");
button.onclick = function () {
checkout.open();
};
function handleSubmit() {
event.preventDefault();
};
</script>
まず、ウィジェットを含むページに次の行をHTMLでの設置と同様に含める必要があります。
<script src="https://widget.univapay.com/client/checkout.js"></script>
HTMLでの設置とは異なり、自動的にページ上にボタンは作成されませんので、<form>タグと<button>タグで送信するための記述をします。
submitイベントが発火に反応して、onSubmitに指定された関数”handleSubmit()”を呼び出します。
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
<!--
タグ内にJavaScriptの記述をします
内容は以下で説明
-->
</script>
次に、UnivapayCheckout.createを呼び出す記述をします。
例えば、1000円の支払いを処理するウィジェット・オブジェクトを作成するには、以下を記述する必要があります。
var checkout = UnivapayCheckout.create({
appId: "<TOKEN>",
checkout: "payment",
amount: 1000,
currency: "jpy",
});
次に、<button>タグのonclick関数の処理を記述します。UnivapayCheckout.createによって返されたオブジェクトでopen関数を呼び出すことにより、ウィジェットを開きます。
var button = document.querySelector("#univapay-payment-checkout");
button.onclick = function () {
checkout.open();
};
最後に、formの送信を防ぐため、<button>要素をクリックしてsubmitイベントが発火した際の関数handleSubmitの記述をします。
function handleSubmit() {
event.preventDefault();
};
以下パラメータにより、ウィジェットのデザインが変更可能です。
その他、どんな処理をさせるか等の動作詳細は、左メニューから各種パラメータを参照のうえ、実装してください。
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用フィールド | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-text | テキスト(無制限) | ウィジェットを展開するためのボタン内テキスト | Pay with UnivaPay |
data-size | 半角英 | ウィジェットを展開するためのボタンサイズ 指定可能な値: small ,normal ,large | |
data-class | 半角英数 | ウィジェットを展開するためのボタンのclass属性に付与する値 webサイト側の style を記述を適用可能 | |
data-style | 半角英数 | ウィジェットを展開するためのボタンのstyle属性に付与する値 webサイト側の style を適用せず、インラインでstyle記述したい場合に利用 | |
data-hover-style | 半角英数 | ウィジェットを展開するためのボタンのhover時のstyle(インライン記述) | |
data-header header | テキスト(無制限) | ウィジェットのヘッダーに表示したいテキスト | 本サービス名 |
data-title title | テキスト(無制限) | ウィジェットのサブヘッダーに表示したい店舗名 | 管理画面での設定に依存 |
data-description description | テキスト(無制限) | ウィジェットのサブヘッダーの、店舗名の下に表示したいテキスト | 管理画面での設定に依存 |
data-submit-button-text submitButtonText | テキスト(無制限) | ウィジェットの「支払い」ボタンに、代わりに表示したいテキスト | 支払う |
処理の結果は、JSONデータとして管理画面の「Webhook」セクションで指定されたURLにPOSTされます。
「リファレンス > ウェブフック」を参照して、POSTされたデータを取得して注文状況などを更新するスクリプトを作成してください。
ウィジェットタグ内のソースコードに下記の関数を定義しておくことで、各イベントが発生した時にその内容を含めた通知を実行します。
処理結果に応じて元のページの表示内容や、遷移先をコントロールしたい場合は、こちらか、フォームタグからsubmitされる値を利用してください。
イベント | 内容 |
---|---|
Opened (univapay:opened) | 決済フォームを開くことで発生するイベントです。その他の情報は含みません。 |
Closed (univapay:closed) | 決済フォームを閉じることで発生するイベントです。他の情報は含みません。 |
Success (univapay:success) | 決済が成功すると発生するイベントです。生成されたリソースのIDと処理の詳細情報が含まれます。 |
Error (univapay:error) | いずれかの段階で処理が失敗することで発生するイベントです。生成されたリソースのIDが含まれます。 |
Token created (univapay:token-created) | トランザクショントークンが作成されたときに発生するイベントで、トークンの詳細情報を含みます。定期課金やリカーリング課金のように作成済のトランザクショントークンを利用して決済をする場合は発生しません。 |
Charge created (univapay:charge-created) | 課金が作成されたときに発生するイベントで、課金の詳細情報が含まれています。成功したかどうかに関わらず発生します。 |
Subscription created (univapay:subscription-created) | 定期課金が作成されたときに発生するイベントで、定期課金の詳細情報が含まれています。成功したかどうかに関わらず発生します。 |
Validation error (univapay:validation-error) | このイベントには各フィールドにエラーがある場合に発生します。エラーがない場合、または各フィールドがまだ選択されていない場合、オブジェクトにはオブジェクトは空白になります。 |
<script>
window.addEventListener("univapay:success", (e) => { console.info("Success event", e) }, false);
window.addEventListener("univapay:token-created", (e) => { console.info("Token event", e) }, false);
window.addEventListener("univapay:charge-created", (e) => { console.info("Charge event", e) }, false);
window.addEventListener("univapay:subscription-created", (e) => { console.info("Subscription event", e) }, false);
window.addEventListener("univapay:validation-error", (e) => { console.error("Validation error event", e) }, false);
</script>
ウィジェットの基本動作を制御するパラメータです。
定期課金、分割払い、デザインについては別途パラメータ解説ページがあり、左メニューから閲覧可能です。(デザイン用パラメータは、「ウィジェットの設置」ページに記載)
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-app-id appId | 半角英数 | 該当店舗のアプリケーションID 初期設定で作成したもの インラインフォームで利用可 | |
data-checkout checkout | 半角英 | 処理の内容 指定可能な値(意味): token (トークンのみ作成し課金しない)payment (トークンを作成し課金する)※括弧とその中の文字は値として不要 token ,payment はインラインフォームで利用可 | |
data-payment-methods paymentMethods | 半角英 | フォームで選択できる支払い方法の詳細 カンマ区切りで複数指定可 指定可能な値(意味): card (クレジットカード)konbini (コンビニ決済またはPay-easy)paidy (ペイディ)pay_pay_online (PayPayオンライン)we_chat_online (WeChatPayオンライン)alipay_online (Alipayオンライン)alipay_plus_online (Alipay+オンライン)bank_transfer (銀行振込)※ online 指定で末尾に_online のつくものを一括指定各決済手段が利用可能な設定なら、ブランドで更に絞込み可能。 下記パラメータを利用するなら、 card , konbini は指定不要。クレジット: visa ,mastercard ,jcb american_express ,diners_club unionpay ,maestro ,discover コンビニ: seven_eleven ,family_mart ,lawson mini_stop ,seico_mart ,pay_easy daily_yamazaki ,yamazaki_daily_store | |
data-amount amount | 半角数 | 課金額 回数無制限の定期課金の場合は初回の額 分割払いおよび回数制限付き定期課金の場合は合計額 日本円以外で実際に流通する補助通貨がある場合、最小の補助通貨の額で指定(例:USD9.00の時はcent基準の 900 )インラインフォームで利用可 | |
data-currency currency | 半角英 | 通貨 ISO 4217基準で記述 インラインフォームで利用可 | |
data-token-type tokenType | 半角英 | 作成するトランザクショントークンの種類 指定可能な値(意味): one_time (一度だけ課金可)recurring (繰り返し課金可)subscription (定期課金)インラインフォームで利用可 | one_time |
data-product-codes productCodes | 半角英数 | 商品コード 未設定の値でエラー カンマ区切りで複数指定可 ※複数商品の利用方法や注意点はこちら amount 等、商品に含む情報指定時はそちらを優先※商品に含まれない情報は他パラメータで併用する必要がある(以下例) ・初回0円の定期課金商品利用: data-cvv-authorize ・仮売上: data-capture インラインフォームで利用可 | |
data-product-code-quantities productCodeQuantities | 半角数 | 商品コードの数data-product-codes を指定した場合に指定※管理画面で data-product-codes を指定した場合は管理画面上で自動で付与される例: data-product-codes=testcode1 data-product-code-quantities=2 この場合、商品コード「testcode1」の商品が2つ カンマ区切りで商品コードを複数指定している場合、商品コードの数もカンマ区切りで指定 例: data-product-codes=testcode1,testcode2 data-product-code-quantities=1,1 この場合、商品コード「testcode1」の商品が1つ、商品コード「testcode2」の商品が1つ インラインフォームで利用可 | |
data-name name | 半角英数 | 処理の完了時に、formのsubmit時やJavaScriptコールバック時に適用される「トークン」のフィールド名 ウェブフックやAPIからの結果取得時には適用されない 未指定時のフィールド名: トランザクショントークンのみ作成 univapayTokenId 定期課金作成 univapaySubscriptionId 課金作成 univapayChargeId | 左欄参照 |
data-capture capture | 真偽(true /false ) | クレジットカードの処理時に「キャプチャ」を行うか falseを指定すると「オーソリ」を行う コンビニ決済/銀行振込の処理時には、値を不問で data-capture-at ,captureAt を有効にするインラインフォームで利用可 | true |
data-capture-at captureAt | 半角英数 YYYYMMDD または YYMMDD T hhmmss | クレジットでauth="true" なら、この指定日に自動的にキャプチャ実行(1h後〜7D以内)コンビニ決済/銀行振込の場合、支払い期限日時 注意: コンビニ決済で支払いの有効期限を「日時単位」で指定したい場合は、 data-payment-methods /paymentMethods を以下のみに限定— family_mart ,lawson ,mini_stop daily_yamazaki ,yamazaki_daily_store (セブン・イレブン、セイコーマート、Pay-Easyは時間指定無効のため除外) クレジット:日付のみ指定で指定日の9:00 コンビニ決済/銀行振込:指定日の24:00 当日で時間未指定はエラー インラインフォームで利用可 | しない |
data-expiration-period expirationPeriod | 半角英数 | フォームでの申込処理から支払い(振込)までの有効期限 ISO8601 duration text で記述 銀行振込/コンビニ決済で有効 指定可能な値(意味): PxD (x日後)PxM (xか月後)インラインフォームで利用可 | P30D |
data-expiration-time-shift expirationTimeShift | 半角数(記号は: ,+ )hh:mm:ss[+09:00] | 銀行振込/コンビニ決済で有効な、フォームでの申込処理から支払い(振込)までの有効期限のうち、時間の部分data-expiration-period がP1D 以上の指定が必要「セブンイレブン」「セイコーマート/他支払(サークルK/サンクス/ペイジー)」は時刻指定が不可で、指定日の24:00まで受付 末尾に世界標準時間との誤差を入力(日本の場合は [+09:00] )インラインフォームで利用可 | |
data-email | 半角英数 | メールアドレス 送信した場合、入力済みの欄を表示 インラインフォームで利用可 | |
data-address address | 真偽(true /false ) | 配送先住所true で入力欄(郵便番号、都道府県、市区町村、丁目・番地、マンション名・部屋番号)を表示インラインフォームで利用可 | false |
data-shipping-address-country-code shippingAddressCountryCode | ISO 3166-2に記載されている国コード | 配送先住所の国 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-zip shippingAddressZip | 制限なし | 配送先住所の郵便番号 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-state shippingAddressState | 制限なし | 配送先住所の都道府県 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-city shippingAddressCity | 制限なし | 配送先住所の市区町村 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-line1 shippingAddressLine1 | 制限なし | 配送先住所の丁目・号・番地 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-line2 shippingAddressLine2 | 制限なし | 配送先住所のマンション名・部屋番号 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-require-name requireName | 真偽(true /false ) | true 指定で、氏名の入力欄を表示(入力必須)Paidy、コンビニ決済、銀行振込では既存のため無効 | false |
data-require-email requireEmail | 真偽(true /false ) | true 指定で、メールアドレスの入力欄を表示(入力必須)クレジットカード、コンビニ決済では既存のため無効 | false |
data-require-phone-number requirePhoneNumber | 真偽(true /false ) | true 指定で、電話番号の入力欄を表示(入力必須)インラインフォームで利用可 | false |
data-phone-number phoneNumber | 半角数(ハイフンなし) | 電話番号 送信した場合、入力済みの欄を表示 ※電話番号を必須にしている場合のみ | |
data-require-billing-address requireBillingAddress | 真偽(true /false ) | true 指定で、請求先住所の入力欄を表示(入力必須) | false |
data-cvv-authorize cvvAuthorize | 真偽(true /false ) | true 指定で、セキュリティコード認証の実行クレジット決済のみ有効 カード情報の登録のみ: data-checkout="token" 、data-token-type="recurring" を指定初回0円の定期課金を作成: data-checkout="payment" 、data-token-type="subscription" (または"recurring" ) を指定なおセキュリティコードは本サービスで保存していません インラインフォームで利用可 | false |
data-show-cvv showCvv | 真偽(true /false ) | false 指定でセキュリティコード認証欄を非表示化クレジット決済のみ、かつ審査時にセキュリティコード認証を「必須」と指定されていない場合のみ有効 インラインフォームで利用可 | true |
data-locale locale | 半角英 | 表示される言語auto (ブラウザ依存),en-us (米国英語),ja-jp (日本語),zh-tw (台湾繁体字),zh-cn (中国簡体字),en (英国英語),ja (日本語),zh (中国語簡体字),ko(韓国語),th(タイ語),ru(ロシア語)インラインフォームで利用可 | |
data-univapay-reference-id univapayReferenceId | 半角英数 | リファレンスID CSV課金時の検索キー data-token-type="recurrring" なら有効インラインフォームで利用可 | |
data-univapay-customer-id univapayCustomerId | 半角英数 (UUID) | UUID形式で定義したカスタマーID クレジットカード決済でのみ有効 このフィールドを初回の決済時に設定しておくと、リカーリングトークンの作成を消費者に任意選択させるチェックボックスを表示 ※1 用途: 次回以降、カスタマーIDをパラメータに持つタグ(コード)でウィジェットを表示した場合、過去に同加盟店で利用したクレジットカード情報を選択して決済することが可能 data-univapay-customer-id 指定時のトークンタイプについて・ one_time 指定か省略の場合チェック(※1)なしで one_time トークンを作成チェック(※1)ありで recurring トークンを作成・ recurring 指定の場合チェック(※1)必須で recurring トークンを作成インラインフォームで利用可 | |
data-auto-submit autoSubmit | 真偽(true /false ) | true 指定で、完了ボタンを押下しフォームを閉じた時にform で指定したURLページに自動で消費者を遷移させるのと同時に、HTTP GETメソッドで以下を送信トランザクショントークン( data-checkout-type=“token” 指定時には univapayTokenId )決済番号( data-checkout-type=“payment” 指定時には univapayChargeId 、data-token-type=“subscription” 指定時には univapaySubscriptionId ) | false |
data-auto-close autoClose | 真偽(true /false ) | true 指定で、処理の完了後にウィジェットが自動的に閉じる | false |
data-remove-checkout-button-after-charge removeCheckoutButtonAfterCharge | 真偽(true /false ) | true 指定で、処理の完了後もウィジェットの起動ボタン表示を維持false 指定で消去 | true |
data-usage-limit usageLimit | 半角英 | 作成したrecurrring タイプのトークンに対する課金の制限期間期間中に1度だけの課金が許容される 変更不可(新しいトークン作成が必要) 指定可能な値: daily , weekly , monthly , annually インラインフォームで利用可 | |
data-show-logo showLogo | 真偽(true /false ) | ウィジェットに店舗のロゴを表示するかどうか ※幅が5px以下の場合にロゴは非表示 | true |
data-timeout timeout | 半角数 | 指定した秒数が経過するとウィジェットを閉じてタイムアウトのエラー画面を表示 | |
data-auto-close-on-error autoCloseOnError | 真偽(true /false ) | data-timeout を指定した場合タイムアウトのエラー画面を表示してから約3秒後にその画面を自動で閉じる | |
data-hide-recurring-checkbox hideRecurringCheckbox | 真偽(true /false ) | data-token-typeをrecurring に指定した場合のウィジェットに「個人情報の同意」のチェックボックスを表示するかどうか指定可能な値(意味): true (非表示にする)false (表示する)インラインフォームで利用可 | false |
data-hide-privacy-link hidePrivacyLink | 真偽(true /false ) | ウィジェットに表示される「個人情報の取り扱いについて」のリンクを表示するかどうか 指定可能な値(意味): true (非表示にする)false (表示する)インラインフォームで利用可 | false |
data-custom-field-hoo customField Hoo | 半角英 | hoo 部分の指定次第で、追加の入力欄を表示指定可能な値(意味): labels (入力欄のラベル)types (select /string で選択肢/入力欄)required (true /false で必須/任意)options (type がselect なら必須、; 区切りで選択肢)keys (メタデータのキー) | |
data-metadata metadata | 半角英 | 消費者やオーダーを個別に識別する場合などに使える「メタデータ」 既存フィールドと重複しないよう注意 フィールド名はケバブケースで記述 例: data-metadata=”foo-bar:"baz" と指定した場合、追加されるメタデータは{“foo-bar”:"baz"} 1つのフィールドに対して複数の値を指定したい場合は「\,」で、複数のフィールドに同じ値を指定したい場合には「,」区切りで記述 | |
data-hoo | 半角英 | 任意の用途で利用できる、任意のフィールド 既存フィールドと重複しないよう注意 フィールド名はローワーキャメルケースで記述 例: data-hoo-bar=”baz" と指定した場合、追加される任意データは{“hooBar”:"baz"} ※JavaScriptでは利用不可 |
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用ウィジェットで定期課金登録をする際に、定期課金の挙動を指定するパラメータです。
基本動作、分割払い、デザインについては別途パラメータ解説ページがあり、左メニューから閲覧可能です。(デザイン用パラメータは、「ウィジェットの設置」ページに記載)
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-subscription-period subscriptionPeriod ※ | 半角英 | 定期課金の間隔 指定可能な値(意味): daily (毎日)weekly (毎週)biweekly (隔週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年)※…基本動作で data-token-type="subscription" 指定なら必須さらに詳細な指定(意味): PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期)インラインフォームで利用可 | |
data-subscription-id subscriptionId | 半角英数 | 継続中の定期課金IDを指定することで、登録されたカード情報を変更data-checkout="token" の指定が必須、data-app-id 以外のパラメータは不要必須: いいえ 指定可能な値: アプリケーショントークンに紐付いたストアに作成されている定期課金のID インラインフォームで利用可 | |
data-subscription-plan subscriptionPlan | 半角英 | 「回数指定型」の定期課金を指定する際に必要 指定可能な値(意味): fixed_cycles (指定した回数に達するまで)fixed_cycle_amount (指定した金額に達するまで)fixed_cycle_amount 指定で端数が出た場合、最終回は端数のみ課金インラインフォームで利用可 | |
data-subscription-qty subscriptionQty ※ | 半角数 | data-subscription-plan="fixed_cycles" なら、支払の回数(初回課金を含む)data-subscription-plan="fixed_cycle_amount" なら、課金ごとの金額※… data-subscription-plan でいずれかの値を指定すると必須インラインフォームで利用可 | |
data-subscription-initial-amount subscriptionInitialAmount | 半角数 | 定期課金の、初回金額0 指定で初回は「カード登録のみ」実行(セキュリティコード認証の併用必須)インラインフォームで利用可 | 基本動作のdata-amount で指定した額 |
data-subscription-start subscriptionStart | 半角数ハイフン区切り YYYY-MM-DD | 作成された定期課金の2回目の課金を行う日付 インラインフォームで利用可 | |
data-subscription-start-in subscriptionStartIn | 半角英数 | 定期課金の2回目の課金が行われるまでの期間 指定可能な値(意味): PxD (x日後)PxW (x週間後)PxM (xか月後)PxY (x年後)インラインフォームで利用可 | data-subscription-period に従う |
data-subscription-start-day-of-month subscriptionStartDayOfMonth | 半角英数 (1〜31) | 定期課金の2回目の課金を行う日付data-subscription-start-in /startIn との組み合わせも可能例: startDayOfMonth=20 &startIn=P2M 翌々月(2か月後)の20日 startIn 未設定の場合は、当月の該当日以前であれば当月にも課金され、該当日以降であれば翌月の該当日に課金されますインラインフォームで利用可 | data-subscription-period に従う |
data-subscription-preserve-end-of-month subscriptionPreserveEndOfMonth | 真偽(true /false ) | true で、かつ、開始日に月の末日を指定した場合、以降の課金日を末日に固定する例: 開始日が 2018-06-30 の場合、次の請求はtrue の場合は2018-07-31 false の場合は2018-07-30 となります。※ period が月単位時のみ有効インラインフォームで利用可 | false |
data-subscription-retry-interval subscriptionRetryInterval | 半角英数 | 定期課金が失敗したときのリトライ間隔 ISO 8601 duration 形式で記述 P1D 以上かつ定期課金サイクルより短くないとエラー指定可能な値(意味): PxD (x日)PxW (x週間)PxM (xか月)インラインフォームで利用可 | 定期課金の周期÷リトライ回数の間隔 (余り切捨) |
ウィジェットで、消費者に分割払いを選択させたい場合に、指定するパラメータです。
基本動作に加え、以下を指定してください。
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-allow-card-installments allowCardInstallments | 真偽(true /false ) | true 指定で、分割払いの回数を選択するドロップダウンメニューを表示クレジットカードが指定または選択され、 data-checkout="payment" かつ、data-token-type="subscription" 以外を指定し、契約上分割払いが可能な場合のみ有効 インラインフォームで利用可 | false |
data-card-installment-options cardInstallmentOptions | 半角数 | data-allow-card-installments="true" の時、ドロップダウンメニューでの選択肢を制御選択可能な値: 1 , 3 , 5 , 6 , 10 , 12 , 15 , 18 , 20 , 24 , revolving インラインフォームで利用可 | 全て |
このページは「初期設定」が完了していることを前提に作成しています。
リンクフォームは、APIに対してHTTP GETメソッドで決済の詳細を送信することで、決済フォームのリソースを生成し、そこ消費者を遷移させ、決済後にリダイレクトすることができます。
加盟店さまの多くは、管理画面から店舗内にリンクフォームの設定をし、短縮URLをメール送信するか、サイト内に<a>タグとして設置する運用をすると想定しています。
そのため、原則的に不要と認識していますが、ここでは、APIの挙動を解説します。
プログラムの記述ができる方にとっては、リンクフォームを選択して動的にタグを書き出すことは、タグが長くなるだけで何のメリットもありません。
また、iframeタグを使用してウェブページへリンクフォームを埋め込む実装はできません。
そのため、動的にタグ出力をするのであれば、メリットの多いウィジェットを採用することを強く推奨します。
リンクフォームは、技術や予算の都合上、動的なタグ出力を行えない方を対象する機能とご認識ください。
リンクフォームは、以下の役割を果たします。
消費者に、希望の支払い方法をクリック(またはタップ)で選択させます。
この選択画面で表示される選択肢は、リンクフォームのタグの記述内容に依存します。なお、支払い方法を単一に指定した場合、この選択画面は省略されます。
選択された「支払い方法」毎に予め設定されいる必須情報を、消費者に入力させます。
入力欄はタグの記述内容によって、追加することも可能です。
詳しくはこちら
https://checkout.univapay.com/forms/<各店舗のフォームID>
各店舗のフォームIDは、管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>URLコード
から確認してください。forms/
から?appID
の間に記載されています。
例)https://checkout.univapay.com/forms/0a000ebb-caa0-00bf-ad0e-0de0e000fbe0?appId=xxx…
各種パラメータを?hoo=111&bar=222&baz=333
…のように続けて記述したものを表示し、消費者の遷移を促してください。
管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>URLコード
で、各種設定を反映した、タグの生成が可能です。
管理画面の店舗>店舗名をクリック>決済フォームタブ>リンクフォーム設定>設定
で、リンクフォームの各種設定が可能です。
以下は、事前に管理画面から動作を設定できる内容です。
以下は、タグで値を指定すれば、そちらを優先し、元の設定を無視します。
以下は、タグ設置時にの指定に関わらず、設定が優先されます。
言語は、タグで値を指定すれば、そちらを優先し、元の設定を無視します。
カスタムの入力欄は、タグで何かしらの値を指定すれば、そちらを優先し、元の設定を無視します。
リダイレクトURLは、タグで何かしらの値を指定すれば、そちらを優先し、元の設定を無視します。
以下の処理ステータス毎に、別のURLを指定できます。
テーマの設定は、タグでの指定で変更することはできません。全てのフォームで統一されます。
処理の完了後は、パラメータによる指定通りに、消費者をリダイレクトします。
ウィジェットのようにリダイレクト時に結果をHTTP GETやSubmitで送信したり、JavaScriptのコールバックはできません。
一方で成功時と失敗時、それぞれのリダイレクト先は指定でき、追加したメタデータをHTTP GETメソッドで送信(消費者の遷移と同時に)できます。
したがって、処理後の画面遷移を制御することは可能ではありますが、送信先のURLは消費者からも可視であるため、処理結果の判定や、サービスを受ける権利の付与は行わない事を推奨します。
また、誤ってサービスを履行したり、物品を発送した場合でも、当社では一切の責任を負いかねます。
結果判定には、消費者から不可視の「GETによる取得」か、「ウェブフック」を用いることを推奨します。
リンクフォームを利用した場合の決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
appId | 半角英数 | 該当店舗のアプリケーションID 初期設定で作成したもの | |
checkout ※ | 半角英 | 処理の内容 指定可能な値(意味): token (トークンのみ作成し課金しない)payment (トークンを作成し課金する)qr (トークンのみ作成しQR表示)※… productCodes 送信時に必須 | payment |
paymentMethods | 半角英 | フォームで選択できる支払い方法 カンマ区切りで複数指定可 単数のみ指定の場合はフィールド名末尾に [] の追加が必須指定可能な値(意味): card (クレジットカード)konbini (コンビニ決済またはPay-easy)paidy (Paidy)bank_transfer (銀行振込)pay_pay_online (PayPayオンライン)we_chat_online (WeChatPayオンライン)alipay_online (Alipayオンライン)alipay_plus_online (Alipay+オンライン)online (オンラインモバイル全て)各決済手段が利用可能な設定なら、ブランドで更に絞込み可能。 下記パラメータを利用するなら、 card , konbini は指定不要。クレジット: visa ,mastercard ,jcb american_express ,diners_club unionpay ,maestro ,discover コンビニ: seven_eleven ,family_mart ,lawson mini_stop ,seico_mart ,pay_easy daily_yamazaki ,yamazaki_daily_store | |
amount ※ | 半角数 | 課金額 課金額 回数無制限の定期課金の場合は初回の額 分割払いおよび回数制限付き定期課金の場合は合計額 ※… tokenOnly=true なら省略可日本円以外で実際に流通する補助通貨がある場合、最小の補助通貨の額を指定(USD9.00の時はcent基準の 900 ) | |
currency | 半角英 | 通貨 ISO 4217基準で記述 | jpy |
type | 半角英 | 作成するトランザクショントークンの種類 指定可能な値(意味): one_time (一度だけ課金可)recurring (繰り返し課金可)subscription (定期課金) | one_time |
tokenOnly | 真偽(true /false ) | トークン化のみで課金しないtrue ならamount を無視 | false |
productCodes | 半角英数 | 管理画面で事前に設定した商品コード 未設定の値でエラー カンマ区切りで複数指定可 ※複数商品の利用方法や注意点はこちら amount 等、商品に含む情報指定時はそちらを優先※商品に含まれない情報は他パラメータで併用する必要がある ・初回0円の定期課金商品利用: data-cvv-authorize ・仮売上: data-capture | |
productQuantities | 半角数 | 商品の数productCodes を指定した場合に指定※管理画面で productCodes を指定すると自動でURLに付与されるカンマ区切りで商品コードを複数指定している場合、商品の数もカンマ区切りで指定 例:) productQuantities=1,2 | |
auth | 真偽(true /false ) | オーソリ クレジット決済でのみ有効 与信枠の確保のみ行うなら利用 (別途、売上処理かキャンセル処理が必要) | false |
captureAt | 半角英数 YYYY-MM-DD T hh:mm:ss.ssssZ | クレジットでauth="true" なら、この指定日に自動的にキャプチャ実行(1h後〜7D以内) | |
expirationPeriod | 半角英数 | フォームでの申込処理から支払い(振込)までの有効期限 銀行振込/コンビニ決済で有効 指定可能な値(意味): PxD (x日後)PxM (xヶ月後) | P30D |
expirationTimeShift | 半角数(記号は: ,+ )hh:mm:ss+09:00URLエンコードも可 | 銀行振込/コンビニ決済で有効な、フォームでの申込処理から支払い(振込)までの有効期限のうち、時間の部分data-expiration-period がP1D 以上の指定が必要「セブンイレブン」「セイコーマート/他支払(サークルK/サンクス/ペイジー)」は時刻指定が不可で、指定日の24:00まで受付 末尾に世界標準時間との誤差を入力(日本の場合は +09:00 ) | |
name | テキスト(制限なし) | 名前 送信した場合、入力済みの欄を表示 ※リンクフォーム設定で名前を必須にしている場合のみ | |
nameKana | テキスト(制限なし) | 名前のカナ 送信した場合、入力済みの欄を表示 ※リンクフォーム設定でカナを必須にしている場合のみ | |
cardholder | 半角英 | カード名義 送信した場合、入力済みの欄を表示 | |
emailAddress ※ | 半角英数(メールアドレスとして有効な記号を含む) | メールアドレス 送信した場合、入力済みの欄を表示 ※… hidePrefilledEmail=true なら必須 | |
hidePrefilledEmail | 真偽(true /false ) | フォームの「メールアドレス」欄を非表示 | false |
phoneNumber | 半角数(ハイフンなし) | 電話番号 送信した場合、入力済みの欄を表示 ※リンクフォーム設定で電話番号を必須にしている場合のみ | |
phoneNumberCountryCode | 半角数 | 電話番号の国コード 送信した場合、入力済みの国コードを表示 ※リンクフォーム設定で電話番号を必須にしている場合のみ | |
requirePhoneNumber | 半真偽(true /false ) | true 指定で電話番号の入力欄を表示(入力必須) | |
cvvAuthorize | 真偽(true /false ) | true 指定で、セキュリティコード認証の実行クレジット決済のみ有効 なおセキュリティコードは本サービスで保存しておらず、APIやCSVへの recurring リクエスト時には認証を行いません | false |
hideCvv | 真偽(true /false ) | false 指定でセキュリティコード認証欄を非表示化クレジット決済のみ、かつ審査時にセキュリティコード認証を「必須」と指定されていない場合のみ有効 | false |
hideRecurringCheckbox | 真偽(true /false ) | typeをrecurring に指定した場合のリンクフォームに「個人情報の同意」のチェックボックスを表示するかどうか指定可能な値(意味): true (非表示にする)false (表示する) | false |
hidePrivacyLink | 真偽(true /false ) | リンクフォームに表示される「個人情報の取り扱いについて」のリンクを表示するかどうか 指定可能な値(意味): true (非表示にする)false (表示する) | false |
univapayCustomerId | 半角英数(UUID) | UUID形式で定義したカスタマーID クレジットカード決済でのみ有効 このフィールドを初回の決済時に設定しておくと、リカーリングトークンの作成を消費者に任意選択させるチェックボックスを表示 ※1 用途: 次回以降、カスタマーIDをパラメータに持つタグ(コード)でリンクフォームを表示した場合、過去に同加盟店で利用したクレジットカード情報を選択して決済することが可能 univapayCustomerId 指定時のトークンタイプについて・ one_time 指定か省略の場合チェック(※1)なしで one_time トークンを作成チェック(※1)ありで recurring トークンを作成・ recurring 指定の場合チェック(※1)必須で recurring トークンを作成※リンクフォーム作成時の注意点 リンクフォーム作成時にカスタマーIDを指定するにはメタデータのキーを univapay-customer-id と指定する必要あり | |
successRedirectUrl | 半角英数(URLとして有効な記号を含む) | 決済成功時のリダイレクトURL | |
failureRedirectUrl | 半角英数(URLとして有効な記号を含む) | 決済失敗時のリダイレクトURL | |
pendingRedirectUrl | 半角英数(URLとして有効な記号を含む) | 決済処理待ちでタイムアウトした場合のリダイレクトURL | |
autoRedirect | 真偽(true /false ) | true 指定で決済完了時に自動リダイレクト | false |
showRedirectMetadata | 真偽(true /false ) | true 指定で、付与されたメタデータをリダイレクト先のURL末尾に付加します。 | false |
customFieldKeys[] ※ | テキスト(制限なし) | 決済情報のメタデータの「キー」欄に記録 複数指定可能(カンマ区切り) ※customField関連のフィールド指定時必須 | |
customFieldLabels[] ※ | テキスト(制限なし) | フォームにカスタム入力欄を挿入 入力欄のラベルはこの値が出力される ※customField関連のフィールド指定時必須 | |
customFieldTypes[] ※ | 半角英 | カスタム入力欄のタイプ 指定可能な値(和訳): select (選択)string (テキスト入力)※括弧とその中の文字は値として不要 ※customField関連のフィールド指定時必須 | |
customFieldRequired[] ※ | 真偽(true /false ) | カスタム入力欄を必須化 ※customField関連のフィールド指定時必須 | |
customFieldOptions[] ※ | テキスト(制限なし) | カスタム入力欄が選択肢の場合の選択肢 複数指定可能(カンマ区切り) ※ customFieldTypes[]=select 指定時必須 |
フィールド名はローワーキャメルケースで記載する必要があります。
HTTP GETメソッドであるため、値を"
(ダブルクォーテーション)で囲む必要はありません。
基本動作については別途パラメータ解説ページがあり、左メニューから閲覧可能です。
フィールド名はローワーキャメルケースで記載する必要があります。
HTTP GETメソッドであるため、値を"
(ダブルクォーテーション)で囲む必要はありません。
リンクフォームで定期課金登録をする際に、定期課金の挙動を指定するパラメータです。
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
period ※ | 半角英数 | 期課金の間隔 指定可能な値(意味): daily (毎日)weekly (毎週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年)※…基本動作で type=subscription 指定なら必須さらに詳細な指定(意味): PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期) | |
subscriptionId | 半角英数 | 継続中の定期課金IDを指定することで、登録されたカード情報を変更data-checkout="token" の指定が必須、data-app-id 以外のパラメータは不要指定可能な値: アプリケーショントークンに紐付いたストアに作成されている定期課金のID | |
initialAmount | 半角数 | 定期課金の初回金額 | |
startIn | 半角英数 | 定期課金の2回目の課金が行われるまでの期間 指定可能な値(意味): PxD (x日後)PxW (x週間後)PxM (xヶ月後)PxY (x年後) | periodに従う |
startDayOfMonth | 半角英数 (1〜31) | 定期課金の2回目の課金が行われる日付startIn との組み合わせも可能例: startDayOfMonth=20 &startIn=P2M 翌月の20日 startIn 未設定の場合は、当月の該当日以前であれば当月にも課金され、 該当日以降であれば翌月の該当日に課金されます | periodに従う |
subscriptionRetryInterval | 半角英数 | 定期課金が失敗したときのリトライ間隔P1D 以上かつ定期課金サイクルより短くないとエラー指定可能な値(意味): PxD (x日)PxW (x週間)PxM (xか月) | 定期課金の周期÷リトライ回数の間隔 (余り切捨) |
terminationMode | 半角英 | 定期課金の停止リクエストを受理したとき、実際に自動課金のステータスをsupended (一時停止)に変更するタイミングメールや webhook の通知も同期するため、定期課金の停止申請後も次回課金日まで会員権利を維持したい場合に利用指定可能な値(意味): immediate (即時)on_next_payment (次回課金日) | immediate |
リンクフォームで消費者に分割払いを選択させたい場合に、指定するパラメータです。
フィールド | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
allowCardInstallments | 真偽(true /false ) | true 指定で、分割払いの回数を選択するドロップダウンメニューを表示クレジットカードが指定または選択され、 checkout=payment かつ、type=subscription 以外を指定し、契約上分割払いが可能な場合のみ有効 | false |
このページは初期設定が完了していることを前提に作成しています。
インラインフォームは、インラインフレームに本サービスの決済フォームのリソースを表示し、消費者に直接カード情報を入力させて処理することを目的としたものです。
インラインフォームはクレジットカード決済のみを行うことができ、他の決済は利用できません。
インラインフォームは、以下の役割を果たします。
クレジットカード決済の際の必須情報を、消費者に入力させます。
入力欄はインラインフォームのタグ記述内容によって、追加することも可能です。
詳しくはこちら
支払い方法 | 処理 | 認証後の処理 |
---|---|---|
クレジットカード | カード会社に対し、要求された処理(オーソリ/キャプチャ)で認証 | 認証済みのカード情報をトークン化して決済処理 完了後の処理: <form> のsubmit ウェブフック APIからの取得が可能に |
インラインフォームのデザインは、パラメータによって指定可能です。
設置先のサイトに、ある程度違和感なく溶け込むデザインを施すことができます。
詳しくはこちら
インラインフォームのタグは、3部で構成されます。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<form>
タグ内の、空の<span>
要素内の各属性で、処理の内容を定義します。
<form id="payment-form" action="<任意のURL>">
<div id="checkout">
<span
data-app-id="{アプリトークンID}"
data-checkout="payment"
data-amount="1000"
data-currency="jpy"
data-inline="true"
></span>
</div>
<button type="submit">Pay</button>
</form>
ここでは、インラインフレーム内からunivapayTokenId
を取り出して、<form>
タグのaction
属性の値として定義した「任意のURL」へsubmit
する動作を記述しています。
この動作は、不要であれば省略できます。
<script>
(function () {
var form = document.getElementById("payment-form");
function getPaymentInfo() {
event.preventDefault();
var iFrame = document.querySelector("#checkout iframe");
UnivapayCheckout.submit(iFrame)
.then((data) => {
console.log(data);
// The `univapayTokenId` hidden input
// has been added with the token id
form.submit();
})
.catch((errors) => {
console.error(errors);
});
}
form.addEventListener("submit", getPaymentInfo);
})();
</script>
全て、インラインでのstyle記述と同じルールで記述してください。
備考欄に記載の要素に、インラインでstyleの値が記述されます。
フィールド | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-inline-item-style | 半角英数 +記号 | ラベル、入力欄、エラーメッセージのセットが格納された<div class="form-group form-group-sm"> と、それに内包される <div class="checkbox"> に適用したい style | 当社規定のCSS適用 |
data-inline-text-item-style | 〃 | <div class="form-group form-group-sm"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
data-inline-toggle-item-style | 〃 | <div class="checkbox"> にのみ適用したいstyle (個別の指定が必要な場合) | 〃 |
data-inline-item-label-style | 〃 | 各入力欄のラベル<label class="control-label"> にのみ適用したい style | 〃 |
data-inline-text-item-label-style | 〃 | テキスト入力フィールドに入力された文字のラベル<label class="control-label"> にのみ適用したい style | 〃 |
data-inline-field-style | 〃 | テキスト入力フィールドに入力された文字と、チェックボックスのラベル<span class="input-group"> に適用したい style | 〃 |
data-inline-text-field-style | 〃 | テキスト入力フィールドに入力された文字<span class="input-group"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
data-inline-item-error-style | 〃 | エラーメッセージ<div class="field-error"> に適用したい style | 〃 |
data-inline-text-error-style | 〃 | エラーメッセージ<div class="field-error"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
data-inline-field-invalid-style | 〃 | テキスト入力フィールドに入力された文字が、無効と判定された場合<input class="form-control input-sm"> に適用したい style | 〃 |
data-inline-text-field-invalid-style | 〃 | テキスト入力フィールドに入力された文字が、無効と判定された場合<input class="form-control input-sm"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
data-inline-text-toggle-invalid-style | 〃 | <div class="checkbox"> が無効のまま送信されようとした時に適用したいstyle (個別の指定が必要な場合) | 〃 |
data-inline-field-focus-style | 〃 | テキスト入力フィールドがフォーカスされた時に<span class="input-group-focus"> に適用したい style | 〃 |
data-inline-text-field-focus-style | 〃 | テキスト入力フィールドがフォーカスされた時に<span class="input-group-focus"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
data-inline-toggle-field-focus-style | 〃 | <div class="checkbox"> がフォーカスされた時に適用したいstyle (個別の指定が必要な場合) | 〃 |
以下は、「支払う」と表示されたボタンでの、1000円を決済するためのインラインフォームの設置例です。
<script src="https://widget.univapay.com/client/checkout.js"></script>
<style>
#univapay-payment-checkout {
position: absolute;
top: 360px;
}
</style>
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
var checkout = UnivapayCheckout.create({
appId: "<アプリトークンID>",
checkout: "payment",
amount: 1000,
currency: "jpy",
cvvAuthorize: true,
inline: true,
});
window.onload = function () {
checkout.open();
}
function handleSubmit() {
event.preventDefault();
var form = document.getElementById("payment-form");
var iFrame = document.querySelector("iframe");
UnivapayCheckout.submit(iFrame)
.then(function (data) {
form.submit();
}).catch(function (errors) {
console.error(errors);
});
};
</script>
まず、インラインフォームを含むページに次の行をHTMLでの設置と同様に含める必要があります
<script src="https://widget.univapay.com/client/checkout.js"></script>
支払うボタンについてのCSS styleの記述です。説明の都合上styleタグに記述しています。
<style>
#univapay-payment-checkout {
position: absolute;
top: 360px;
}
</style>
HTMLでの設置とは異なり、自動的にページ上にボタンは作成されませんので、タグとタグで送信するための記述をします。
submitイベントが発火に反応して、onSubmitに指定された関数”handleSubmit()”を呼び出します。
<form id="payment-form" onSubmit="handleSubmit()">
<button id="univapay-payment-checkout">
支払う
</button>
</form>
<script>
<!--
タグ内にJavaScriptの記述をします
内容は以下で説明
-->
</script>
次に、UnivapayCheckout.createを呼び出す記述をします。
例えば、1000円の支払いを処理するインラインフォーム・オブジェクトを作成するには、以下を記述する必要があります。
var checkout = UnivapayCheckout.create({
appId: "<アプリトークンID>",
checkout: "payment",
amount: 100,
currency: "jpy",
cvvAuthorize: true,
inline: true,
inlineItemLabelstyle:,
});
本サンプルではページの読み込みをした時にインラインフォームを表示させるため、onload
関数の記述をしています。event.preventDefault();
で、form.submit();
の動作させるタイミングを制御するために、一度form
のデフォルト処理を防ぐ記述をします。
最後にUnivapayCheckout.submit
を呼び出す記述をします。ボタンをクリックした時実際に支払いを行う処理を記述し、送信時エラーが発生した場合はその内容を返します。
window.onload = function () {
checkout.open();
}
function handleSubmit() {
event.preventDefault();
var form = document.getElementById("payment-form");
var iFrame = document.querySelector("iframe");
UnivapayCheckout.submit(iFrame)
.then(function (data) {
form.submit();
}).catch(function (errors) {
console.error(errors);
});
};
全て、インラインでのstyle記述と同じルールで記述してください。
備考欄に記載の要素に、インラインでstyleの値が記述されます。
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
inlineItemStyle | 半角英数 +記号 | ラベル、入力欄、エラーメッセージのセットが格納された<div class="form-group form-group-sm"> と、それに内包される <div class="checkbox"> に適用したい style | 当社規定のCSS適用 |
inlineTextItemStyle | 〃 | <div class="form-group form-group-sm"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
inlineToggleItemStyle | 〃 | <div class="checkbox"> にのみ適用したいstyle (個別の指定が必要な場合) | 〃 |
inlineItemLabelStyle | 〃 | 各入力欄のラベル<label class="control-label"> にのみ適用したい style | 〃 |
inlineTextItemLabelStyle | 〃 | テキスト入力フィールドに入力された文字のラベル<label class="control-label"> にのみ適用したい style | 〃 |
inlineFieldStyle | 〃 | テキスト入力フィールドに入力された文字と、チェックボックスのラベル<span class="input-group"> に適用したい style | 〃 |
inlineTextFieldStyle | 〃 | テキスト入力フィールドに入力された文字<span class="input-group"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
inlineItemErrorStyle | 〃 | エラーメッセージ<div class="field-error"> に適用したい style | 〃 |
inlineTextErrorStyle | 〃 | エラーメッセージ<div class="field-error"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
inlineFieldInvalidStyle | 〃 | テキスト入力フィールドに入力された文字が、無効と判定された場合<input class="form-control input-sm"> に適用したい style | 〃 |
inlineTextFieldInvalidStyle | 〃 | テキスト入力フィールドに入力された文字が、無効と判定された場合<input class="form-control input-sm"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
inlineTextToggleInvalidStyle | 〃 | <div class="checkbox"> が無効のまま送信されようとした時に適用したいstyle (個別の指定が必要な場合) | 〃 |
inlineFieldForcusStyle | 〃 | テキスト入力フィールドがフォーカスされた時に<span class="input-group-focus"> に適用したい style | 〃 |
inlineTextFieldForcusStyle | 〃 | テキスト入力フィールドがフォーカスされた時に<span class="input-group-focus"> に適用したい style ただし、内包される <div class="checkbox"> には適用しない(個別の指定が必要な場合) | 〃 |
inlineToggleFieldForcusStyle | 〃 | <div class="checkbox"> がフォーカスされた時に適用したいstyle (個別の指定が必要な場合) | 〃 |
ウィジェットのページに記載してある内容と同様です。
インラインフォームで扱えるパラメータは、ウィジェットで扱えるパラメータの一部です。
そのため、個別でページ作成をしていません。
以下より「インラインフォームで利用可」となっているもの(クレジットカードで処理できるもの)を選択し、記述してください。
本サービスのAPIは、認証の為に JWT(JSON Web Token) を利用しています。
ヘッダで認証を行い、ペイロード部分にリクエストを記述するのが基本的な使い方です。
はじめに、ガイドの初期設定に従い、アプリケーショントークン(以降「アプリトークン」)を作成してください。
アプリケーショントークンは、「トークン」と「シークレット」の2部で構成されます。
シークレットは、アプリトークンを作成した時だけ表示されます。
表示されたシークレットは、くれぐれも忘れずに控えるようにしてください。
また、このシークレットは機密情報として取り扱う必要があります。
消費者のブラウザ上で実行されるようなフロントエンドアプリケーションのコードの中にシークレットを記述したり、インターネットで第三者が閲覧できる状態にしないでください。
レポートの生成、ブラウザ以外の経路での課金の作成など、サービスのバックエンドでの処理で利用されることを想定している、たいへん大きな権限を行使できる情報です。
当社では、加盟店さまのシークレットの管理上の問題に起因する事故について、一切の責任を負いかねます。
以降、全てのページで、HTTPリクエストヘッダのAuthorization
に記述する
{jwt}
」{secret}
」と、それぞれ記述します。
// シークレットなし
Bearer {jwt}
// シークレットあり
Bearer {secret}.{jwt}
管理画面からは、2種類のアプリトークンを作成可能です。
それぞれの意味合いと役割を表にしたものが以下です。
名前 | アプリトークンの権限 | シークレットの要否 |
---|---|---|
加盟店 | トランザクショントークンと課金の作成のみ不可 | 必要 |
店舗 | その「店舗」に対する全てのリクエストが可能 | ブラウザ上では不要 バックエンドからAPIへリクエストする際には必要 |
ウィジェットやインラインフォーム出力リクエストは、登録したドメインからであることを認証しています。
管理画面で「店舗」のアプリトークンを作成する際には、ドメインを登録してください。
旧システムで利用されていた機能と類似した機能、仕様についての対比表です。
詳細については各リンク先のページ及び、利用開始までの流れを記載した初期設定のページを確認して下さい。
旧システム | 旧システムの仕様・機能 | 新システム | 新システムの仕様・機能 |
---|---|---|---|
決済番号 | 決済毎に自動で発番される数字8桁の番号 | 課金ID | 決済毎に自動で発番されるUUID形式による番号(8桁-4桁-4桁-4桁-12桁をハイフンで区切られた英数字) |
自動課金 | ・デフォルトではリトライは1週間後 ・デフォルトでリトライ回数は3回 ・課金日の午前0時30分より順次課金開始 ・開始日指定は○日後を指定 | 定期課金 | ・リトライ間隔:課金周期÷リトライ回数 ・リトライ回数:3回 ※初回の課金も含むため実質2回、管理画面で変更可能 ・課金日の午前7時※より順次課金開始 ※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時 ・開始日指定:日付指定か〇日後を指定 ・ステータス:こちらに記載 |
自動課金の再開 | ・課金予定日が過ぎている場合:翌日に課金、それ以降は課金周期で課金 ・再開前:次回課金日が変更できない | 定期課金の再開 | ・課金予定日が過ぎている場合:サイクルの開始日から計算された最も近い支払い日に課金、それ以降は課金周期で課金 ・過去の予定された課金は行わない ・再開前:次回課金日が変更可能 ・再開後のステータス:リトライ待ち 前回失敗したリトライ待ち定期課金:リトライ間隔のリトライ日と次回課金日を比べて遅いほうの日付で課金 |
回数制限付きの自動課金 | ・初回決済:回数に含まない ・指定した金額が指定した回数処理される | 回数制限付きの自動課金 | ①回数指定の回数制限付き定期課金 ・初回決済:回数に含まれる ・指定した合計金額を指定した回数で割った金額の課金を実行 ②金額指定の回数制限付き定期課金 ・初回決済:回数に含まれる ・指定した合計金額を指定した金額で割った回数の課金を実行 |
有効性チェック | ・決済履歴:「有効性チェック」として情報が生成 | セキュリティーコード認証 | ・トークンの種類:リカーリングトークン(recurring)」 ・パラメータ:cvv-authorizeを指定 ・決済履歴:「決済金額1円/オーソライズ済」で生成 |
キックバック | ・指定したURLへGET方式で決済結果を通知 ・管理画面に再通知機能あり | ウェブフック | ・指定したURLへPOST形式で決済結果を通知 ・管理画面にて受け取るトリガーの設定あり ・ウェブフックの代わりに課金状態確認のAPIで情報取得が可能 |
かんたんリンク(かんたん決済) | ・専用の見積画面にて決済用のURL・QRを発行する機能 | リンクフォーム | ・管理画面より決済用のURL・QRを発行する機能 |
リンク方式 | ・当社決済ページへ遷移し決済する方式 | ウィジェット方式 | ・当社ポップアップ型の決済フォームを表示させ決済する方式 |
リンク方式のフォーム設定 | ・管理画面>設定>フォーム設定 | ウィジェットの設定 | ・管理画面>店舗>店舗名クリック>決済フォーム>ウィジェット |
送信元URL | ・リンク方式における決済ページへ遷移する際のリファラチェック(認証チェック) | アプリトークンのドメイン | ・ウィジェット方式、インラインフォーム方式における認証チェック ・アプリトークン登録時にドメインの指定が必要 |
送信元IP | ・ゲートウェイ方式・トークン方式の決済では事前に管理画面にIPの登録が必須 | シークレット | ・API方式の決済では決済リクエスト時にシークレットトークンが必須 ・アプリトークン登録時のみ確認可能 |
消費者への決済完了メールの送信元 | ・加盟店様の「問合せ先メールアドレス」なりすまして送信 | 消費者への決済完了メールの送信元 | ・no-reply@univapay.comから送信(変更不可) |
ワンタッチCSV課金 | ・管理画面>決済情報>決済情報ワンタッチCSV登録 からCSVデータをアップすることで一括決済が可能 ・成功している過去1年以内の決済情報をもとに決済可能 ・キーとなる情報:「決済番号」「電話番号」「店舗オーダー番号」 | CSV課金 | ・管理画面>CSV課金 からCSVデータをアップすることで一括で決済が可能。 ・CVV認証もしくは一度でも課金に成功しているリカーリングトークンをもとに決済可能 ・キーとなる情報:「顧客ID(customer-id)」「Eメールアドレス」「リファレンスID」「リカーリングトークンID」 |
決済完了メールのメール設定 | ・オプション設定で商品毎に設定が可能 | 通知メールテンプレート | ・商品毎のメール設定は商品のメタデータを活用 ・商品にメタデータを付与することでカスタマイズ ・何も登録していない場合はデフォルトのメールを送信 |
ウィジェットの基本動作を制御するパラメータです。
定期課金、分割払い、デザインについては別途パラメータ解説ページがあり、左メニューから閲覧可能です。(デザイン用パラメータは、「ウィジェットの設置」ページに記載)
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-app-id appId | 半角英数 | 該当店舗のアプリケーションID 初期設定で作成したもの インラインフォームで利用可 | |
data-checkout checkout | 半角英 | 処理の内容 指定可能な値(意味): token (トークンのみ作成し課金しない)payment (トークンを作成し課金する)※括弧とその中の文字は値として不要 token ,payment はインラインフォームで利用可 | |
data-payment-methods paymentMethods | 半角英 | フォームで選択できる支払い方法の詳細 カンマ区切りで複数指定可 指定可能な値(意味): card (クレジットカード)konbini (コンビニ決済またはPay-easy)paidy (ペイディ)pay_pay_online (PayPayオンライン)we_chat_online (WeChatPayオンライン)alipay_online (Alipayオンライン)alipay_plus_online (Alipay+オンライン)bank_transfer (銀行振込)※ online 指定で末尾に_online のつくものを一括指定各決済手段が利用可能な設定なら、ブランドで更に絞込み可能。 下記パラメータを利用するなら、 card , konbini は指定不要。クレジット: visa ,mastercard ,jcb american_express ,diners_club unionpay ,maestro ,discover コンビニ: seven_eleven ,family_mart ,lawson mini_stop ,seico_mart ,pay_easy daily_yamazaki ,yamazaki_daily_store | |
data-amount amount | 半角数 | 課金額 回数無制限の定期課金の場合は初回の額 分割払いおよび回数制限付き定期課金の場合は合計額 日本円以外で実際に流通する補助通貨がある場合、最小の補助通貨の額で指定(例:USD9.00の時はcent基準の 900 )インラインフォームで利用可 | |
data-currency currency | 半角英 | 通貨 ISO 4217基準で記述 インラインフォームで利用可 | |
data-token-type tokenType | 半角英 | 作成するトランザクショントークンの種類 指定可能な値(意味): one_time (一度だけ課金可)recurring (繰り返し課金可)subscription (定期課金)インラインフォームで利用可 | one_time |
data-product-codes productCodes | 半角英数 | 商品コード 未設定の値でエラー カンマ区切りで複数指定可 ※複数商品の利用方法や注意点はこちら amount 等、商品に含む情報指定時はそちらを優先※商品に含まれない情報は他パラメータで併用する必要がある(以下例) ・初回0円の定期課金商品利用: data-cvv-authorize ・仮売上: data-capture インラインフォームで利用可 | |
data-product-code-quantities productCodeQuantities | 半角数 | 商品コードの数data-product-codes を指定した場合に指定※管理画面で data-product-codes を指定した場合は管理画面上で自動で付与される例: data-product-codes=testcode1 data-product-code-quantities=2 この場合、商品コード「testcode1」の商品が2つ カンマ区切りで商品コードを複数指定している場合、商品コードの数もカンマ区切りで指定 例: data-product-codes=testcode1,testcode2 data-product-code-quantities=1,1 この場合、商品コード「testcode1」の商品が1つ、商品コード「testcode2」の商品が1つ インラインフォームで利用可 | |
data-name name | 半角英数 | 処理の完了時に、formのsubmit時やJavaScriptコールバック時に適用される「トークン」のフィールド名 ウェブフックやAPIからの結果取得時には適用されない 未指定時のフィールド名: トランザクショントークンのみ作成 univapayTokenId 定期課金作成 univapaySubscriptionId 課金作成 univapayChargeId | 左欄参照 |
data-capture capture | 真偽(true /false ) | クレジットカードの処理時に「キャプチャ」を行うか falseを指定すると「オーソリ」を行う コンビニ決済/銀行振込の処理時には、値を不問で data-capture-at ,captureAt を有効にするインラインフォームで利用可 | true |
data-capture-at captureAt | 半角英数 YYYYMMDD または YYMMDD T hhmmss | クレジットでauth="true" なら、この指定日に自動的にキャプチャ実行(1h後〜7D以内)コンビニ決済/銀行振込の場合、支払い期限日時 注意: コンビニ決済で支払いの有効期限を「日時単位」で指定したい場合は、 data-payment-methods /paymentMethods を以下のみに限定— family_mart ,lawson ,mini_stop daily_yamazaki ,yamazaki_daily_store (セブン・イレブン、セイコーマート、Pay-Easyは時間指定無効のため除外) クレジット:日付のみ指定で指定日の9:00 コンビニ決済/銀行振込:指定日の24:00 当日で時間未指定はエラー インラインフォームで利用可 | しない |
data-expiration-period expirationPeriod | 半角英数 | フォームでの申込処理から支払い(振込)までの有効期限 ISO8601 duration text で記述 銀行振込/コンビニ決済で有効 指定可能な値(意味): PxD (x日後)PxM (xか月後)インラインフォームで利用可 | P30D |
data-expiration-time-shift expirationTimeShift | 半角数(記号は: ,+ )hh:mm:ss[+09:00] | 銀行振込/コンビニ決済で有効な、フォームでの申込処理から支払い(振込)までの有効期限のうち、時間の部分data-expiration-period がP1D 以上の指定が必要「セブンイレブン」「セイコーマート/他支払(サークルK/サンクス/ペイジー)」は時刻指定が不可で、指定日の24:00まで受付 末尾に世界標準時間との誤差を入力(日本の場合は [+09:00] )インラインフォームで利用可 | |
data-email | 半角英数 | メールアドレス 送信した場合、入力済みの欄を表示 インラインフォームで利用可 | |
data-address address | 真偽(true /false ) | 配送先住所true で入力欄(郵便番号、都道府県、市区町村、丁目・番地、マンション名・部屋番号)を表示インラインフォームで利用可 | false |
data-shipping-address-country-code shippingAddressCountryCode | ISO 3166-2に記載されている国コード | 配送先住所の国 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-zip shippingAddressZip | 制限なし | 配送先住所の郵便番号 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-state shippingAddressState | 制限なし | 配送先住所の都道府県 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-city shippingAddressCity | 制限なし | 配送先住所の市区町村 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-line1 shippingAddressLine1 | 制限なし | 配送先住所の丁目・号・番地 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-shipping-address-line2 shippingAddressLine2 | 制限なし | 配送先住所のマンション名・部屋番号 送信した場合、入力済みの欄を表示 送信しなければ空欄表示 data-address="true" 、 address:true なら動作インラインフォームで利用可 | |
data-require-name requireName | 真偽(true /false ) | true 指定で、氏名の入力欄を表示(入力必須)Paidy、コンビニ決済、銀行振込では既存のため無効 | false |
data-require-email requireEmail | 真偽(true /false ) | true 指定で、メールアドレスの入力欄を表示(入力必須)クレジットカード、コンビニ決済では既存のため無効 | false |
data-require-phone-number requirePhoneNumber | 真偽(true /false ) | true 指定で、電話番号の入力欄を表示(入力必須)インラインフォームで利用可 | false |
data-phone-number phoneNumber | 半角数(ハイフンなし) | 電話番号 送信した場合、入力済みの欄を表示 ※電話番号を必須にしている場合のみ | |
data-require-billing-address requireBillingAddress | 真偽(true /false ) | true 指定で、請求先住所の入力欄を表示(入力必須) | false |
data-cvv-authorize cvvAuthorize | 真偽(true /false ) | true 指定で、セキュリティコード認証の実行クレジット決済のみ有効 カード情報の登録のみ: data-checkout="token" 、data-token-type="recurring" を指定初回0円の定期課金を作成: data-checkout="payment" 、data-token-type="subscription" (または"recurring" ) を指定なおセキュリティコードは本サービスで保存していません インラインフォームで利用可 | false |
data-show-cvv showCvv | 真偽(true /false ) | false 指定でセキュリティコード認証欄を非表示化クレジット決済のみ、かつ審査時にセキュリティコード認証を「必須」と指定されていない場合のみ有効 インラインフォームで利用可 | true |
data-locale locale | 半角英 | 表示される言語auto (ブラウザ依存),en-us (米国英語),ja-jp (日本語),zh-tw (台湾繁体字),zh-cn (中国簡体字),en (英国英語),ja (日本語),zh (中国語簡体字),ko(韓国語),th(タイ語),ru(ロシア語)インラインフォームで利用可 | |
data-univapay-reference-id univapayReferenceId | 半角英数 | リファレンスID CSV課金時の検索キー data-token-type="recurrring" なら有効インラインフォームで利用可 | |
data-univapay-customer-id univapayCustomerId | 半角英数 (UUID) | UUID形式で定義したカスタマーID クレジットカード決済でのみ有効 このフィールドを初回の決済時に設定しておくと、リカーリングトークンの作成を消費者に任意選択させるチェックボックスを表示 ※1 用途: 次回以降、カスタマーIDをパラメータに持つタグ(コード)でウィジェットを表示した場合、過去に同加盟店で利用したクレジットカード情報を選択して決済することが可能 data-univapay-customer-id 指定時のトークンタイプについて・ one_time 指定か省略の場合チェック(※1)なしで one_time トークンを作成チェック(※1)ありで recurring トークンを作成・ recurring 指定の場合チェック(※1)必須で recurring トークンを作成インラインフォームで利用可 | |
data-auto-submit autoSubmit | 真偽(true /false ) | true 指定で、完了ボタンを押下しフォームを閉じた時にform で指定したURLページに自動で消費者を遷移させるのと同時に、HTTP GETメソッドで以下を送信トランザクショントークン( data-checkout-type=“token” 指定時には univapayTokenId )決済番号( data-checkout-type=“payment” 指定時には univapayChargeId 、data-token-type=“subscription” 指定時には univapaySubscriptionId ) | false |
data-auto-close autoClose | 真偽(true /false ) | true 指定で、処理の完了後にウィジェットが自動的に閉じる | false |
data-remove-checkout-button-after-charge removeCheckoutButtonAfterCharge | 真偽(true /false ) | true 指定で、処理の完了後もウィジェットの起動ボタン表示を維持false 指定で消去 | true |
data-usage-limit usageLimit | 半角英 | 作成したrecurrring タイプのトークンに対する課金の制限期間期間中に1度だけの課金が許容される 変更不可(新しいトークン作成が必要) 指定可能な値: daily , weekly , monthly , annually インラインフォームで利用可 | |
data-show-logo showLogo | 真偽(true /false ) | ウィジェットに店舗のロゴを表示するかどうか ※幅が5px以下の場合にロゴは非表示 | true |
data-timeout timeout | 半角数 | 指定した秒数が経過するとウィジェットを閉じてタイムアウトのエラー画面を表示 | |
data-auto-close-on-error autoCloseOnError | 真偽(true /false ) | data-timeout を指定した場合タイムアウトのエラー画面を表示してから約3秒後にその画面を自動で閉じる | |
data-hide-recurring-checkbox hideRecurringCheckbox | 真偽(true /false ) | data-token-typeをrecurring に指定した場合のウィジェットに「個人情報の同意」のチェックボックスを表示するかどうか指定可能な値(意味): true (非表示にする)false (表示する)インラインフォームで利用可 | false |
data-hide-privacy-link hidePrivacyLink | 真偽(true /false ) | ウィジェットに表示される「個人情報の取り扱いについて」のリンクを表示するかどうか 指定可能な値(意味): true (非表示にする)false (表示する)インラインフォームで利用可 | false |
data-custom-field-hoo customField Hoo | 半角英 | hoo 部分の指定次第で、追加の入力欄を表示指定可能な値(意味): labels (入力欄のラベル)types (select /string で選択肢/入力欄)required (true /false で必須/任意)options (type がselect なら必須、; 区切りで選択肢)keys (メタデータのキー) | |
data-metadata metadata | 半角英 | 消費者やオーダーを個別に識別する場合などに使える「メタデータ」 既存フィールドと重複しないよう注意 フィールド名はケバブケースで記述 例: data-metadata=”foo-bar:"baz" と指定した場合、追加されるメタデータは{“foo-bar”:"baz"} 1つのフィールドに対して複数の値を指定したい場合は「\,」で、複数のフィールドに同じ値を指定したい場合には「,」区切りで記述 | |
data-hoo | 半角英 | 任意の用途で利用できる、任意のフィールド 既存フィールドと重複しないよう注意 フィールド名はローワーキャメルケースで記述 例: data-hoo-bar=”baz" と指定した場合、追加される任意データは{“hooBar”:"baz"} ※JavaScriptでは利用不可 |
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用本サービスを利用するためには、いくつかの設定を管理画面で行う必要があります。
このページでは、利用開始までの大まかな流れを説明します。
アプリトークンとは、どの店舗で決済を行うかの判別のためのキーとして機能します。
全ての決済でアプリトークンは必須です。
管理画面>アプリトークンの「新規作成」を押下し「店舗」のアプリトークンを作成してください。
利用方法によってアプリトークン作成時の行動および次に読むページが異なるため、以下を参照ください。
利用方法 | アプリトークン作成時の行動 | 次に読むべきページ |
---|---|---|
システム連携せずに利用 (リンクフォームを利用) | シークレットを控えておく必要はありません。 | 利用ガイド『管理画面の使い方』を参照ください。 このページを以降読む必要はありません。 |
システム連携して利用 (ウィジェット、インラインフォームを利用) | シークレットを控えておく必要はありません。 利用するWEBサイトのドメインを登録する必要があります。 | このページを読み進めてください。 |
システム連携して利用 (APIでリクエスト) | シークレットを控えておく必要があります。 | このページを読み進めてください。 |
ウェブフックを作成すると、本サービスでの処理結果を、加盟店さまが指定したURLにHTTP POSTリクエストで通知するようになります。
消費者の遷移とは近いタイミングで実行しますが、必ずしも同期するとは限りません。
加盟店さま側のシステム(カートや受注管理のシステム)と連携したい場合は作成してください。
ただし、ウェブフックはあくまでも即時性を担保するための簡易的な仕組みで、到達を保証するものではないため、決済結果の判定をウェブフックのみに依存することは非推奨です。
精度の高い判定を求める場合は、APIへ決済結果取得をリクエストする仕組みを設計、実装してください。
画面遷移のコントロールがしたい場合は、ウィジェットやインラインフォームからのコールバック、リンクフォームからのリダイレクト設定でも可能です。
ウェブフックを受信する仕組みの作成には、SDKを利用できます。
メールや管理画面で処理結果を確認するので十分なら、この設定は必要ありません。
※詳細はこちら
アプリトークンとウェブフックを作成した後は、サイト構成やサービス内容に沿った、当社の決済フォームと課金方式を選びます。
実際に消費者が利用するフォームを作成、設置します。
詳細は、各決済フォームのセットアップページをご覧ください。
それぞれのセットアップにはSDKが利用できます。
公開前には、必ずテストモードでフォームが意図した通りに動作しているかを確認してください。(テストモードのアプリトークンを作成することでテスト決済が可能です)
※クレジット決済の場合は管理画面の「テスト課金」にあるカード番号でテストができます。
行われた決済は管理画面で確認・操作が可能です。
管理画面の使い方はこちらをご覧ください。
ウィジェットで定期課金登録をする際に、定期課金の挙動を指定するパラメータです。
基本動作、分割払い、デザインについては別途パラメータ解説ページがあり、左メニューから閲覧可能です。(デザイン用パラメータは、「ウィジェットの設置」ページに記載)
data-
で始まる、ケバブケース(kebab-case)で記載のフィールド名はHTML用フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
data-subscription-period subscriptionPeriod ※ | 半角英 | 定期課金の間隔 指定可能な値(意味): daily (毎日)weekly (毎週)biweekly (隔週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年)※…基本動作で data-token-type="subscription" 指定なら必須さらに詳細な指定(意味): PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期)インラインフォームで利用可 | |
data-subscription-id subscriptionId | 半角英数 | 継続中の定期課金IDを指定することで、登録されたカード情報を変更data-checkout="token" の指定が必須、data-app-id 以外のパラメータは不要必須: いいえ 指定可能な値: アプリケーショントークンに紐付いたストアに作成されている定期課金のID インラインフォームで利用可 | |
data-subscription-plan subscriptionPlan | 半角英 | 「回数指定型」の定期課金を指定する際に必要 指定可能な値(意味): fixed_cycles (指定した回数に達するまで)fixed_cycle_amount (指定した金額に達するまで)fixed_cycle_amount 指定で端数が出た場合、最終回は端数のみ課金インラインフォームで利用可 | |
data-subscription-qty subscriptionQty ※ | 半角数 | data-subscription-plan="fixed_cycles" なら、支払の回数(初回課金を含む)data-subscription-plan="fixed_cycle_amount" なら、課金ごとの金額※… data-subscription-plan でいずれかの値を指定すると必須インラインフォームで利用可 | |
data-subscription-initial-amount subscriptionInitialAmount | 半角数 | 定期課金の、初回金額0 指定で初回は「カード登録のみ」実行(セキュリティコード認証の併用必須)インラインフォームで利用可 | 基本動作のdata-amount で指定した額 |
data-subscription-start subscriptionStart | 半角数ハイフン区切り YYYY-MM-DD | 作成された定期課金の2回目の課金を行う日付 インラインフォームで利用可 | |
data-subscription-start-in subscriptionStartIn | 半角英数 | 定期課金の2回目の課金が行われるまでの期間 指定可能な値(意味): PxD (x日後)PxW (x週間後)PxM (xか月後)PxY (x年後)インラインフォームで利用可 | data-subscription-period に従う |
data-subscription-start-day-of-month subscriptionStartDayOfMonth | 半角英数 (1〜31) | 定期課金の2回目の課金を行う日付data-subscription-start-in /startIn との組み合わせも可能例: startDayOfMonth=20 &startIn=P2M 翌々月(2か月後)の20日 startIn 未設定の場合は、当月の該当日以前であれば当月にも課金され、該当日以降であれば翌月の該当日に課金されますインラインフォームで利用可 | data-subscription-period に従う |
data-subscription-preserve-end-of-month subscriptionPreserveEndOfMonth | 真偽(true /false ) | true で、かつ、開始日に月の末日を指定した場合、以降の課金日を末日に固定する例: 開始日が 2018-06-30 の場合、次の請求はtrue の場合は2018-07-31 false の場合は2018-07-30 となります。※ period が月単位時のみ有効インラインフォームで利用可 | false |
data-subscription-retry-interval subscriptionRetryInterval | 半角英数 | 定期課金が失敗したときのリトライ間隔 ISO 8601 duration 形式で記述 P1D 以上かつ定期課金サイクルより短くないとエラー指定可能な値(意味): PxD (x日)PxW (x週間)PxM (xか月)インラインフォームで利用可 | 定期課金の周期÷リトライ回数の間隔 (余り切捨) |
トランザクショントークンを作成して消費者の決済情報を収集した後、決済を完了するために課金(Charge)を作成します。
課金(Charge)は、非同期処理されるので、作成時には、pending
状態になっています。
決済処理の完了後、ステータスは、結果に応じてsuccessful
, failed
, error
に変更されます。
※海外カード会社に接続している場合は作成時authorized
状態になります。
ウェブフックのCHARGE_FINISHED
イベントを登録することで課金(Charge)の最終的な状態を得ることができます。
ロングポーリングを行って課金の状態を取得することもできますが、最終的な状態を返すことは保証できません。
オーソリ(Authorization)は、支払い方法がクレジットカードの時に利用でき、そのクレジットカードが実際に利用可能かどうかを確認し、与信枠の確保を行います。この状態だと実際の売り上げにはなりません。
その後、キャプチャを行うことで決済を確定します。
オーソリを行うには、課金の作成時に capture
パラメータを false
に指定して課金を作成します。
この際に、 capture_at
パラメータで自動的にキャプチャを行う日時を指定することもできます。
pending
:課金が作成された時の状態authorized
:カード会社により承認された状態failed
:オーソリは有効期限切れや与信枠の不足など、様々な理由により失敗した状態error
:タイムアウト、通信エラー、入力形式違反、接続先からのレスポンスが無いなど、様々な理由により失敗した状態キャプチャを行うには、authorized
状態の課金に対してキャプチャのリクエストを送信します。
詳細は課金のキャプチャの作成を参照してください。
キャプチャを行わない場合は、キャンセルして与信枠を解放する必要があります。
テストモードのアプリケーショントークンで課金(Charge)を行う場合には、成功または失敗を意図的に発生させるための特別なテスト用のカード番号があります。
4000020000000000
:課金(Charge)、返金(Refund)ともに成功1111
で終わるカード番号(4111111111111111
など):課金(Charge)失敗4242
で終わるカード番号(4242424242424242
など):課金(Charge)は成功、返金(Refund)が失敗1881
で終わるカード番号(4012888888881881
など):課金(Charge)は成功、取り消し(Cancel)が失敗その他の番号もカード発行ロジックに沿ったものであれば課金(Charge)も返金(Refund)も成功します。
このようなサイトで、ランダムなテスト用カード番号を生成することができます
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | 課金のユニークID |
store_id | string (UUID) | 課金(Charge)が行われたストアのユニークID |
transaction_token_id | string (UUID) | 課金(Charge)を実行するために使用されるトークンのユニークID |
transaction_token_type | string | transaction_token_id のトランザクショントークンの種別 |
subscription_id | string (UUID) | この課金(Charge)が作成された定期課金(Subscription)のユニークID 定期課金(Subscription)がなければnull |
merchant_transaction_id | string | 課金を作成した支払先の決済事業者に送る取引ID Wechat,Wechat Online,Wechat MPMで有効 |
requested_amount | number | リクエストされた課金金額 |
requested_currency | string (ISO-4217) | リクエストされた課金通貨 |
requested_amount_formatted | string | 補助単位があればその小数の値を含む課金のリクエスト金額 |
charged_amount | number | 課金(Charge)された金額 リクエストされた金額とは異なる場合あり 通貨の変換について |
charged_currency | string (ISO-4217) | 課金(Charge)された通貨 リクエストされた通貨とは異なる場合があり 通貨の変換について |
charged_amount_formatted | string | 補助単位があれば小数の値を含む課金された金額 |
only_direct_currency | boolean | リクエストされた通貨をサポートするゲートウェイのみを使用すべきかどうか |
capture_at | string (ISO-8601) | 自動的にキャプチャされる日時 |
descriptor | string | 請求名 |
descriptor_phone_number | ※現在使用されていないパラメータ | |
status | string | 課金ステータスpending , awaiting , successful , failed , error , authorized , canceled のいずれか※ error は異常な状態を表しサポートチームが課金のレビューを行った後に、ステータスが変更される可能性あり |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | 課金(Charge)に紐づいているメタデータ 定期課金(Subscription)で作成されたメタデータはそれに関連する課金に引き継がれる |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | 課金が作成された日時 |
redirect.redirect_id | string (UUID) | リダイレクトリクエストのユニークID |
redirect.endpoint | string (URL) | 支払い完了後にリダイレクトするURL |
transaction_id | number | GMOあおぞらネット銀行から発行される取引ID |
bank_ledger_type | string | deposit またはpayment ※ deposit は入金、payment は入金に従って決済システム側で支払い処理を行うことをそれぞれ指す |
balance | number | 合計入金金額 |
virtual_bank_account_holder_name | string | 振込先口座名義 |
virtual_bank_account_number | number | 振込先口座番号 |
virtual_account_id | number | GMOあおぞらネット銀行から発行される口座ID |
transaction_date | string | 処理日 |
transaction_timestamp | string | 処理日時 |
課金オブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
{secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/charges \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'Content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | トランザクショントークンのID |
amount | number | 課金額 |
currency | string (ISO-4217) | 通貨 |
capture | boolean | 支払いをキャプチャするかどうかfalse :課金承認のみデフォルトの値: true |
capture_at | string (ISO-8601) | 記入されたトランザクショントークンのpayment_type が・ payment_type=card - capture がfalse の場合、最初に課金を承認し、指定された日時に請求をキャプチャ・ payment_type=konbini かbank_transfer - 支払期限の日時を設定できます。 トランザクションの支払い期間よりこちらを優先します。 ※「セブンイレブン」「セイコーマート/他支払(サークルK/サンクス/ペイジー)」は時刻指定が利用できないため、時刻は無視されその日までという扱いになります。 |
merchant_transaction_id | string | 支払先の取引ID 取引IDは一意である必要があり、決済ブランドが指定する条件を満たす必要あり 以下の支払先で利用可能 – we_chat (最大32 英数字)– we_chat_mpm (最大32 英数字)– we_chat_online (最大32 英数字) |
metadata | object | メタデータを参照 |
redirect.endpoint | string (URL) | 支払い完了後にリダイレクトするURL 顧客はGET httpメソッドで指定されたエンドポイントにリダイレクトされる univapayChargeIdとunivapayTokenIdに加えて、課金作成時に指定されたメタデータ(作成後に変更された追加メタデータは含まれない)がクエリパラメータの一部として自動的に送信される また、クエリパラメータをURL末尾に追加することも可能 ※以下の支払いブランドでのみ利用可能 alipay_online ,alipay_plus_online ,pay_pay_online |
curl --request POST \
--url https://api.univapay.com/charges \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'Content-type: application/json' \
--data '{
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1000,
"currency": "JPY",
"metadata": {
"order_id": 12345,
"shipping_details": "Customer wants it now"
},
"redirect": {
"endpoint": "https://test.url/"
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32c2-4010-a312-aaff-4b63e4d5f92d",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"transaction_token_type": "recurring",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": null,
"charged_currency": null,
"charged_amount_formatted": null,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "pending",
"error": null,
"metadata": {
"order_id": 12345,
"shipping_details": "Customer wants it now"
},
"mode": "test",
"created_on": "2024-06-25T07:12:15.16452Z",
"redirect": {
"endpoint": "https://test.url/",
"redirect_id": "11ef32c2-40cf-f772-8325-1798abb1110d"
}
}
課金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
polling | boolean | 値をtrue と指定することで、ステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する詳細はこちら |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-4010-a312-aaff-4b63e4d5f92d \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c2-4010-a312-aaff-4b63e4d5f92d",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"transaction_token_type": "recurring",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"error": null,
"metadata": {
"shipping_details": "Customer wants it now",
"order_id": 12345
},
"mode": "test",
"created_on": "2024-06-25T07:12:15.16452Z",
"redirect": {
"endpoint": "https://test.url/",
"redirect_id": "11ef32c2-40cf-f772-8325-1798abb1110d"
}
}
銀行振込の課金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/bank_transfer_ledgers \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c4-9ea8-169c-a6c8-bfc29867a226/bank_transfer_ledgers \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"bank_ledger_type": "payment",
"amount": 1000,
"balance": 0,
"virtual_bank_account_holder_name": "test holder name",
"virtual_bank_account_number": "1234567",
"virtual_account_id": "test account id",
"transaction_date": "2024-06-25",
"transaction_timestamp": "2024-06-25T07:29:16.367347Z",
"mode": "test",
"created_on": "2024-06-25T07:29:16.373181Z"
},
{
"bank_ledger_type": "deposit",
"amount": 1000,
"balance": 1000,
"virtual_bank_account_holder_name": "test holder name",
"virtual_bank_account_number": "1234567",
"virtual_account_id": "test account id",
"transaction_date": "2024-06-25",
"transaction_timestamp": "2024-06-25T07:29:16.36731Z",
"mode": "test",
"created_on": "2024-06-25T07:29:16.368093Z"
}
],
"has_more": false,
"total_hits": 2
}
課金オブジェクトのLISTリクエストには以下が必要です。(括弧内は入力箇所)
リクエストURLにクエリパラメータを追加することで、表示するリソースを絞り込むこともできます。
課金・返金などをまとめて表示させたい場合はトランザクション:Listを推奨します。
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
last_four | number | 使用したクレジットカードの下4桁でフィルタリング 指定する場合は name , exp_month , exp_year フィールドを含める必要あり |
name | string | カード所有者の名前でフィルタリング 指定する場合は last_four , exp_month , exp_year フィールドを含める必要あり |
exp_month | number | 使用したカードの有効期限(月)でフィルタリングする 指定する場合は last_four , name , exp_year フィールドを含める必要あり |
exp_year | number | 使用したカードの有効期限(年)でフィルタリングする 指定する場合は last_four , name , exp_month フィールドを含める必要あり |
from | string (ISO-8601) | この日付以降に作成された課金を表示 |
to | string (ISO-8601) | この日付より前に作成された課金を表示 |
string | メールアドレスでフィルタリング | |
phone | number | 電話番号でフィルタリング |
amount_from | number | この金額より大きい課金を表示 |
amount_to | number | この金額未満の課金を表示 |
currency | string (ISO-4217) | この通貨でリクエストまたはチャージされた課金をフィルタリング |
mode | string | モードでフィルタリングするlive または test |
metadata | string | メタデータでフィルタリング |
transaction_token_id | string (UUID) | トランザクショントークンIDでフィルタリング |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32c4-9ea8-169c-a6c8-bfc29867a226",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32c4-9e89-0cac-bd63-17b9a26af61b",
"transaction_token_type": "one_time",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"error": null,
"metadata": {
"univapay-name": "taro yamada",
"univapay-phone-number": 8029854583
},
"mode": "test",
"created_on": "2024-06-25T07:29:12.854865Z",
"redirect": {},
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
},
{
"id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32c3-3cdd-df92-9dce-c346b9fdf088",
"transaction_token_type": "one_time",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T07:19:19.507637Z",
"redirect": {
"shipping_details": "Customer wants it now",
"order_id": 12345
},
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
},
<中略>
],
"has_more": true,
"total_hits": 99
}
課金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
作成済の課金に任意のメタデータを付与、または変更したい場合はこのリクエストを使用してください。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
metadata | object | 課金に紐づいているメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-4010-a312-aaff-4b63e4d5f92d \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"metadata": {"order_id": 1234}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c2-4010-a312-aaff-4b63e4d5f92d",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"transaction_token_type": "recurring",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T07:12:15.16452Z",
"redirect": {
"endpoint": "https://test.url/",
"redirect_id": "11ef32c2-40cf-f772-8325-1798abb1110d"
}
}
課金オブジェクトに対するCREATEリクエスト(キャプチャ)には以下が必要です。(括弧内は入力箇所)
キャプチャ金額はオーソリ時の金額以下 / 通貨はオーソリ時と同じである必要があります。
{storeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{id}/capture \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'Content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
id | string (UUID) | 課金ID |
store_id | string (UUID) | 課金が作成された店舗ID |
amount | number | キャプチャする金額 承認されたときの金額よりも少なくする必要あり |
currency | string (ISO-4217) | ISO-4217形式の通貨コード 承認されたときの通貨と同じである必要あり |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/capture \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'Content-type: application/json' \
--data '{
"amount": 1000,
"currency": "JPY"
}'
下記はBodyの記述例でリクエストした場合の例です。
200
イシュアトークンとは、オンライン決済事業者から提供された消費者が決済を行うための情報です。
各決済事業者での支払いURLなどが発行されます。
支払い手段がonline
のトランザクショントークンを使用して課金を作成した後にイシュアートークンを取得します。
支払手段が銀行振込(bank_transfer
)の場合は、対象の振込先口座情報を取得します。issuer_token
が入力される前に、課金ステータスがawaiting
になっている必要があります。awaiting
以外のステータスではこのリクエストはエラーになるため、課金:GETのリクエストで、事前に課金ステータスの確認を行う必要があります。
課金オブジェクトに対するイシュアトークンのGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/issuer_token \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
レスポンスで返却されるイシュアトークンオブジェクトのデータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
payment_type | string | 指定した課金の支払い手段の種類online , bank_transfer のいずれか |
issuer_token | string | payment_type がonline のときクライアントが実行するために支払いプロバイダーから提供されたトークン 本番モードの場合各決済事業者での支払いURLが発行されます |
payload | object | payment_type がonline のときPOSTリクエストを送信するために必要なデータを含むオブジェクトを返却 |
call_method | string | payment_type がonline のときクライアントによる実行方法 http_get , http_post , sdk , web , app のいずれか各ブランドで対応している方法で実行してください(詳細はこちら) – sdk は、ペイメントプロバイダーが提供するSDKで直接使用することを意味する– web とは、特定のAPIを拡張した特殊なブラウザ環境で直接使用を意味する– app とは、ペイメントプロバイダーが提供するSDKのネイティブアプリ環境での利用を意味する– http_get またはhttp_post を使用すると、issuer_token を新しいブラウザウィンドウまたは適切対応するHTTPメソッドのiframe内で直接実行することが可能※Wechat利用時の注意点 ・call_method が http_get の場合、リクエスト前に利用予定のウェブブラウザのドメインをサポートデスクへ連絡する必要あり・サポートデスクへ連絡したドメインからリダイレクトしてイシュアトークンを取得する必要あり |
account_id | string | payment_type がbank_transfer のとき接続先システムで発行している口座の独自ID |
branch_code | string | payment_type がbank_transfer のとき支店コード |
branch_name | string | payment_type がbank_transfer のとき支店名 |
account_holder_name | string | payment_type がbank_transfer のとき口座名義 |
account_number | string | payment_type がbank_transfer のとき口座番号 |
curl --request GET \
--url https://api.univapay.com/stores/11ecda54-17a0-1c78-bd5c-73aa272l700f/charges/11ef3398-8a6c-978e-8332-2f61a5ed40t4/issuerToken \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"issuer_token": "http://test.com/action",
"call_method": "http_post",
"payload": {
"test_parameter": "test_value"
}
"payment_type": "online"
}
{
"account_id": "test account id",
"branch_code": "123",
"branch_name": "test branch name",
"account_holder_name": "test holder name",
"account_number": "1234567",
"payment_type": "bank_transfer"
}
d払いOnlineを利用する場合、取得したイシュアトークンのURLに対して、レスポンスのpayloadにあるbodyの要素を含み、POST方式で実行する必要があります。
Headerの Content-Type
は application/x-www-form-urlencoded
のみ受け付ける仕様です。
イシュアトークン取得のレスポンス例
{
"issuer_token": "https://payment1.smt.docomo.ne.jp/smph/trade/s/gabepa11.srv",
"call_method": "http_post",
"payload": {
"sSpcd": "00000000000",
"sCptok": "11eefaef-e2d6-5e3c-3cj3-7f0a72dd9ba7%2Clive%2C9f132db784f807abe60a566634a9791fc979d9b0ed330d6314a6cfb29af39cae",
"sTerkn": "01"
},
"payment_type": "online"
}
レスポンスのデータを基にPOSTリクエストを送信する場合は、下記のようなHTMLフォームを設置することで実行できます。
<FORM METHOD="POST" ACTION="http://test.com/action">
<INPUT TYPE="HIDDEN" NAME="test_parameter" VALUE="test_value">
</FORM>
本サービスと加盟店さまの商用サイトとを連携するための実装ガイドです。
「はじめに」を通読の上、ご覧ください。
本サービスの銀行振込は、申込ごとに発行したユニークな口座番号への振込確認・消込を自動で行い、結果を反映する仕組みです。
利用する口座は「GMOあおぞらネット銀行」から発行されます。
これにより、手作業による振込確認と消込が必要なくなります。
銀行振込でサポートしている内容は、以下を参照してください。
都度課金およびリカーリング課金を利用できます。
定期課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 注意点 |
---|---|
CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
銀行振込の申込後、指定口座に振り込むと決済が完了される流れです。
当社決済フォームを利用した場合の消費者の支払いフローは、下記の画像付き資料を参照してください。
管理画面>決済 から申込や振込の履歴を確認できます。
また、「ステータス」と「結果」の2つの項目の組み合わせで、支払い状況を確認できます。
「ステータス」は決済履歴一覧および詳細画面の「課金詳細」から、「結果」は詳細画面の「支払い詳細」から確認できます。
処理待ち:口座を発行して未入金、または入金額に不足がある
成功:申込金額以上が入金されている 超過した場合も成功として扱う
失敗:申込金額の入金がなく、振込期限が切れた
状態 | ステータス | 結果 |
---|---|---|
消費者から入金待ち(申込直後など) | 処理待ち | 未入金 |
申込金額に満たない金額が入金されている 振込期限まで同一口座に追加入金が可能 | 処理待ち | 不足 |
申込金額と同一の金額が入金されている | 成功 | 丁度 |
申込金額以上の金額が入金されている 銀行振込決済では返金機能がないため、超過分は加盟店さま側で消費者への連絡・返金が必要 | 成功 | 超過 |
振込期限までに入金がなかった 振込期限を過ぎて口座が停止しているため、入金は不可 必要な場合は新たに課金申込 | 失敗 | 未入金 |
申込金額に満たない金額が入金されている 振込期限を過ぎて口座が停止しているため、追加入金は不可 銀行振込決済では返金機能がないため、入金分は加盟店さま側で消費者への連絡・返金が必要 | 失敗 | 不足 |
以下フローは、管理画面>一般設定>決済サービス>決済方法>銀行振込>振込の受付 が「すべて」の場合です。
テストモードでは本番モードと挙動が異なります。
テストモードの挙動は下記のとおりです。
リクエスト方法 | 挙動 |
---|---|
ウィジェット リンクフォーム | 即時に課金ステータスが「成功」、結果が「丁度」になる |
API | ①課金ステータスが「処理待ち」になる ②課金の取得により「”status”: “awaiting”」を確認する ③イシュアトークンの取得後、課金ステータスが「成功」、結果が「丁度」の状態になる |
テストモードでリクエストすることで、メール通知とウェブフック(システム通知)を確認できます。
テストモードで確認できる処理は上記のみで、振込期限切れによる失敗や超過入金は確認できません。
口座の発行方法には「ワンタイム型」と「リカーリング型」の2種類があります。
1度限り使用可能なトークンを生成します。このトークンに対して課金リクエストを行うと、同じ消費者であっても1決済ごとに異なる口座番号を振込先として発行します。
そのため、毎回同じ口座番号を振込先として発行するリカーリング型と比べて、正確な入金管理を行うことができます。
繰り返し使用可能なトークンを生成します。
このトークンに対して課金リクエストを行うと、消費者は毎回同じ振込先口座番号を利用できます。
リカーリングトークンは、何度でも繰り返し利用できます。
なお、1つのトークンで入金待ちの課金申込が複数存在する場合、古い課金申込が優先で消し込まれます。
1つのトークンで入金待ちの課金申込が2つある場合
課金申込日 | 課金ID | 金額 | ステータス | 結果 | 入金額 |
---|---|---|---|---|---|
2022/1/1 | 11ed2a5e-91bd-2b04-be0c-733e06e5b0fd | ¥5,000 | 処理待ち | 未入金 | ¥0 |
2022/1/15 | 11ed2a5e-4523-267c-be30-b33ea12033ff | ¥10,000 | 処理待ち | 未入金 | ¥0 |
この状態で10,000円入金された場合
課金申込日 | 課金ID | 金額 | ステータス | 結果 | 入金額 |
---|---|---|---|---|---|
2022/1/1 | 11ed2a5e-91bd-2b04-be0c-733e06e5b0fd | ¥5,000 | 成功 | 丁度 | ¥5,000 |
2022/1/15 | 11ed2a5e-4523-267c-be30-b33ea12033ff | ¥10,000 | 処理待ち | 不足 | ¥5,000 |
2022/1/1の課金申込に5000円分が入金され、金額丁度で成功となる
2022/1/15の課金申込に残り5,000円分が入金される
管理画面で振込期限を設定できます。
また、課金申込時にウィジェット・リンクフォーム・APIそれぞれのパラメータを指定することで、決済ごとに異なる期限を指定できます。
各パラメータの指定方法は、利用ガイド「振込 – 要注意なパラメータ」を参照してください。
パラメータを指定しない場合は、管理画面の振込期限が適用されます。
振込期限を超えた課金申込はステータスが失敗となり、該当口座への振込を行うことができなくなります。
※「リカーリング型」は同じ口座で複数の課金申込が存在するため、該当口座に紐づく全ての課金ステータスが成功か失敗となった段階で、振込を行うことができなくなります。
一般設定>決済サービス>決済方法>銀行振込>振込のお支払い期限 から設定できます。
設定可能な振込期限のパターンとそれに対する期限の例(1/1に申し込みを行った場合)は下記です。
振込期限の設定 | 振込期限 |
---|---|
一日 | 1/2 23:59 |
三日 | 1/4 23:59 |
一週間 | 1/8 23:59 |
二週間 | 1/15 23:59 |
四週間 | 1/29 23:59 |
管理画面から振込上限額を設定することで、超過入金を防ぎ、返金対応を減らせます。
管理画面>一般設定>決済サービス>決済方法>銀行振込>振込の受付 から振込上限額を設定できます。
設定 | 挙動 |
---|---|
すべて | 課金申込と同額以上の金額となるまで振込が可能 |
超過入金を防ぐ | 口座に対して振込上限額が設定される 上限を上回る振込額の場合、金融機関側で振込元口座に全額が自動返金される |
口座への入金額に応じて、振込上限額がその都度更新されます。
そのため、「超過入金を防ぐ」を設定している場合でも、振込タイミング等により完全に防げない可能性があります。
また、「リカーリング型」は同じ口座で複数の課金申込が存在するため、該当口座に紐づく課金申込金額の合計が振込上限額として判断されます。
該当口座へ入金が確認できたら、時間帯や曜日を問わずおよそ1時間以内に課金ステータスおよび結果が更新されます。
なお、振込元金融機関の処理によっては、該当口座への入金が金融機関の翌営業日以降となる可能性があります。
入金予定時間は、振込元の金融機関にお問い合わせください。
管理画面>一般設定>一般>通知 で「銀行振込」の設定を有効にしている場合は、それぞれの処理に対応したメールが送信されます。
結果を加盟店さまの配送(または、それに準ずる会員ステータス等の)システムに自動で反映する必要がある場合は、ウェブフックで結果を受信して注文システムを更新するプログラムを設置してください。
※メールおよびウェブフックでの入金結果の通知には、2時間程度かかる場合があります。
銀行振込の場合、ウェブフックのイベントは「課金」を利用して判定してください。
また、銀行振込 / 不足入金 の通知はメールのみ対応しています。
また、結果はAPIへリクエストすることでも取得できます。
システム連動を行わず、管理画面またはメールで結果を確認する場合は作成する必要はありません。
以下では、銀行振込の各処理時に通知されるメールのテンプレートを抜粋して紹介します。
種別 | 説明 |
---|---|
銀行振込 申込完了 | 課金申込時に送信されます。 課金は、ステータスが処理待ち、結果が未入金の状態です。 |
銀行振込 不足入金 | 入金額が不足に送信されます。 課金は、ステータスが処理待ち、結果が不足の状態です。 |
銀行振込 入金完了 | 入金額が丁度で、課金が成功した時に送信されます。 課金は、ステータスが成功、結果が丁度の状態です。 |
銀行振込 入金完了(超過) | 入金額が超過して課金が成功した時に送信されます。 課金は、ステータスが成功、結果が超過の状態です。 |
振込期限切れ(督促あり) | 課金失敗時に送信されます。 課金は、ステータスが処理待ち、結果が未入金または不足の状態です。 |
振込期限切れ(督促なし) | 課金失敗時に送信されます。 課金は、ステータスが失敗、結果が未入金または不足の状態です。 |
GMOあおぞらネット銀行側で、定期的にシステムメンテナンスがあります。「課金申込」「入金通知」「請求停止」「振込期限切れによる口座停止」などの処理で、エラーや処理遅延が発生する可能性があります。予めご了承ください。
システムメンテナンス中に発生するエラーは以下です。
エラーコード | エラー | 説明 |
---|---|---|
503 | Gateway is under maintenance | メンテナンス中です 加盟店さまが保有している口座数が足りている状態で課金作成した時 |
347 | Assignment of virtual bank account expired | 銀行口座の割り当てが失効しました 加盟店さまが保有する口座が足りず、課金作成時に新規口座取得のリクエストをGMOあおぞらネット銀行に送信した時 |
本ページは、銀行振込に対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提に説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、銀行振込の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(銀行振込のみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | bank_transfer |
リンクフォーム | paymentMethods[] | bank_transfer |
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
銀行振込利用時に独自のはたらきをするパラメータを、抜粋して紹介します。
トランザクショントークン作成時および課金作成時に以下記述をすることで、任意の銀行振込の期限を指定できます。
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の例(2023/4/3 12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-capture / capture かつ data-capture-at / captureAt | false かつ 2023-04-03T12:34:56+09:00 |
API | capture_at | 2023-04-03T03:34:56Z ※国際規格(ISO 8601)で処理するため9時間の時差があります |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-expiration-period / expirationPeriod かつ data-expiration-time-shift / expirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | expirationPeriod かつ expirationTimeShift | P3D かつ 12:34:56+09:00 (または ) |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-bank-transfer-expiration-period / bankTransferExpirationPeriod かつ data-bank-transfer-expiration-time-shift / bankTransferExpirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | bankTransferExpirationPeriod かつ bankTransferExpirationTimeShift | P3D かつ 12:34:56+09:00 (または 12%253A34%253A56.000%252B09%253A00 ) |
本ガイドは、銀行振込における各API処理の補足説明です。
銀行振込に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
消費者の情報をトークン化して保存します。
詳細は、APIリファレンス「トランザクショントークン – CREATE」を確認してください。
リクエストBody例
{
"payment_type" : "bank_transfer",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"brand" : "aozora_bank"
},
"metadata": {
"memberid" : "12345"
}
}
作成したトークンに対して課金申込を行います。
詳細は、APIリファレンス「課金 – CREATE」を確認してください。
リクエストBody例
{
"transaction_token_id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
"amount": "100",
"currency": "jpy",
"metadata": {
"orderid": "12345"
}
}
課金申込の結果を取得します。
詳細は、APIリファレンス「課金 – GET」を確認してください。
が確認できたら正常に課金申込が完了し、消費者からの振込待ちの状態です。"status": "awaiting"
ウェブフックで結果を受信することも可能です。
(ウェブフックのイベント名はcharge_updated
です。)
レスポンス / ウェブフック Body 例
{
"id": "11ed07f5-345d-4308-a4c9-9f6b3663e18f",
"store_id": "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
"transaction_token_id": "11ed07f5-2da0-18ce-96f7-9f06340a7a87",
"transaction_token_type": "one_time",
"subscription_id": null,
"merchant_transaction_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "awaiting",
"error": null,
"metadata": {
"orderid": 123456
},
"mode": "live",
"created_on": "2022-07-20T06:28:44.521327Z"
}
課金申込後に発行した口座の支店や口座番号の情報を取得できます。
詳細は、APIリファレンス「トランザクショントークン – GET」を確認してください。
口座情報は、レスポンスの”data”
の値として反映されます。
口座情報が反映されるタイミングは、トランザクショントークンを作成した時ではなく、課金申込が成功して
になった時以降です。"status": "awaiting"
レスポンス Body例
{
"id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
"store_id": "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
"email": "demo@univapay.com",
"payment_type": "bank_transfer",
"active": true,
"mode": "live",
"type": "recurring",
"usage_limit": null,
"confirmed": null,
"metadata": {
"customer_id": 12345
},
"created_on": "2022-07-11T08:17:06.47037Z",
"updated_on": "2022-07-26T09:37:05.663521Z",
"last_used_on": "2022-07-26T09:37:05.666269Z",
"data": {
"brand": "aozora_bank",
"bank_code": "0310",
"bank_name": "GMOあおぞらネット銀行",
"branch_name": "アジサイ",
"branch_code": "123",
"account_holder_name": "カ)ユニヴア ペイキヤスト",
"account_number": "1234567"
}
}
APIリクエストで入金結果および振込期限切れの結果を取得します。
詳細は、APIリファレンス「課金 – GET」を確認してください。
ウェブフックで結果を受信することも可能です。
(ウェブフックのイベント名はcharge_finished
です。)
レスポンス Body例
{
id: "11ed00f1-f0c4-1ca2-b754-db0d9311d5a0",
store_id: "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
transaction_token_id: "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
transaction_token_type: "one_time",
subscription_id: null,
merchant_transaction_id: null,
requested_amount: 100,
requested_currency: "JPY",
requested_amount_formatted: 100, //元々の申込金額
charged_amount: 100,
charged_currency: "JPY",
charged_amount_formatted: 100, //実際の入金額
only_direct_currency: false,
capture_at: null,
descriptor: null,
descriptor_phone_number: null,
status: "successful",
error: null,
metadata: {
"orderid": 123456
},
mode: "live",
created_on: "2022-07-11T08:17:44.481834Z"
}
状況は、課金の状態"status"
および入金額"charged_amount_formatted"
から確認できます。
電算システムを利用した決済手段です。
決済フォームでの情報入力が完了すると、指定したコンビニエンスストアで入金を行うための情報が発行されます。
入金に必要な情報は、通知メールもしくはメタデータから確認可能です。
発行された情報をもとに消費者が入金を行うと、入金確認を自動で行い、結果を反映します。
また、管理画面の「ウェブフック」でURLを登録することによって、入金結果のシステム通知を受けることも可能です。
コンビニ決済でサポートしている内容は、以下を参照してください。
都度課金およびリカーリング課金を利用できます。
定期課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 無視される理由 |
---|---|
CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
コンビニ決済の申込後、通知メールの情報を確認してコンビニで入金すると、決済が完了する流れです。
当社決済フォームを利用した場合の消費者の支払いフローは、下記の画像付き資料を参照してください。
管理画面>決済 から、申込や入金の履歴を確認できます。
「ステータス」は決済履歴一覧および詳細画面の「課金詳細」から確認できます。
課金ステータス | 状態 |
---|---|
処理待ち | 決済フォームから申込が完了しているが、消費者から入金されていない もしくは入金確認中 |
成功 | 各コンビニエンスストアで消費者の入金が完了した |
キャンセル | 加盟店さま側で申込を取り消した状態 |
失敗 | 決済フォームでの申込時に何かしらのエラーが発生した もしくは入金期限を過ぎた |
テストモードでは本番モードと挙動が異なります。
テストモードで決済を行った場合、申込完了の直後は「処理待ち」のステータスになります。
その約10分後に自動的に「成功」のステータスへ変化します。
電話番号の末尾4桁を指定することで決済結果別の挙動を確認することが可能です。
電話番号の末尾4桁 | 決済結果 |
---|---|
1111 | 課金失敗 |
4242 | 返金失敗 |
1881 | キャンセル失敗 |
管理画面、ウィジェット・リンクフォーム・APIのパラメータで振込期限を設定できます。
各パラメータの指定方法は、利用ガイド「コンビニ – 要注意なパラメータ」をご覧ください。
入金期限を超えた課金申込は失敗となり、決済失敗メールが送信されます。
一般設定>決済サービス>決済方法>コンビニ から、入金期限(期間および時刻)を設定できます。
パラメータで指定しない限り、ここでの設定が適用されます。
デフォルトは30日、期限時間は23:59:59です。
設定可能な入金期限のパターンとそれに対する期限の例(1/1に申し込みを行った場合)は下記です。
入金期間の設定 | 入金期限 |
---|---|
一週間 | 1/8 23時59分までに振込 |
二週間 | 1/15 23時59分までに振込 |
30日 | 1/31 23時59分までに振込 |
下記の支払先は、時刻を指定できません。
時刻を指定している場合は無視され、自動で23:59:59になります。
管理画面>通知メールテンプレート から、通知メールの内容を編集できます。
新しくテンプレートを作成する場合は、「+新規作成」ボタンから行ってください。
作成済のテンプレートを編集する場合は、一覧から任意のテンプレートを選択してください。
デフォルト内容は、利用ガイド「通知メールテンプレート」を参照してください。
以下では、コンビニ決済の処理時に通知されるメールのテンプレートを抜粋して紹介します。
種別 | テンプレートの種類 | 説明 |
---|---|---|
コンビニ決済のご案内 | メイン | 課金申込時に送信されます。 パラメータ${date}には申込日時ではなく、入金期限が表示されます。 |
コンビニ決済の取り消し | メイン | 消費者が入金を行う前に、加盟店さま側で注文を取り消した時に送信されます。 |
決済完了通知 | メイン | 支払いが完了した場合に送信されます。 |
決済失敗 | メイン | 支払い期限切れの場合に送信されます。 |
コンビニ決済(各支払先名)の詳細 | サブ | メインテンプレート内のパラメータ${konbini_payment_details}として内容が表示されます。 各コンビニエンスストアでの支払い番号などの情報を含んでいて、支払先ごとに内容を編集できます。 |
本ページは、コンビニ決済に対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、コンビニ決済の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例1(コンビニ決済のみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentM ethods | konbini |
リンクフォーム | paymentMethods[] | konbini |
実装方法 | フィールド | 値の例2(コンビニ決済かつ特定のコンビニエンスストアに限定したい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods |
|
リンクフォーム | paymentMethods[] |
|
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
コンビニ決済利用時に独自のはたらきをするパラメータを、抜粋して紹介します。
トランザクショントークン作成時および課金作成時に以下記述をすることで、任意の銀行振込の期限を指定できます。
トランザクショントークン作成時と課金作成時の両方で入金期限を指定した場合は、課金作成時の入金期限が優先されます。
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の例(2023/4/3 12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-capture /capture かつ data-capture-at /captureAt | false かつ 2023-04-03T12:34:56+09:00 |
API | capture_at |
※国際規格(ISO 8601)で処理するため9時間の時差があります |
トランザクショントークン作成時に以下記述をしてください。
実装方法 | フィールド | 値の例(2023/4/3 12:34:56までの場合) |
---|---|---|
API | data.expiration_period かつ data.expiration_time_shift | P3D かつ T12:34:56+09:00Z |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-expiration-period /expirationPeriod かつ data-expiration-time-shift /expirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | expirationPeriod かつ expirationTimeShift | P3D かつ
(または 12%3A34%3A56%2B09%3A00 )< |