機能別 よくある質問一覧
よくある質問とその回答をカテゴリ別にまとめました。
左メニューまたは下部リストより、カテゴリを指定してご覧ください。
よくある質問とその回答をカテゴリ別にまとめました。
左メニューまたは下部リストより、カテゴリを指定してご覧ください。
管理画面>決済から確認できます。
詳細は『管理画面ガイド』をご覧ください。
課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
成功 | 正常に決済が完了した |
処理待ち |
|
オーソライズ済 | 仮売上(決済金額の与信枠をおさえている) セキュリティコード認証(CVV認証)に成功した |
失敗 |
決済が失敗している |
エラー |
決済サーバーやデータベースエラーなどの例外的なエラーや、カードの有効期限切れなどが発生した |
キャンセル済 |
|
決済結果の取得方法は下記4通りです。
加盟店さまの目的に沿った方法をご利用ください。
決済タブのダウンロードボタンより、CSVレポートで決済結果のダウンロードができます。
各検索欄で検索することで条件ごとに決済を絞り込んでダウンロードできます。
CSVファイルの各項目については、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で、各処理結果を即時に受信できます。
コールバックの詳細は、利用ガイド『処理結果の通知と取得』をご覧ください。
各種処理結果について、本サービスから加盟店さまがシステム通知を受信できます。
ウェブフックの詳細は、利用ガイド『ウェブフック』をご覧ください。
各処理結果について、加盟店さま/消費者のメールアドレス宛に通知を送信できます。
通知の詳細は、利用ガイド『処理結果のメール通知』をご覧ください。
以下2通りのリクエスト方法によって、決済結果を取得できます。
詳細は、それぞれAPIリファレンスをご覧ください。
CSVレポートのダウンロード手順と見方について説明します。
①管理画面>決済 から、日時など任意の条件に絞ってください。
②課金と返金それぞれのCSVレポートをダウンロードしてください。
③イベント(Q列)に対応する金額を、イベント金額(F列)から確認できます。
課金と返金のファイルを照合して、加盟店さまの目的に合わせてデータを活用してください。
例1)「イベント」:売上、「イベント金額」:100
→100円の売上
例2)「イベント」:返金、「イベント金額」:100
→100円の返金
イベントの種類とその内容は、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
トークンメタデータ(L列)または課金メタデータ(M列)から確認できます。
商品名のメタデータのキーは univapay-product-names です。
以下2通りの方法で、管理画面から課金を行えます。
管理画面の操作方法は、『管理画面ガイド』をご覧ください。
管理画面>リカーリングトークンから、課金させたいリカーリングトークンを選択し、下部の課金ボタンから課金ができます。
管理画面>CSV課金からCSVファイルをアップロードすることで、複数のリカーリングトークンに対して一括で課金ができます。
ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
Alipay・WeChat・PayPayonline・Paidy・d払いOnlineは一部返金に対応しています。
その他の決済手段は対応していません。
決済手段によって異なります。
以下を参照してください。
決済手段
|
返金の可否
|
クレジットカード決済
|
約半年(約180日)
|
Alipay
|
1年
|
Wechat
|
半年(180日)
|
PayPayonline
|
1年
|
Paidy
|
1年
|
d払いOnline
|
半年(180日)
|
以下のような原因が考えられます。
クレジットカード決済で、接続先が海外の場合、返金に1~2週間ほどかかる場合があります。
処理が完了したら「成功」「失敗」に変わりますので、しばらくお待ちください。
返金の受付は完了しましたが、処理は完了していない状態です。
返金処理には1~2週間ほどかかる場合がありますので、しばらくお待ちください。
課金時と返金時の通知メールは、同じメールテンプレート種別「決済完了通知」が送信されます。
メールテンプレートを作成する場合、パラメータ${transaction_type}を使用することで、処理によって自動で「課金」もしくは「返金」とメール表記を切り替えることが可能です。
例)件名が「${transaction_type}のお知らせ」の場合
課金時:「課金のお知らせ」
返金時:「返金のお知らせ」
メールテンプレートを作成せずデフォルトのメールテンプレートを使用する場合は、処理によって「課金」または「返金」にメール表記が切り替わります。
メールテンプレートのデフォルト内容は、利用ガイド『テンプレートの種類』を参照してください。
作成方法は以下3通りあります。
加盟店さまの運用に合った方法で作成してください。
1.管理画面から設定
管理画面>リンクフォーム から、リンクフォームを作成する際に「定期課金」をONにしてください。
2.パラメータを指定
決済フォーム設置時 または APIでの連携時、パラメータで課金方式を定期課金に指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面>店舗>対象の店舗>決済フォーム のジェネレータを活用すると、簡単に作成できます。
指定できる定期課金の間隔は以下の通りです。
定期課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち |
継続中の定期課金で課金を失敗し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
自動でリトライ(再度課金)を行います。
設定された回数のリトライに失敗すると、自動で即時停止します。
デフォルトは、定期課金の周期÷設定されたリトライ回数=リトライ間隔として計算されます。
※毎月(monthly)は課金月に関係なく30日として計算します。
※割り切れない場合は切り捨ての日数になります。
例)30日÷4=7.5日→7日
リトライ間隔は、前回失敗した日から計算されます。
例)リトライ間隔7日の定期課金
2024/1/23に失敗→2024/1/30にリトライ
任意のリトライ間隔に設定したい場合は、以下を参照してください。
全体の定期課金に対して、リトライを実行する回数を設定できます。
管理画面>一般設定 から設定できます。
設定時の注意点:
リトライ回数は初回の課金も回数に含みます。
リトライに成功すると、リトライ回数がリセットされ、次回の支払いからは設定した回数リトライされるようになります。
定期課金ごとに、リトライを実行する間隔を個別で設定できます。
リトライ間隔の設定は、リトライ回数の設定より優先されます。
設定方法は以下の通りです。
①定期課金作成時
(ⅰ)管理画面の定期課金作成画面で指定
(ⅲ)APIでの連携(定期課金 – CREATE)
②定期課金情報の更新:APIでの連携(定期課金 – UPDATE)
管理画面>定期課金 より、停止させたい定期課金を選択して詳細画面を開き、左下部の停止ボタンを押すことで停止できます。
停止ボタンは、停止後再開できる「一時停止」と、再開できない「永久停止」の2種類あります。
用途に合わせて選択してください。
管理画面>定期課金 から、再開させたい定期課金を選択して詳細画面を開き、左下部の再開ボタンを押すことで再開できます。
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/2に再開(次回課金日:2024/3/1に設定される)
③2024/3/1に課金される
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/1に再開
→再開日がサイクル日(次回課金日)と同日のため、即時課金される
当社の決済フォームを使用するか、APIで連携することで作成できます。
初回に課金せず、カード登録のみを行う場合は、基本CVV認証が必須なことに注意してください。
※設定によって不要な場合もあります。
作成方法は、以下を参照してください。
リンクフォームタブと、店舗タブの各ジェネレーターから作成できます。
下記の通り設定してください。
決済フォーム設置時 または APIでの連携時、パラメータを指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面から変更できます。
管理画面>定期課金>対象の定期課金を選択し、次回課金日および次回課金金額を変更してください。
※設定変更後、ページ下部の「保存」ボタンを押してください
回数制限付き定期課金の場合は、次回課金金額の変更はできません。
契約時に設定された課金最大額が、都度の課金額の上限です。
一般設定>決済サービス>全体設定>課金 の「課金額の上限」から確認できます。
次の課金日は、管理画面>定期課金 から対象の定期課金を選択し、詳細画面から確認できます。
課金日の午前7時※より、順次課金されます。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金が停止している場合は、以下の点に注意してください。
次の課金を待っている状態です。
次の課金日の確認方法は、一つ上の質問項目「この定期課金が次に課金されるタイミングはいつですか?」の回答を参照してください。
加盟店が指定したサイクル(間隔)ごとに自動で課金を行う方法です。
加盟店さまへは、都度の課金が精算・入金されます。
都度課金を、消費者が任意の回数に分けて支払う方法です。
消費者とイシュア(カード発行会社)との契約によって、選択できる回数が異なります。
加盟店さまへは、一括で精算・入金されます。
カード情報(カード番号と有効期限)を復号できない別の文字列に置き換えたものです。
当社決済フォームに入力されたカード情報は、自動的に文字列に置き換える処理(トークン化)が行われます。
トークン化によって、PCI DSSに準拠していない加盟店でもクレジットカード決済を利用できます。
※クレジットカード情報を加盟店サイト内に入力させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSへの準拠が必要になります。
繰り返し課金に利用するために、消費者のクレジットカード情報をトークン化したものです。
リカーリングトークンを登録することによって、消費者が2回目以降の決済時にカード情報を入力する手間を省けます。
管理画面>リカーリングトークンから、登録済のリカーリングトークンに対して、以下の対応が可能です。
セキュリティコード認証されていない可能性があります。
初回処理時に課金しなかったリカーリングトークンに対して後から課金をするには、リカーリングトークン作成時にセキュリティコード認証をする必要があります。
※加盟店設定によります
当社指定のフォーマットに沿ったCSVファイルをアップロードすることで、加盟店さまの判断で、既存の消費者に対して再び課金できる機能です。
CSV課金では、複数の既存の消費者に対して一括での課金が可能です。
オプション機能のため、ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
リカーリングトークンに保存されたクレジットカード情報を再利用して、新たな課金を行います。
CSVファイルで提供された情報をもとにリカーリングトークンを識別するため、予めリカーリングトークンに消費者の情報(クレジットカード情報,メールアドレス,メタデータ等)が結びついている必要があります。
一番新しいリカーリングトークンを識別する仕組みによって、消費者1人に対して複数のリカーリングトークンが存在している場合でも、重複して課金することを防げます。
例)メールアドレスで識別する場合
同じメールアドレスのリカーリングトークンが複数存在している場合、一番新しいリカーリングトークンに対してのみ課金する
詳細は、利用ガイド『CSV課金』をご覧ください。
CSV課金を実行してから、結果を確認するまでの流れを説明します。
当社指定のフォーマットに沿って、課金に必要な情報が記載されたCSVファイルを作成してください。
管理画面>CSV課金 から、「CSVファイルをアップロードする」のボタンを押してください。
その後、画面に沿って各設定を行い、「金額データCSV」の項目へ作成したCSVファイルをアップロードしてください。
CSV課金の結果は管理画面>CSV課金 から、対象のCSV課金を選択することで処理結果や詳細を確認できます。
対象のCSV課金を選択した画面から、決済結果を確認する方法は、以下の2通りあります。
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
オンライン決済時の、APIへのリクエストの手順を説明します。
詳細は、利用ガイド『オンライン決済 - APIへのリクエスト』を参照してください。
トランザクショントークン – CREATEが利用できません。
加盟店さまのサイト内に消費者のクレジットカード情報を入力させてUnivaPay APIに送信する行為は、クレジットカード情報の「通過」にあたるため、加盟店サイトのPCI DSSへの準拠が必要です。
代わりに当社決済フォーム(リンクフォーム、ウィジェット、インラインフォーム)や 決済端末など、当社の提供するソリューションを使用することで、PCI DSSに準拠していない場合でもクレジットカード情報を送信できます。
PCI DSSに準拠している場合は、トークン化から課金、返金まで全てのリクエストを本サービスのAPIに送信できます。
対応しているSDKの言語は以下3つです。
本サービスのAPIには、レート制限と、リソース制限の2種類の制限があります。
詳細は、APIの制限のページを参照してください。
ここでは「リクエスト数」の制限に関して、抜粋して紹介します。
レート制限には、課金レート制限と標準レート制限の2つに分類されます。
課金の作成に関するリクエストを行う際にカウントされます。
対象API | X-Remaining-Requests (バーストレート) |
X-Requests-Per-Minute (1分あたりのリクエスト上限) |
---|---|---|
POST /tokens POST /charges POST /subscriptions |
上限:100 |
3,000/分 |
標準レート制限は、ルートバーストレートとイグザクトバーストレートの2つに分類されます。
アクセスするリソースの「パス」に対しての制限です。
対象 | X-Remaining-Requests-Route (ルートバーストレート) |
X-Requests-Per-Minute-Route (1分あたりのリクエスト上限:ルート) |
---|---|---|
全てのパス | 上限:30 | 1,200 |
Exact(完全一致)の名の通り、リソースIDやクエリ文字列も含めて完全に一致するパスに対して適用されます。
対象 | X-Remaining-Requests-Exact (イグザクトバーストレート) |
X-Requests-Per-Minute-Exact (1分あたりのリクエスト上限:イグザクト) |
---|---|---|
全てのクエリ | 上限:10 | 120 |
1つの加盟店または店舗で、有効にできるリソース数には上限があります。
この上限を超えるリソースの作成リクエストには、ResourceLimitReached
エラーが出力されます。
リソース | 上限 |
---|---|
webhook (ウェブフック) |
20 |
jwt (アプリトークン) |
20 |
パスワードリセットトークン | 5回/日 |
テスト課金 | 1440件/日 |
発生したエラーのコードおよびメッセージを確認できる場所は、下記の通りです。
確認者
|
場所
|
---|---|
消費者
|
・決済完了画面 ・通知メール「決済完了通知」 |
加盟店さま
|
・merchant>決済>決済詳細画面 「ステータス」部分 ・通知メール「決済完了通知」 |
エラーコードやエラーメッセージの内容を確認したい場合は、APIリファレンス『エラーコード – 概要』を参照してください。
認証エラー(ペイメントエラー306)は、クレジットカードが拒否された場合に発生するエラーです。
よくある事例は以下の通りです。
実際の拒否理由は、消費者からカード発行会社へお問い合わせください。
Alipay Online、Alipay Plus OnlineはPCブラウザ、スマートフォンからそれぞれ決済できます。
WeChat Pay Onlineはモバイル端末からのみ決済できます。
決済手段や、消費者の使用するデバイスによって消費者の支払いフローが異なりますのでご注意ください。
詳細は、以下を参照してください。
決済手段 | PCブラウザ | モバイル端末 |
---|---|---|
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
端末内のアプリを開いて決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online |
非対応 |
リンクフォームを利用する場合: ウィジェットを利用する場合: |
その他のオンライン決済については、利用ガイド『オンライン決済 - 特徴』を参照してください。
通貨を変更する必要はありません。
日本円を指定すると、AlipayおよびWechatアプリ側で自動で「元」に変換されます。
APIでの実装で対応しています。
実装方法は、APIリファレンス『課金 – CREATE』からご確認ください。
現在対応しておりません。
課金のステータスが awaiting 以外(pending、failed、error など)の状態でイシュアトークンを取得すると、本エラーが発生します。
イシュアトークンを取得する前に、課金のステータスが awaiting になっているかGET処理によって確認することを推奨します。
口座種別はすべて「普通」です。
当システム上で返金機能はありません。
加盟店さまから直接消費者の口座へ返金をお願いいたします。
振込前であれば振込を出来なくすることが可能です。
管理画面>決済 より該当の課金を検索し、詳細画面の左下にある「請求停止」ボタンをクリックしてください。
振込手数料は消費者の負担です。
金額詳細は振込元の金融機関にお問い合わせください。
振込前であれば管理画面>決済>詳細画面より「請求停止」を行い、変更後の金額で再度申込を行ってください。
管理画面>決済 より該当の課金を検索し、詳細画面から口座情報を確認できます。
確認した口座情報を、加盟店さまより消費者へ案内してください。
日本の金融機関からのみ振込可能です。
海外金融機関からの振込は対応していません。
テスト決済方法および結果の確認方法を説明します。
管理画面>テスト課金 から、クレジットカード決済のみ簡易的なテスト決済が可能です。
実際に当社決済フォームを使用したテスト決済を行いたい場合は、以下の手順で行ってください。
①テストモードのアプリトークン作成
②アプリトークンをテストモードにの切り替え
……決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
リンクフォームは、対象店舗で作成したリンクフォームすべてに対して、モードの切り替えが適応されます。
ウィジェット および インラインフォームは、フォーム毎にアプリトークンを指定することで、モードを指定します。
③テスト決済実行
テストモードのアプリトークンを使用し、各処理を行ってください。
詳細は、APIリファレンス『トランザクショントークン – CREATE』をご覧ください。
別のアカウントは不要です。
テスト決済の方法および結果の確認方法は、一つ上の質問項目「テスト決済をするにはどうすれば良いですか?」の回答を参照してください。
テストモードの決済に使用できるカード番号は下記の通りです。
カード番号によって確認できる挙動が異なるため、加盟店さまの目的に沿った番号を利用してください。
カード番号
|
確認できる挙動
|
---|---|
4000020000000000
|
決済成功 / 返金成功
|
4242424242424242
|
決済成功 / 返金失敗
|
4111111111111111
|
決済失敗
|
計算ルールに基づいたカード番号であれば、その他のカード番号も利用可能です。
カード番号を生成できるサイト等を活用すると、簡単に作成できます。
例:https://www.getcreditcardnumbers.com/
※その他のカード番号を利用する場合は、決済成功 / 返金成功の挙動になります。
本番モードのアプリトークンを作成し、本番モードのアプリトークンに切り替えてください。
決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
テストモードのリカーリングトークンは、1カ月で消える仕様です。
消えたリカーリングトークンに対する課金は、返金ができなくなります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
できません。
サーバ上からテスト決済をお願いします。
実装方法によって、リダイレクト(遷移)先URLの指定方法が異なります。
以下を参照してください。
実装方法 | リダイレクト先URLの指定方法 |
---|---|
リンクフォームの設置 |
または
|
ウィジェット / インラインフォームの設置 |
かつ
※詳細は、利用ガイド『設置 – (HTML/JavaScript)』を参照してください |
APIでの連携 |
パラメータを指定 ※詳細は、APIリファレンス『課金 – CREATE』を参照してください |
使用中のアプリトークンに、サイトURLのドメインが指定されていない場合に表示されるエラーです。
ウィジェットやインラインフォームを利用する場合は、アプリトークンへのサイトURLのドメインの入力が必須です。
(APIやSDKを利用する場合は不要です。)
サイトURLのドメインを指定したアプリトークンを使用して、再度お試しください。
アプリトークンへのサイトURLのドメインの指定手順は、以下の通りです。
①管理画面>アプリトークン の「新規作成」ボタンをクリック
②利用店舗の指定 および モードの選択を行う
③ドメインの「追加」ボタンをクリックし、サイトURLのドメインを入力
例)サイトURLが「https://www.univapay.com/」の場合、ドメインは「www.univapay.com」
④右下「作成」ボタンをクリック
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
処理結果は、ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で即時に受け取れます(コールバック)。
コールバックを活用して、加盟店さま側でエラー内容ごとにウェブサイトの挙動を変える実装を行ってください。
また、ウェブフック および APIへのリクエスト(課金のGET処理)で処理結果を受け取り、ウェブサイトで次の処理を実行したい場合等に活用できます。
詳細は、それぞれ以下ページをご確認ください。
決済など各処理をテストモードで行うことで、通知メールの文面および挙動を確認できます。
※請求名など、本番モードの時にしか反映されないパラメータもあります。
管理画面>通知メールテンプレート の「新規作成」ボタンからメールテンプレートを作成することで、通知メールの文面を自由に変更できます。
メールテンプレートを作成していない場合は、デフォルトの文面で通知メールが送信されます。
デフォルトの文面は、利用ガイド『テンプレートの種類』のページを参照してください。
管理画面>一般設定>一般>通知 の「メールアドレス」に任意のメールアドレスを入力することで、加盟店さまに届く通知メールの宛先を指定できます。
指定していない場合、管理画面のログイン用メールアドレスへ通知メールが送信されます。
(その場合は、管理画面右上の加盟店名をクリック>ユーザー設定 の「メールアドレス」からログイン用メールアドレスを変更すると、通知メールの宛先も変更されます。)
管理画面>一般設定>通知 から、処理ごとに通知メールの挙動を設定できます。
通知あり / なしは、ボタンの有効 / 無効によって設定してください。
※設定を変更後、ページ下部の「保存」ボタンを押してください
以下手順によって、商品ごとにメールの文面を分けることができます。
管理画面>商品 から商品を選択後、メタデータの「追加」ボタンを押し、「値」にメールで表示させたい文章を追加してください。「キー」は任意の文字列を指定してください。
例)キー:商品Aの発送日,値:商品Aの発送はお支払の3日後です。
管理画面>通知メールテンプレート から、文章を追加したいメールテンプレートを選択(作成していない場合は「新規作成」ボタンから作成)し、メタデータの「キー」を指定したパラメータを記載してください。
(メタデータの「キー」を指定することで、課金メタデータのうち、表示させたい「値」のみを表示できます。)
また、パラメータの末尾に「:- (コロン,ハイフン,空白)」を入力してください。
(パラメータの語尾に「:-(コロン,ハイフン)」を入力すると、その後ろに入力した文字列が、該当のメタデータが存在しない場合に表示される「デフォルト値」として設定されます。)
デフォルト値を空白に指定することで、該当のメタデータが存在しない場合はメールへ反映されません。
例)${charge_metadata.商品Aの発送日:- }
テストモードで各処理を行って、通知メールの文面を確認してください。
商品を指定した処理時は通知メールの内容が商品ごとに分かれていて、商品を指定していない処理時はメールに何も表示されなければ完了です。
例)商品Aを指定して課金処理を行った場合、通知メールの文面に「商品Aの発送はお支払の3日後です。」と表示される / 商品を指定せず課金処理を行った場合、通知メールの文面何も表示されない
以下のどちらかのパラメータを、商品名を表示させたい通知メールテンプレート内に記載してください。
商品名以外にも、${charge_metadata.(キー)}や${token_metadata.(キー)}のように表示させたいメタデータのキーを指定すると、その値のみを通知メールの文面に表示させることができます。
※リカーリング課金時やCSV課金時、リカーリングトークン作成時、カード情報変更時は${charge_metadata.(キー)}を指定してもメタデータが表示されません。${token_metadata.(キー)}をご利用ください。
商品を指定しない処理時に表示させたくない場合は、下記のように「デフォルト値」を空白に指定してください。
以下のイベントが発生した場合、各種内容の通知メールが送信されます。
※「モード設定」や「基本設定」が無効な場合は送信されません。
管理画面>ウェブフック から、「新規作成」ボタンを押すと設定できます。
各項目の設定方法は以下を参照してください。
※設定後、ページ下部の「作成」ボタンを押してください
ウェブフック失敗により、自動停止された可能性があります。
以下の場合、ウェブフックを自動で停止します。
HTTPレスポンス エラーコード
|
処理
|
---|---|
3xx
|
リトライせず、失敗後即停止する
|
4xx、500、501、502
|
初回含む最大10回のリトライを行い、最大回数に達すると停止する
|
停止後はリトライされないため、もう一度有効化したい場合は管理画面から以下手順で設定する必要があります。
①管理画面>ウェブフック から、「すべて」または「停止」のウェブフック一覧を表示
②有効化したいウェブフックを選択
③画面左下の「有効化」ボタンを押す
ウェブフックの失敗時および停止時にメール通知が必要な場合は、管理画面>一般設定>一般>通知 の「ウェブフック失敗時の通知」「ウェブフック利用不可の通知」を有効にしてください。
失敗した理由は、管理画面>ウェブフック>対象のウェブフックを選択>最近のイベント から対象のトリガーを選択し、「error_message」から確認できます。
例)error_message:Request timeout to www.triple-farm.com after 3 seconds
……指定されたURLに対してウェブフック通知した際に、3秒以内にレスポンスがない場合、当社ではタイムアウトによって「失敗」と判定します。そのため、非同期処理によって3秒以内にレスポンスを返却する実装が必要です。
※あくまで当社の判定なため、加盟店さまへは結果通知が届いてる場合があります
ウェブフック失敗後の挙動は、利用ガイド『ウェブフック』を参照してください。
管理画面右上の加盟店名>ユーザー設定 から、ログイン用のメールアドレスおよびパスワードを変更できます。
※一般設定>一般>通知 の「メールアドレス」から、通知メールを受信するメールアドレスを別途設定していない場合は、ログイン用メールアドレスへ通知メールが送信されます。
ログイン画面から、以下手順でパスワードを再設定できます。
①「パスワードを忘れた場合」ボタンを押して、登録されている加盟店さまのメールアドレスを入力する
②入力されたメールアドレスに届いた、件名『UnivaPayパスワードリセット』というメールを開き、記載されているパスワード再設定用のURLをクリックする
③遷移先のページで、新しく設定したいパスワードを2度入力し、「送信」ボタンをクリックする
別サービスで決済システムを利用する場合は、別途審査を行いアカウントを発行する必要があります。
サポートデスク(ips-support@univapay.com)へお問い合わせください。
変更依頼・停止・解約申込フォームから申請することで、加盟店情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 「変更する」を選択した場合、それぞれ入力欄が表示されるので、変更したい内容を記載してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「店舗ID」「店舗名」を記載してください。
変更依頼・停止・解約申込フォームから申請してください。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
変更依頼・停止・解約申込フォームから申請することで、登録情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
加盟店さまの負担です。
振込手数料は、一律400円(税別)です。
契約内容によっては、変更が可能です。
変更を希望する場合は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
明細書および請求書は、「明細書送付先アドレス」宛に案内します。
書類ごとに、発行されるタイミングや記載内容、確認方法が異なります。
発行書類 | 発行されるタイミング | 記載内容の概要 | 確認方法 |
---|---|---|---|
売上代金支払明細書 | 振込日の約2~5日前 |
|
メール文面上 または 管理画面>精算 からPDFをダウンロード |
支払通知書 | 振込日当日 ※振込の場合のみ |
|
メール文面上からPDFをダウンロード |
請求書 | 集計期間の翌月末日頃 ※請求がある場合のみ |
|
メール文面上からPDFをダウンロード |
※送付日は休日等の影響によって多少変動します。
※契約内容により、送付のタイミングが異なる場合があります。
入金予定日が金融機関の休日や祝日と重なる場合、入金日は金融機関の翌営業日になります。
また、加盟店さまへの入金は、支払い額が10,000円以上の場合のみ行い、10,000円未満の場合は次月へ繰り越しします。
※デフォルトの金額設定です
10,000円以上の支払い額で入金がない場合は、精算担当(下記連絡先)へお問い合わせください。
※メールの場合は、必ず「加盟店ID」「加盟店名」を記載してください。
トランザクショントークンオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
トランザクショントークンを作成した後はトランザクショントークンIDを指定して課金 / 定期課金を行ってください。
{secret}
部分){jwt}
部分)トランザクショントークン – CREATE リクエストは、クレジットカード情報を加盟店サイト内に入力させ、本サービスのAPIに送信します。
このリクエストを行うには PCI DSS に準拠している必要があります。
PCI DSSに準拠していない場合はこのリクエストを行えないことに注意してください。
PCI DSSに準拠していてトランザクショントークン – CREATE リクエストの利用を希望する場合は、当社までご連絡ください。
クレジットカード以外の決済手段の場合は、当社へ連絡不要でトランザクショントークン – CREATE リクエストを行えます。
curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
payment_type | string | card (クレジットカード決済), paidy (Paidy決済), online (オンラインモバイル決済)※, konbini (コンビニ決済), bank_transfer (銀行振込決済)のいずれか※ online はワンタイムトークンのみ指定可能 |
type | string | トークンの種類を参照 特定の支払い手段により種類が制限される場合あり 繰り返しに設定されていて、アカウントに無限に課金可能なトークンを作成する権限がない場合は、 usage_limit パラメーターを指定する必要あり |
usage_limit | string | このトークンがリカーリングトークンの場合に使用できる頻度 無限に課金可能なリカーリングトークンを作成する権限がある場合は空白可 |
email※ | string | メールアドレス ※payment_typeがonlineのみ任意・それ以外は必須 |
ip_address※ | string | 消費者のデバイスのIPv4アドレス ※we_chat_online(web, http_get)の場合 |
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": "2034",
"cvv": "123",
"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
}
}
}
管理画面>決済から確認できます。
詳細は『管理画面ガイド』をご覧ください。
課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
成功 | 正常に決済が完了した |
処理待ち |
|
オーソライズ済 | 仮売上(決済金額の与信枠をおさえている) セキュリティコード認証(CVV認証)に成功した |
失敗 |
決済が失敗している |
エラー |
決済サーバーやデータベースエラーなどの例外的なエラーや、カードの有効期限切れなどが発生した |
キャンセル済 |
|
決済結果の取得方法は下記4通りです。
加盟店さまの目的に沿った方法をご利用ください。
決済タブのダウンロードボタンより、CSVレポートで決済結果のダウンロードができます。
各検索欄で検索することで条件ごとに決済を絞り込んでダウンロードできます。
CSVファイルの各項目については、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で、各処理結果を即時に受信できます。
コールバックの詳細は、利用ガイド『処理結果の通知と取得』をご覧ください。
各種処理結果について、本サービスから加盟店さまがシステム通知を受信できます。
ウェブフックの詳細は、利用ガイド『ウェブフック』をご覧ください。
各処理結果について、加盟店さま/消費者のメールアドレス宛に通知を送信できます。
通知の詳細は、利用ガイド『処理結果のメール通知』をご覧ください。
以下2通りのリクエスト方法によって、決済結果を取得できます。
詳細は、それぞれAPIリファレンスをご覧ください。
CSVレポートのダウンロード手順と見方について説明します。
①管理画面>決済 から、日時など任意の条件に絞ってください。
②課金と返金それぞれのCSVレポートをダウンロードしてください。
③イベント(Q列)に対応する金額を、イベント金額(F列)から確認できます。
課金と返金のファイルを照合して、加盟店さまの目的に合わせてデータを活用してください。
例1)「イベント」:売上、「イベント金額」:100
→100円の売上
例2)「イベント」:返金、「イベント金額」:100
→100円の返金
イベントの種類とその内容は、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
トークンメタデータ(L列)または課金メタデータ(M列)から確認できます。
商品名のメタデータのキーは univapay-product-names です。
以下2通りの方法で、管理画面から課金を行えます。
管理画面の操作方法は、『管理画面ガイド』をご覧ください。
管理画面>リカーリングトークンから、課金させたいリカーリングトークンを選択し、下部の課金ボタンから課金ができます。
管理画面>CSV課金からCSVファイルをアップロードすることで、複数のリカーリングトークンに対して一括で課金ができます。
ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
このページは初期設定が完了し、ウィジェットの概要が通読されていることを前提に作成しています。
「ウィジェットの概要」で説明の通り、支払い方法の選択次第で「決済」でなく「申込」がなされる可能性があるため、このページでは、ウィジェットで行われる「決済または申込」を「処理」と表現します。
ウィジェットを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コードやバーコードを読み取って行う決済方法のこと。 |
Frontend
TWEAK 商品コードの数を指定するパラメータdata-product-code-quantitiesを追加しました(ウィジェット / インラインフォーム)
FIX カスタマーIDを指定するパラメータunivapayCustomerIdを指定の不具合を修正しました(リンクフォーム)
Frontend
FIX Paidy決済の場合、住所を入力必須項目として決済フォームに表示されるように修正しました(ウィジェット)
Frontend/Backend
NEW 毎月の精算で発生した請求金額を登録したカードで決済する、クレジットカード登録機能を追加しました
Frontend
NEW
リンクフォームで設定可能なパラメータを2種類追加しました
・nameKana
・phoneNumberCountryCode
Frontend
TWEAK 住所の都道府県の入力をプルダウンで選択するようになりました(ウィジェット / リンクフォーム)
Frontend
TWEAK 電話番号の入力フォームで国番号の表示を追加しました(リンクフォーム)
Frontend/Backend
NEW
ウィジェット / インラインフォーム / リンクフォームで設定可能なパラメータを2種類追加しました
・data-hide-recurring-checkbox / hideRecurringCheckbox
・data-hide-privacy-link / hidePrivacyLink
TWEAK 電話番号の入力フォームで国番号の表示を追加しました(ウィジェット)
Frontend/Backend
UPDATE
イシュアトークン取得APIリクエストのURL末尾が/issuuer_tokenに変更になりました
※既存のURL(/issuerToken)でもリクエスト可能です
UPDATE 定期課金のリトライ回数がリセットされる仕様に変更になりました
NEW 管理画面>店舗>決済フォーム>ウィジェットの一般設定で、韓国語 / タイ語 / ロシア語を追加しました
Frontend/Backend
UPDATE ウェブフックの通知が失敗した場合、返却されたエラーコードによって通知のリトライが可能になりました
Frontend/Backend
NEW リカーリングトークンの詳細情報から、登録済のカード情報の有効期限および名義の更新が可能になりました
Frontend/Backend
UPDATE カード情報変更後に作成された新規リカーリングトークンと変更前の古いリカーリングトークンを、管理画面>リカーリングトークンの検索欄・詳細画面から確認可能になりました
NEW コンビニ決済の入金期限切れの通知メールテンプレートを追加しました
Frontend
UPDATE 指定した秒数が経過するとウィジェットが閉じてタイムアウトのエラー画面を表示させるパラメータ”data-timeout”を追加しました
Frontend/Backend
NEW 次回課金実行日(リトライ日含む)に一時停止・永久停止の処理を設定できる機能を追加しました
UPDATE CSV課金>該当のCSV課金の「レポート」の項目内に、実行された決済を確認できる機能(「>決済を確認」のリンク)を追加しました
Frontend/backend
NEW 支払い情報の確認・変更画面を追加しました
Frontend
UPDATE リンクフォーム、商品、URLジェネレータ(ウィジェット/インラインフォーム/リンクフォーム)に「月末に固定」を指定するトグルスイッチを追加しました
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にリクエストすることで能動的に取得することを推奨します。
Alipay・WeChat・PayPayonline・Paidy・d払いOnlineは一部返金に対応しています。
その他の決済手段は対応していません。
決済手段によって異なります。
以下を参照してください。
決済手段
|
返金の可否
|
クレジットカード決済
|
約半年(約180日)
|
Alipay
|
1年
|
Wechat
|
半年(180日)
|
PayPayonline
|
1年
|
Paidy
|
1年
|
d払いOnline
|
半年(180日)
|
以下のような原因が考えられます。
クレジットカード決済で、接続先が海外の場合、返金に1~2週間ほどかかる場合があります。
処理が完了したら「成功」「失敗」に変わりますので、しばらくお待ちください。
返金の受付は完了しましたが、処理は完了していない状態です。
返金処理には1~2週間ほどかかる場合がありますので、しばらくお待ちください。
課金時と返金時の通知メールは、同じメールテンプレート種別「決済完了通知」が送信されます。
メールテンプレートを作成する場合、パラメータ${transaction_type}を使用することで、処理によって自動で「課金」もしくは「返金」とメール表記を切り替えることが可能です。
例)件名が「${transaction_type}のお知らせ」の場合
課金時:「課金のお知らせ」
返金時:「返金のお知らせ」
メールテンプレートを作成せずデフォルトのメールテンプレートを使用する場合は、処理によって「課金」または「返金」にメール表記が切り替わります。
メールテンプレートのデフォルト内容は、利用ガイド『テンプレートの種類』を参照してください。
Backend/Frontend
NEW 管理画面の、定期課金の詳細画面で「次回課金日」に月末を指定かつ「月末に固定」をONに指定すると、サイクルが1か月以上の場合のみ、課金日を月末に固定できるようになりました
Backend/Frontend
NEW
定期課金のリンクフォームの作成時に使えるパラメーターのフィールドに"terminationMode"を追加しました
値に"on_next_payment"を指定すると、停止リクエストを送信した場合、次回の支払直前に決済データの変更が行われ、webhookが実行されます
送信を省略した場合、デフォルト値"immediate"が適用され、即時実行されます
このフィールドは、リンクフォームのみ有効です
Backend
UPDATE APIリクエストで、作成済みのリカーリングトークンを使い、商品(通常課金商品/定期課金商品)を指定した課金を行えるようになりました
Backend/Frontend
NEW リンクフォームで通常課金商品と定期課金商品商品を同時に指定し、合算して決済できるようになりました(ジェネレータには今後実装予定)
UPDATE 管理画面で、定期課金に登録された消費者のメールアドレスを編集できるようになりました
Backend/Frontend
NEW APIリクエストで定期課金を作成するとき、次回課金日を1ヵ月以上先に指定できるようになりました
UPDATE 管理画面の決済フォームのジェネレータで、銀行振込とコンビニ決済の支払い期限(日/時間)が指定できるようになりました(ウィジェット/インラインフォーム/リンクフォームURL)
UPDATE 管理画面の、店舗>決済フォーム>リンクフォーム設定の言語から「自動」(消費者のブラウザ設定に合わせた言語が自動で表示される設定)を指定できるようになりました
UPDATE ウィジェット/インラインフォームのパラメータ data-installment-plan と data-installment-qty は使用不可となりました
Backend/Frontend
NEW APIリクエストで定期課金を作成するとき、初回課金金額を選択する仕様に変更し、初回課金額0円 かつ 課金日を基準としたサイクルの定期課金を作成できるようになりました
UPDATE 管理画面の、一般設定>一般>通知>決済に「定期課金イベント発生時に通知」の項目を追加しました
TWEAK 管理画面の商品作成画面に、課金のシミュレーションを追加しました
Frontend
NEW 管理画面の、店舗>決済フォーム(リンクフォーム/ウィジェット/インラインフォーム)および通知メールテンプレートに、「中国語(簡体字)」を追加しました
Backend/Frontend
TWEAK 管理画面の、リンクフォーム作成画面とジェネレータ(ウィジェット/インラインフォーム)に、定期課金のシミュレーションを追加しました
UPDATE 管理画面の、リンクフォーム作成画面で、作成済のリンクの種類(通常課金/定期課金)を変更できるようになりました
NEW 管理画面の、ジェネレータを利用するとき、簡体字中国語を選択できるようになりました
TWEAK ウィジェット出力リクエスト時のパラメータで、課金の完了後に、元あったウィジェット表示用のボタンを消す設定が可能になりました
Backend
NEW APIリクエストで定期課金を作成するとき、リカーリングトークンを同時に作成できるようになりました
Backend/Frontend
TWEAK 管理画面でジェネレータを利用するとき、デフォルトのCVV認証をONにしました
UPDATE 決済フォームに表示する分割回数を、パラメータで指定できるようになりました(ウィジェット/インラインフォーム)
Backend
NEW Alipay+Online/Alipay Online/PayPayOnlineで、課金ごとのリダイレクトURLをAPIリクエスト時に指定できるようになりました
Backend
UPDATE
定期課金失敗後のリトライを「翌日固定」から「サイクル日数÷リトライ回数」に変更しました
これにより、定期課金のリトライ感覚を任意で設定できるようになりました
Backend/Frontend
FIX リンクフォームで発生していた、コンビニ決済の不具合を修正しました
UPDATE 管理画面のリカーリングトークン情報の画面から、課金を行うことができるようになりました
Backend/Frontend
NEW 管理画面のHTMLジェネレータで、商品コードを利用できるようになりました
FIX APIリクエストで仮売上の分割決済をキャプチャする際に、分割のリクエストが送信されるように修正しました
FIX モバイルのAlipay Online決済の不具合を修正しました
Backend
FIX リンクフォームでの、Paidy決済の不具合を修正しました
UPDATE セキュリティコード認証(カード情報登録)で発生した1円オーソリに対し、キャプチャするボタンを管理画面で非表示にし、APIでも受け付けないよう変更しました
Backend/Frontend
UPDATE APIやフォーム類で、分割払いと回数指定定期課金が併用して利用できるようになりました
UPDATE APIやフォーム類で、定期課金で指定できるサイクルに選択肢が増えました
UPDATE 上記が、管理画面のジェネレータでも指定できるようになりました
UPDATE コンビニ決済申込の通知メールで、支払期限の時刻まで表示するようになりました
UPDATE 定期課金の次回課金日を999日後まで指定できるようになりました
Backend/Frontend
NEW 管理画面上で、ウェブフックIDが確認できるようになりました
FIX 回数指定タイプの、定期課金の不具合を修正しました
Frontend
NEW 管理画面のURLコード生成ジェネレータで、自動リダイレクト設定ができるようになりました(リンクフォーム)
NEW 管理画面で、決済のメタデータに商品名が追加されました
Backend
NEW 加盟店の返金可否を設定できるようになりました(プラットフォーム単位)
Frontend
NEW 管理画面で、ウェブフックの通知履歴が過去1か月分確認できるようになりました
Backend
FIX Alipay+Onlineの決済で予期しないエラーが発生する不具合を修正しました
Frontend
TWEAK 管理画面で、課金IDなどの各IDを短縮表示するようになりました
NEW ウィジェットで、カスタム項目が利用可能になりました
Backend/Frontend
FIX CSV課金で発生した不具合を修正しました
FIX インラインフォームの不具合を複数修正しました
Backend/Frontend
UPDATE 管理画面の決済情報検索で、トランザクショントークン作成時に付与したメタデータを検索キーに指定できるようになりました
Backend/Frontend
NEW 管理画面で、決済情報のCSVデータがダウンロード可能になりました
UPDATE ウィジェット/インラインフォームで、タグ記述による商品コードの指定が可能になりました
UPDATE セキュリティコード認証を行った際にwebhookを送信できるようになりました
決済情報と消費者に関する個人情報を取得する為のリソースです。
課金(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リクエストには以下が必要です。(括弧内は入力箇所)
トランザクショントークンを作成した後はトランザクショントークンIDを指定して課金 / 定期課金を行ってください。
{secret}
部分){jwt}
部分)トランザクショントークン – CREATE リクエストは、クレジットカード情報を加盟店サイト内に入力させ、本サービスのAPIに送信します。
このリクエストを行うには PCI DSS に準拠している必要があります。
PCI DSSに準拠していない場合はこのリクエストを行えないことに注意してください。
PCI DSSに準拠していてトランザクショントークン – CREATE リクエストの利用を希望する場合は、当社までご連絡ください。
クレジットカード以外の決済手段の場合は、当社へ連絡不要でトランザクショントークン – CREATE リクエストを行えます。
curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
payment_type | string | card (クレジットカード決済), paidy (Paidy決済), online (オンラインモバイル決済)※, konbini (コンビニ決済), bank_transfer (銀行振込決済)のいずれか※ online はワンタイムトークンのみ指定可能 |
type | string | トークンの種類を参照 特定の支払い手段により種類が制限される場合あり 繰り返しに設定されていて、アカウントに無限に課金可能なトークンを作成する権限がない場合は、 usage_limit パラメーターを指定する必要あり |
usage_limit | string | このトークンがリカーリングトークンの場合に使用できる頻度 無限に課金可能なリカーリングトークンを作成する権限がある場合は空白可 |
email※ | string | メールアドレス ※payment_typeがonlineのみ任意・それ以外は必須 |
ip_address※ | string | 消費者のデバイスのIPv4アドレス ※we_chat_online(web, http_get)の場合 |
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": "2034",
"cvv": "123",
"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 ) |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-convenience-store-expiration-period /convenienceStoreExpirationPeriod かつ data-convenience-store-expiration-time-shift /convenienceStoreExpirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | convenienceStoreExpirationPeriod かつ convenienceStoreExpirationTimeShift | P3D かつ
(または 12%3A34%3A56%2B09%3A00 ) |
本ガイドは、コンビニ決済における各API処理の補足説明です。
コンビニ決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
消費者の情報をトークン化して保存します。
詳細は、APIリファレンス「トランザクショントークン – CREATE」を確認してください。
リクエストBody例
{
"payment_type" : "konbini",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"customer_name" : "テスト 太郎",
"phone_number" : {
"country_code" : "81",
"local_number" : "0364413400"
},
"convenience_store" : "family_mart"
},
"metadata": {
"memberid" : "12345"
}
}
2.課金作成
作成したトークンに対して課金申込を行います。
詳細は、APIリファレンス「課金 – CREATE」を確認してください。
リクエストBody例
{
"transaction_token_id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
"amount": "100",
"currency": "jpy",
"metadata": {
"orderid": "12345"
}
}
3.課金の取得
課金申込の結果を取得します。
詳細は、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,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "awaiting",
"error": null,
"metadata": {
"internal_convenience_payment_number": "20020-123456789012",
"internal_convenience_payment_url": "https:/example.com"
},
"mode": "live",
"created_on": "2022-07-20T06:28:44.521327Z"
}
支払先の情報は、レスポンスの"metadata"
の値として反映されます。
支払先の情報が反映されるタイミングは、課金作成のリクエスト時ではなく、課金申込が成功して"status": "awaiting"
になった時以降です。"metadata"
の値とその内容は以下の通りです。
"metadata" の値 | 内容 |
---|---|
internal_convenience_payment_number | 支払い番号 |
internal_convenience_payment_url | 支払い票のURL ※支払先がセブンイレブンの場合のみ発行されます |
Pay-easyの場合は支払いに別途「収納機関番号」が必要です。
値は固定されていて、共通で58091
です。
課金取得時のレスポンスには反映されず、申込完了メールにのみ反映されます。
4.課金の取得
入金の結果を取得します。
詳細は、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"
から確認できます。
決済処理を行う際に各QR事業者(プロバイダ事業者)の画面に遷移し、消費者側がログインして決済する または 各アプリを開いて決済する手段です。
下記がオンライン決済に該当します。
オンライン決済でサポートしている内容は、以下を参照してください。
都度課金のみ利用できます。
定期課金やリカーリングトークンを用いた継続的な課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 無視される理由 |
---|---|
カード登録(リカーリングトークン作成) CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
ここでは、当社決済フォームを開いてから決済が完了するまでの流れを説明します。
決済手段や消費者の使用するデバイスによっては、利用できない方法があります。
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 または 表示されたQRコードをモバイル端末で読み取って決済 |
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 |
WeChat Pay Online | 非対応 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | 端末内のアプリを開いて決済 または ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
Alipay Online | 端末内のアプリを開いて決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online | リンクフォームを利用する場合: アプリ内で当社決済フォームを開き、そのままアプリ内で決済 ※決済手段でAlipay,Alipay Plusを選択すると支払い処理に失敗します。 ※アプリ外のブラウザからフォームを開いた場合は、決済手段として表示されず利用できません。 ウィジェットを利用する場合: アプリ外のブラウザから当社決済フォームを開き、情報入力後WeChatアプリへ移動して決済 ※利用開始前に、ウィジェット設置予定のウェブサイトのドメインをサポートデスクへ連絡する必要があります。 ※アプリ内のブラウザからフォームを開いて決済する方法は現在対応していません。 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
※PayPay Onlineは決済時に消費者の情報を取得しないため、決済情報から消費者を特定できません。
そのため、決済フォームから消費者の情報を取得する(メールアドレスを必須項目にする等)または メタデータを付与するなど、消費者を特定できる実装を推奨します。
消費者の支払い画面は、下記の画像付き資料を参照してください。
テストモードでは本番モードと挙動が異なります。
テストモードの挙動は下記のとおりです。
リクエスト方法 | 挙動 |
---|---|
ウィジェット リンクフォーム | 即時に課金ステータスが「成功」になる |
API | レスポンスで "issuer_token": "test" が返却される※実際のイシュアトークン(URL)は発行されません。 |
テストモードでリクエストすることで、メール通知とウェブフック(システム通知)を確認できます。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、オンライン決済の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(オンライン決済のみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | online |
リンクフォーム | paymentMethods[] | online |
実装方法 | フィールド | 値の例(オンライン決済かつ特定のQR事業者に限定したい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods |
|
リンクフォーム | paymentMethods[] |
|
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
本ガイドは、オンライン決済における各API処理の補足説明です。
オンライン決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
APIの処理によって各QR事業者の支払い画面を呼び出すための流れは下記です。
消費者の情報をトークン化して保存します。
詳細はこちらのドキュメントを確認してください。
決済手段によって必要な情報が異なります。
また、 http_get
や http_post
など、各QR事業者が要求する実行方法によっても指定する値が異なります。
リクエストBody例
{
"payment_type" : "online",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"brand" : "alipay_plus_online",
"call_method" : "http_get"
},
"metadata": {
"memberid" : "12345"
},
}
作成したトークンに対して課金申込を行います。
詳細はこちらのドキュメントを確認してください。
リクエストBody例
{
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"amount": 1000,
"currency": "JPY",
"metadata": {
"order_id": 12345,
"shipping_details": "Customer wants it now"
},
"redirect": {
"endpoint": "https://test.url/path?additionalParams=paramValue"
}
}
課金申込の結果を取得します。
詳細はこちらのドキュメントを確認してください。
"status": "awaiting"
が確認できたら正常に課金申込が完了し、消費者からの入金待ちの状態です。
ウェブフックで結果を受信することも可能です。
(ウェブフックのイベント名はcharge_updated
です。)
レスポンス / ウェブフック Body例
{
"id": "0fe1e42a-1845-11e7-9b1f-d3bd0c055a99",
"store_id": "af857264-180c-11e7-9be2-276aea4fed28",
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"status": "awaiting",
"error": null,
"metadata": {
"customer_id": 12345,
"shipping_details": "Customer wants it now"
},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
状況は、課金の状態 "status"
および入金額 "charged_amount_formatted"
から確認できます。
取得した課金IDを基に各QR事業者の支払い画面を呼び出します。
レスポンスで発行された各QR事業者の支払いURLを消費者側に表示すると、支払いに進めます。
詳細はこちらのドキュメントを確認してください。
レスポンス Body例
{ "issuer_token": "test", "call_method": "http_get" }
当社決済フォームへ情報を入力後、Paidyの決済画面が開いたら案内に沿って進むと、再度当社画面に戻って決済が完了する流れです。
ウィジェットの場合は「支払う」ボタンを押し、リンクフォームの場合は待機すると支払い完了画面が表示されます。
消費者の支払い画面は、下記の画像付き資料を参照してください。
結果を加盟店さまの配送(または、それに準ずる会員ステータス等の)システムに自動で反映する必要がある場合は、ウェブフックで結果を受信して注文システムを更新するプログラムを設置してください。また、結果はAPIへリクエストすることでも取得できます。
システム連動を行わず、管理画面またはメールで結果を確認する場合は作成する必要はありません。
Paidyはテストモードの決済に対応していません。
本番モードの挙動は本ページ「消費者の支払いフロー」で確認してください。
本ページは、Paidyに対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、Paidyの手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(Paidyのみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | paidy |
リンクフォーム | paymentMethods[] | paidy |
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
トランザクショントークンオブジェクトに対する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
}
リクエスト時のパラメータの比較表です。
主にクレジットカード決済に関連するものを記載しています。
詳細はパラメータについて説明している各ページ及び、利用開始までの流れを記載した初期設定のページを確認して下さい。
項目 | 旧システム | 新システム ウィジェット方式 インライン方式の場合 | 新システム API方式の場合 |
---|---|---|---|
店舗ID | sid | data-app-id ※アプリトークンで店舗を判断し認証 | Authorization: Bearer {secret}.{jwt} ※アプリトークンとシークレットで店舗を判断し認証 |
ジョブタイプ | job 仮売上: AUTH 実売上: SALES 有効性チェック: CHECK など | オーソリ&キャプチャ:data-capture セキュリティコード認証: data-cvv-authorize など | オーソリ&キャプチャ:capture セキュリティコード認証: cvv_authorize.enabled など |
サービス種別 | svid クレジット: 1 | data-payment-methods クレジット: card | payment_type クレジット: card |
処理種別 | ptype 1 =トークン決済(memberpay.aspx のみ)1 =ゲートウェイ決済( payment.aspx のみ PCI DSS準拠環境以外では禁止)2 =3Dセキュア認証をするゲートウェイ決済3 =リンク方式4 =リンク方式(3DS) | なし | なし |
トークンタイプ | なし | data-token-type ・ one_time (デフォルト)・ recurring ・ subscription ※ data-checkout と組み合わせる | type ・ one_time ・ recurring ・ subscription |
チェックアウトタイプ | なし | data-checkout トランザクショントークンを作成するだけ: token トランザクショントークンと課金の両方を作成する: payment ※ data-token-type と組み合わせる | なし ※リクエスト時 「 ~/tokens 」「~/charges 」で指定 |
店舗オーダー番号 (顧客ID) | sod | data-univapay-reference-id | univapay-reference-id |
トークンID | upcmemberid | なし | transaction_token_id |
商品金額 | siam1 | data-amount | amount |
通貨 | なし | data-currency | currency |
自動課金周期 | actp1 2 =毎週 3 =隔週4 =毎月 5 =隔月6 =3ヶ月 7 =6ヶ月8 =1年20 =日数指定21 =日付指定22 =開始日指定(月周期)23 =開始日指定(日周期)24 =翌月日付指定 | data-subscription-period ・ daily (毎日)・ weekly (毎週)・ biweekly (隔週)・ monthly (毎月)・ bimonthly (隔月)・ quarterly (3ヶ月)・ semiannually (6ヶ月)・ annually (毎年)・ P●D (〇日毎)・ P●M (〇ヶ月毎) | period ・ daily (毎日)・ weekly (毎週)・ biweekly (隔週)・ monthly (毎月)・ bimonthly (隔月)・ quarterly (3ヶ月)・ semiannually (6ヶ月)・ annually (毎年)cyclical_period ・P●D ,P●M (〇日、〇ヶ月など)(ISO-8601 Duration) |
自動課金日付 | acdc1 ※自動課金周期 に「 20 」「21 」「22 」「23 」「24 」指定時20 =X日周期21 =X日付22 =X日後開始23 =X日周期24 =翌月日付指定 | data-subscription-start ※開始日指定:yyyy-mm-dd形式の日付指定 | schedule_settings.start_on ※開始日指定:yyyy-mm-dd形式の日付指定 |
自動課金間隔 | acmc1 ※自動課金周期 に「 21 」「22 」「23 」「24 」指定時21 =(指定値)✕ ヶ月毎 22 =(指定値)✕ ヶ月毎23 =X日後開始 24 =(指定値)✕ ヶ月毎 | なし | なし |
自動課金額 | acam1 | data-amount ※初回課金金額 data-subscription-qty ※金額指定の回数制限を利用する場合 | amount ※初回課金金額subscriptiont_plan.fixed_cycle_amount ※金額指定の回数制限を利用する場合 |
自動課金回数 | acrm1 「 0 」指定・省略時=無制限 | data-subscription-plan ・ fixed_cycles =固定の回数の支払い・ fixed_cycle_amount =都度の課金額を固定 | subscription_plan.plan_type ・ fixed_cycles =固定の回数の支払い・ fixed_cycle_amount =都度の課金額を固定 |
自動課金リトライ回数 | acrt1 未指定時は3回 | なし ※3回(初回含まないため実質2回。管理画面で変更可) | なし ※3回(初回含まないため実質2回。管理画面で変更可) |
自動課金リトライ周期 | acrd1 (指定値)✕ 日 | data-subscription-retry-interval | schedule_settings.retry_interval |
支払い回数 | sc | data-allow-card-installments (プルダウンで消費者に支払い回数を表示させる) data-installment-qty ( data-installment-plan= “fixed_cycles” の場合) | installment_plan.fixed_cycles ( installment_plan.plan_type がfixed_cycles の場合) |
店舗復帰URLコード | sucd ※事前に当社コントロールパネルで登録必要 | data-auto-submit ※ <form action=”<任意のURL>”> に指定 | なし |
決済番号 | pid | charge_id | なし リクエスト時 「 ~/charges/{id}/~ 」で指定 |
自動課金番号 | acid | subscription_id | なし リクエスト時 「 ~subscriptions/{subscriptionId} 」で指定 |
メールアドレス | em | data-email | email |
商品コード | sicd1 | data-product-codes | なし |
項目 | 旧システム (キックバック) | 新システム (ウェブフック) |
---|---|---|
決済番号 | pid | id |
処理結果 | rst | status |
管理番号(モードの判断) | ap ※本番モード時は「決済番号」 ※テストモード時は「TestMode」 | mode ※テストモード時は「 test 」 |
エラーコード | ec ※成功時: ER000000000 | “error”: {“message””details”} |
店舗オーダー番号 | sod | univapay-reference-id |
決済金額合計 | ta | charged_amount |
ジョブタイプ | job | transaction_token_type |
自動課金周期 | actp | period |
自動課金日付 | acdc | startOn |
本サービスの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件/日 |
作成方法は以下3通りあります。
加盟店さまの運用に合った方法で作成してください。
1.管理画面から設定
管理画面>リンクフォーム から、リンクフォームを作成する際に「定期課金」をONにしてください。
2.パラメータを指定
決済フォーム設置時 または APIでの連携時、パラメータで課金方式を定期課金に指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面>店舗>対象の店舗>決済フォーム のジェネレータを活用すると、簡単に作成できます。
指定できる定期課金の間隔は以下の通りです。
定期課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち |
継続中の定期課金で課金を失敗し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
自動でリトライ(再度課金)を行います。
設定された回数のリトライに失敗すると、自動で即時停止します。
デフォルトは、定期課金の周期÷設定されたリトライ回数=リトライ間隔として計算されます。
※毎月(monthly)は課金月に関係なく30日として計算します。
※割り切れない場合は切り捨ての日数になります。
例)30日÷4=7.5日→7日
リトライ間隔は、前回失敗した日から計算されます。
例)リトライ間隔7日の定期課金
2024/1/23に失敗→2024/1/30にリトライ
任意のリトライ間隔に設定したい場合は、以下を参照してください。
全体の定期課金に対して、リトライを実行する回数を設定できます。
管理画面>一般設定 から設定できます。
設定時の注意点:
リトライ回数は初回の課金も回数に含みます。
リトライに成功すると、リトライ回数がリセットされ、次回の支払いからは設定した回数リトライされるようになります。
定期課金ごとに、リトライを実行する間隔を個別で設定できます。
リトライ間隔の設定は、リトライ回数の設定より優先されます。
設定方法は以下の通りです。
①定期課金作成時
(ⅰ)管理画面の定期課金作成画面で指定
(ⅲ)APIでの連携(定期課金 – CREATE)
②定期課金情報の更新:APIでの連携(定期課金 – UPDATE)
管理画面>定期課金 より、停止させたい定期課金を選択して詳細画面を開き、左下部の停止ボタンを押すことで停止できます。
停止ボタンは、停止後再開できる「一時停止」と、再開できない「永久停止」の2種類あります。
用途に合わせて選択してください。
管理画面>定期課金 から、再開させたい定期課金を選択して詳細画面を開き、左下部の再開ボタンを押すことで再開できます。
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/2に再開(次回課金日:2024/3/1に設定される)
③2024/3/1に課金される
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/1に再開
→再開日がサイクル日(次回課金日)と同日のため、即時課金される
当社の決済フォームを使用するか、APIで連携することで作成できます。
初回に課金せず、カード登録のみを行う場合は、基本CVV認証が必須なことに注意してください。
※設定によって不要な場合もあります。
作成方法は、以下を参照してください。
リンクフォームタブと、店舗タブの各ジェネレーターから作成できます。
下記の通り設定してください。
決済フォーム設置時 または APIでの連携時、パラメータを指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面から変更できます。
管理画面>定期課金>対象の定期課金を選択し、次回課金日および次回課金金額を変更してください。
※設定変更後、ページ下部の「保存」ボタンを押してください
回数制限付き定期課金の場合は、次回課金金額の変更はできません。
契約時に設定された課金最大額が、都度の課金額の上限です。
一般設定>決済サービス>全体設定>課金 の「課金額の上限」から確認できます。
次の課金日は、管理画面>定期課金 から対象の定期課金を選択し、詳細画面から確認できます。
課金日の午前7時※より、順次課金されます。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金が停止している場合は、以下の点に注意してください。
次の課金を待っている状態です。
次の課金日の確認方法は、一つ上の質問項目「この定期課金が次に課金されるタイミングはいつですか?」の回答を参照してください。
加盟店が指定したサイクル(間隔)ごとに自動で課金を行う方法です。
加盟店さまへは、都度の課金が精算・入金されます。
都度課金を、消費者が任意の回数に分けて支払う方法です。
消費者とイシュア(カード発行会社)との契約によって、選択できる回数が異なります。
加盟店さまへは、一括で精算・入金されます。
カード情報(カード番号と有効期限)を復号できない別の文字列に置き換えたものです。
当社決済フォームに入力されたカード情報は、自動的に文字列に置き換える処理(トークン化)が行われます。
トークン化によって、PCI DSSに準拠していない加盟店でもクレジットカード決済を利用できます。
※クレジットカード情報を加盟店サイト内に入力させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSへの準拠が必要になります。
繰り返し課金に利用するために、消費者のクレジットカード情報をトークン化したものです。
リカーリングトークンを登録することによって、消費者が2回目以降の決済時にカード情報を入力する手間を省けます。
管理画面>リカーリングトークンから、登録済のリカーリングトークンに対して、以下の対応が可能です。
セキュリティコード認証されていない可能性があります。
初回処理時に課金しなかったリカーリングトークンに対して後から課金をするには、リカーリングトークン作成時にセキュリティコード認証をする必要があります。
※加盟店設定によります
ウィジェットで、消費者に分割払いを選択させたい場合に、指定するパラメータです。
基本動作に加え、以下を指定してください。
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 インラインフォームで利用可 | 全て |
本サービスを実装する上で、必要に応じて理解する必要がある各機能の仕様について記載しています。
定期課金では、事前に指定したサイクルで自動的に課金を行います。
2回目以降の課金は、課金日の午前7時※より順次課金を開始します。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金を作成する方法については実装ガイドの各ページを参照してください。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち | 継続中の定期課金で課金を失敗し、再課金を待っている状態 または 一時停止後に再開し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
処理 | 説明 |
---|---|
一時停止・永久停止・停止予約 | 停止処理をするとその時点から継続的な課金を行わないようになる 設定によっては停止リクエストがあった時、次回課金実行日まで停止しないようにすることも可能 |
再開 | 一時停止になっている定期課金を再開する 再開後はリトライ日、もしくは次回課金日に実行される |
リトライ | 定期課金のサイクルでの課金が失敗した際に一定間隔で再度課金を実行する 間隔・回数はリクエストのパラメータまたは管理画面より設定が可能 |
支払い情報の更新 | クレジットカード等、消費者の支払い情報を変更する 詳細はこちら |
定期課金情報の更新 | 管理画面から次回課金日、次回課金金額、メタデータ、メールアドレスなどの編集が可能 |
仮売上 | 定期課金の初回課金を仮売上にする キャプチャされた後に定期課金が開始しサイクル毎に課金が行われる |
回数制限付き定期課金 | 回数を制限した定期課金を行い、回数分の課金が完了後終了する※ |
初回無料の定期課金 | 初回処理でセキュリティコード認証を行うことで、初回の金額が0円の定期課金を作成することが可能 |
分割払い | 各決済フォームで分割回数を指定して決済すると、定期課金として作成される APIで作成する場合は定期課金オブジェクトでフィールドを指定する必要あり |
定期課金の支払い失敗後、再度課金を行うことができます。
課金に失敗した日から指定した間隔日後に課金の再実行され、その後成功するまで設定された回数リトライを行います。
リトライを行う間隔は定期課金毎に任意で指定できます。
指定方法 | 処理 |
---|---|
パラメータなどで間隔を指定する | 指定した間隔でリトライ ※各実装方法でのページを参照してください |
指定せずデフォルトで間隔が設定される | 定期課金の周期÷リトライ回数 で計算された間隔でリトライ ※1 ※2 |
リトライを行う回数は 管理画面>一般設定>決済サービス>全体設定 から設定できます。
一時停止中の定期課金を再開すると、リトライ回数(課金失敗回数)のカウントはリセットされ、設定した回数リトライが行われます。
リトライが成功した場合は期間(サイクル)を参照して次回課金日が設定されます。
初回を含め、設定回数以上のリトライが実行された場合、失敗後一時停止します。
例:
課金間隔:毎月
リトライ回数:3回
→リトライ間隔・・・10日(30日÷3)
状態 | 挙動 |
---|---|
リトライするも失敗した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ失敗→停止 |
リトライし成功した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ成功 7/1:次回課金 |
リトライ日は、「課金失敗日からリトライ間隔後の日付」と「指定した次回課金日」を参照して決定されます。
課金が失敗してリトライ待ち
になった定期課金の次回課金日を変更しても、「課金失敗日からリトライ間隔後の日付」の方が未来の場合は次回課金日にリトライされないためご注意ください。
また、加盟店さまで作成済定期課金のリトライ間隔の変更は行えないため、リトライ間隔後より前に課金を実行させたい場合はサポートデスクへご連絡ください。
継続中
の定期課金を任意で一時停止して再開した場合は、リトライ待ち
であってもリトライ日が表示されず、次回課金日に課金を実行します。
定期課金に停止処理をすると、その時点から継続的な課金を行わないようになります。
停止する方法は下記です。
方法 | 設定(指定) |
---|---|
管理画面 | 「一時停止」「永久停止」ボタンを押下 停止予約を設定 ※ページ下部に詳細を記載 |
API | 定期課金:UPDATE でstatus :suspended に更新定期課金:CREATEで schedule_settings.termination_mode :on_next_payment を指定 |
設定した回数リトライが失敗 | 無し(自動で一時停止) ※前ページで記載 |
定期課金作成時、もしくは作成後管理画面(またはAPI)で操作することで、
停止リクエストがあった時に次回課金実行日に定期課金を停止させるかどうかを設定することができます。
※ここでの「停止リクエスト」は一時停止、永久停止の両方を指します
「定期課金を停止する場合」
定期課金の停止リクエストを受けた場合に停止するタイミングを設定できます。
選択肢 | 処理 |
---|---|
すぐに定期課金を停止 | 即時停止 |
次回課金日に定期課金を停止 | リトライ含む次回の課金実行日に、課金せず停止 |
「次回課金実行日の処理(リトライ日含む)」
リトライ含む次回の課金実行日の処理を設定できます。
前の項目で「次回課金日に定期課金を停止」を指定した場合に選択できるようになります。
選択肢 | 処理 |
---|---|
そのまま課金 | 停止リクエストがない場合は課金を継続 停止リクエストを受けた場合は、次回課金日に停止 |
定期課金を一時停止 | 次回課金実行日に一時停止 |
定期課金を永久停止 | 次回課金実行日に永久停止 |
一時停止している定期課金に限り、再開処理をすることができます。
再開方法については下記の表を確認してください。
方法 | 処理 |
---|---|
管理画面 | 管理画面>定期課金詳細 から「再開」ボタンを押す |
API | 定期課金:UPDATE でstatus :current に更新 |
再開する時、設定されていた次回課金日の状態によって挙動が異なります。
次回課金日の状態 | 処理 |
---|---|
再開日に対して次回課金日が未来 | 既に設定されている次回課金日に課金する |
再開日に対して次回課金日が過去 | 再開直後には課金されず、再開時から最も近い将来のサイクル日に次回課金日がセットされる |
再開日が次回課金日と同日 | 再開直後に即時課金される ※当日に既に課金が実行されていれば課金されない |
次回課金日が過去の場合の例:
毎月1日の毎月サイクルの定期課金
8/1:課金
8/15:一時停止(次回課金日は9/1の状態)
10/2:再開(直後には課金されない)
→次回課金日が自動で11/1にセットされる
前回課金の処理結果によって処理が分かれます。
再開時に過去の未払いの決済がある場合、元の課金スケジュールを後ろ倒しで支払い予定を追加します。
例:
毎月1日の毎月サイクル、5回の回数指定で、
8/15に停止し、10/2に再開した際の課金スケジュールは下記です。
未払いの9/1・10/1の分は後ろ倒し、1/1・2/1と支払い予定が追加されます(本来は12/1が最後の支払予定日)
停止しない | 停止して再開 |
---|---|
8/1 | 8/1 |
9/1 | -(停止中) |
10/1 | -(停止中) |
11/1 | 11/1 |
12/1(完了) | 12/1 |
– | 1/1 |
– | 2/1(完了) |
消費者が自ら支払い方法を更新する方法はいくつか存在します。
新たに情報を登録して加盟店さまで既存の支払い情報と紐づけていただくか、既存の支払い情報を引き継いで更新する2つの場合に分かれます。
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | subscriptionid を利用したフォームを準備する※詳細はこちら |
ウィジェット・インラインフォーム | data-subscription-id を利用したフォームを準備する※詳細はこちら |
定期課金変更URL | 管理画面>定期課金>詳細 から、 カード情報変更フォームのURLを消費者に共有する |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
ウィジェット・インラインフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
以下のページでは「支払い情報の確認・変更画面」についての利用方法を説明します。
支払い情報の確認・変更画面では、消費者が定期課金のカード情報変更や停止、リカーリングトークンの追加や変更が可能です。
決済時やカード登録時に入力したメールアドレスをキーにして、定期課金やリカーリングトークンが表示されます。
停止
になり、管理画面から閲覧できます。過去に行われた課金の情報も引き続き閲覧できます。詳細は下記のページで説明しています。
1.メール通知など、加盟店さまから案内された支払い情報の確認・変更画面URLをクリックする
※消費者へのURLの共有方法は、「消費者へのURLの共有方法」のページを参照してください。
2.メールアドレスを入力する(URLにメールアドレスを未指定の場合のみ)
3.指定のメールアドレス宛に届いた認証コードを入力し、ログインする
(認証コードの有効期限:5分)
4.各変更/停止処理を行う
5.処理ごとに通知メールが届く(通知設定がONの場合のみ)
※消費者の各処理が完了すると、処理ごとに加盟店さまに通知メールやウェブフックが送信されます。(通知メール設定およびウェブフックのトリガーがONの場合のみ)
支払い情報の確認・変更画面から実行可能な処理は、管理画面の 一般設定>一般>全体設定>支払い情報の確認・変更画面から設定できます。
設定項目 | 説明 | 消費者の操作 |
---|---|---|
消費者側で定期課金の表示 | 定期課金情報タブを表示 | – |
消費者側でお支払い方法の表示 | お支払方法タブを表示 | – |
消費者側で定期課金の停止 | 定期課金の停止を許可 | 定期課金情報>課金停止処理 |
消費者側でカードの名義・有効期限の変更 | リカーリングトークンのカード名義/有効期限更新を許可 ※定期課金情報タブからカード名義/有効期限を変更するには、定期課金のトークンがリカーリングである必要があります | 定期課金情報 or お支払方法>カード管理>名義・期限の変更 |
消費者側で新規カード登録 | リカーリングトークンの新規作成を許可 ※定期課金情報タブでは、リカーリングトークンを作成しながら選択した定期課金のカード情報を更新します | 定期課金情報 or お支払方法>カード管理>新規カード登録 |
消費者側でカードの削除 | リカーリングトークンの削除を許可 ※定期課金を利用中の場合は、削除できません | お支払方法>カード管理>カード削除 |
消費者側で他のカードの選択 | 登録済のリカーリングトークンの選択を許可 | 定期課金情報>カード管理>その他のカードを使う |
支払い情報の確認・変更画面のモードを本番/テストから選択できます。
すべての支払い情報の確認・変更画面に対して指定したモードが反映されます。
メールテンプレート内に${customer_refer_link}
のパラメータがある場合、支払い情報の確認・変更画面のURLが表示されます。
一般設定>一般>通知の「定期課金イベント発生時に通知」をONにしてください。
上記設定によって、定期課金関連の通知メールにURLが表示されます。
※メールテンプレートのデフォルト内容はこちらを参照してください
「定期課金イベント発生時に通知」の設定次第で、通知メールテンプレートの利用方法が異なります。
※都度課金と定期課金を併用している場合、「定期課金イベント発生時に通知」をONし、メールの文面を分けることを推奨します
定期課金イベント発生時に通知 | 利用方法 |
---|---|
ON | テンプレート「決済完了通知」「決済失敗」に${customer_refer_link} を追加して作成してください。※都度課金の場合は、リカーリングトークンがある場合のみURLにログインできます |
OFF | ページ下記説明を参照した上で作成してください。 |
前提として、定期課金関連のメールには二種類のテンプレートが存在します。
サブテンプレートの文面は、メインテンプレートの${subscription_payment_details:- }
として反映されます。
種類 | テンプレート名 |
---|---|
メインテンプレート | ・定期課金作成 ・定期課金決済 ・定期課金決済失敗 ・定期課金の一時停止 |
サブテンプレート | ・定期課金詳細 ・回数制限つき定期課金の詳細 |
用途に合わせてテンプレートにパラメータを追加してください。
作成するテンプレート | 利用方法 |
---|---|
メイン・サブ両方を独自に作成する | サブテンプレート内に${customer_refer_link} を、メインテンプレートに ${subscription_payment_details:- } を追加してください。 |
メインのみを独自に作成する | ${subscription_payment_details:- } を追加してください。${subscription_payment_details:- } を追加しない場合は、${customer_refer_link} を追加してください。 |
${customer_refer_link}
を追加可能なメールテンプレート下記URLに店舗IDを入力して消費者に共有することで、支払い情報の確認・変更画面へアクセスできます。
加盟店さま側でメールアドレスを指定したい場合は、メールアドレスも入力してください。
方法 | URL |
---|---|
メールアドレスを指定しない | https://customer.univapay.com/stores/{店舗ID} |
メールアドレスを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス} |
メールアドレスおよび表示させる定期課金IDを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス}&subscriptionId={定期課金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
を併用して指定してください。テンプレートでは、決済メールテンプレートの作成・編集ができます。
テンプレートを作成しない場合は、決済システム側のデフォルトの決済完了メールが送信されます。
別ページに例を記載していますが、その他メールの内容についてはテストモードで決済をすることで確認できます。
決済完了
決済が成功した時に送信されます。仮売上のキャプチャ、返金を行ったときもこのメールが送信されます。
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます。
件名
${store} ${transaction_type}のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${transaction_type}が行われましたのでご確認ください。
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[${transaction_type}金額 ] ${amount}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
決済失敗
決済が失敗したときに送信されます。コンビニ決済の入金期限が切れたときもこのメールを送信されます
件名
${store} 課金失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の課金が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[課金金額 ] ${amount}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリング作成
クレジットカード決済のリカーリングトークンの作成(支払い情報の登録)が成功した時に送信されます
通常課金や定期課金で「カード登録(リカーリングトークン作成)」をONにした時にも送信されます
件名
${store} お支払い情報登録のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリングトークンのCVV認証失敗
カード登録(定期課金の初回カード登録も含む)のみ行う処理で、CVV認証(セキュリティコード認証)が失敗した時に送信されます
件名
${store} お支払い情報登録失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報登録が失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法] ${payment_type}(${payment_brand})
[日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に成功した時に送信されます
件名
${store} 仮売上のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に成功しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に失敗した時に送信されます
件名
${store} 仮売上失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
[エラーコード ]${error_code}
[エラー内容 ]${error_message}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリ済課金のキャンセル
仮売上をキャンセルした時に送信されます
件名
${store} 課金キャンセルのお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、課金がキャンセルされましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[キャンセルID ] ${cancel_id}
[キャンセル金額] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金作成
初回の定期課金作成が成功した時に送信されます
件名
${store} 定期課金作成のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済
定期課金の2回目以降の決済が成功した時に送信されます
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます
件名
${store} 定期課金の${transaction_type}成功のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が行われましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済失敗
初回課金金額がある定期課金の作成 および 定期課金の2回目以降の決済が失敗した時に送信されます
件名
${store} 定期課金の${transaction_type}失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
※初回の決済に失敗した場合は、もう一度店舗のフォームから決済処理を行ってください。
[エラーコード]${error_code:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金一時停止
定期課金の一時停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の一時停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
${subscription_payment_details:- }
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金永久停止
定期課金の永久停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の永久停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更の案内
※開発中のため現在利用不可
管理画面の定期課金詳細にあるボタン(開発中)から、支払い情報の確認・変更画面を案内したときに消費者に送信されます
件名
${store} 定期課金のカード情報変更のご案内
本文
=========================================================
このメールは定期課金にお支払い情報が登録されているメールアドレス宛に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
いつも${store}をご利用いただき誠にありがとうございます。
定期課金のお支払い情報更新手続きは下記URLから行ってください。
——————————————————————————————-
${customer_refer_link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更完了
定期課金に登録されているカード情報が変更された時に送信されます
件名
${store} 定期課金の${payment_type}情報更新のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の${payment_type}情報が更新されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
[定期課金ID] ${subscription_id}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金の詳細
回数無制限の定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
回数制限付き定期課金の詳細
回数制限付き定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
分割払いの詳細
分割払いの情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[分割回数]${subscription_total_cycles_count}回
決済フォーム支払い発行
オプションでリンクフォームのメール送信機能を利用するときに送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご注文ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLから決済画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[金額 ] ${amount}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
決済フォームカード登録発行
リンクフォームのメール送信機能を利用するとき、課金を行わなずカード登録のみ行うリンクフォームの場合はこのメールが送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご連絡ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLからカード登録画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
振込期限切れ(督促なし)
銀行振込の振込期限が切れたときに送信されます
件名
${store} お振込期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限を過ぎましたので 無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
振込期限切れ(督促有り)
銀行振込の振込期限が切れた時、再度振込期限を指定して案内する設定の場合に送信されます
件名
${store} お振込のご確認
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が過ぎておりますが、
本日時点でご入金が確認できておりません。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[最終期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 申込完了
銀行振込の申込が行われたときに送信されます
件名
${store} 銀行振込 銀行振込のお申込を受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにお振込をお願いいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[振込期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 キャンセル
銀行振込の申込を加盟店さまが取り消した時に送信されます
件名
${store} 銀行振込 お申込がキャンセルされました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みがキャンセルとなりましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[キャンセル日] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了
銀行振込で消費者が入金したときに送信されます
件名
${store} お振込を確認しました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 不足入金
銀行振込で消費者の入金金額が不足していたときに送信されます
件名
${store} お振込金額の不足について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込金額が不足しております。
お手数ではございますが、内容をご確認いただき、
差額分のお振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了(超過)
銀行振込で消費者の入金金額が超過していたときに送信されます
件名
${store} お振込を確認しました(金額超過)
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[超過金額 ] ${exceeded_amount}
※上記金額が本来お振込いただく金額より超過で入金されています。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 振込期限の通知
振込期限日が近づくとこのメールを送信します
一般設定で送信するかどうか、何日前に送信するかを設定できます
件名
${store} お振込期限について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が近づいております。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[振込期日 ] ${date}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済のご案内
コンビニ決済の申込が行われたときに送信されます
件名
${store} コンビニ決済のお申し込みを受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにご入金をお願いいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期日 ] ${date}
[(各コンビニ情報の名称)] ${konbini_payment_details}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の取り消し
コンビニ決済の申込を加盟店側で取り消したときに送信されます
件名
${store} お支払いのキャンセルについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、キャンセルされましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済 期限切れ
コンビニ決済の入金期限が切れたときに送信されます
件名
${store} お支払期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お支払期限を過ぎましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ支払い
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期限 ] ${date}
※入金された場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の詳細
各コンビニエンスストアごとの、消費者が入金するための情報が含まれています。このテンプレートは「コンビニ決済のご案内」に含まれ、選択したコンビニエンスストアのテンプレート情報が入ります。
パラメータを利用することで、消費者が行った処理ごとに結果の値を動的に反映させることができます。
テンプレートごとに利用できるパラメータは異なるため、各テンプレートの作成画面から確認してください。
パラメータ | 説明 |
---|---|
${date} | 処理日時 ※下記テンプレートのみ入金期限日時を表示 ・銀行振込(申込完了 / 振込期限切れ(督促有り) / 振込期限の通知) ・コンビニ決済のご案内 |
${amount} | 金額 ※定期課金の場合は1回あたりの課金金額、分割の場合は総額を表示 |
${payment_type} | 支払方法 ※カード、オンライン決済など |
${payment_brand} | 支払ブランド ※Visa、MasterCard、PayPayオンラインなど |
${transaction_type} | 課金 or 返金 |
${store} | 店舗名 |
${charge_id} | 課金ID |
${card_holder_name} | カード名義 |
${email_address} | 顧客メールアドレス |
${descriptor} | 利用明細に記載される名称 ※テストモードの場合は機能せず、パラメータをそのまま表示 |
${contact_email} | 連絡先メールアドレス |
${contact_phone} | 連絡先電話番号 |
${charge_metadata} | 課金時に付与されたメタデータ |
${token_metadata} | トークン作成時に付与されたメタデータ |
${subscription_id} | 定期課金ID |
${subscription_period} | 定期課金のサイクル |
${subscription_next_date} | 定期課金の次回課金日 |
${subscription_initial_amount} | 定期課金の初回課金額 |
${subscription_amount} | 回数無制限の定期課金:1回あたりの課金金額 回数制限付き定期課金・分割払い:支払いの総額 |
${subscription_payment_details} | 定期課金の詳細 ・定期課金種類 ・課金回数/分割回数 |
${customer_refer_link} | カード情報変更/停止URL |
${link} | 決済フォームor支払いに必要な情報のリンク |
${customer_name} | 顧客名 |
${bank_accout_number} | 口座番号 |
${bank_branch_code} | 支店番号 |
${bank_branch_name} | 支店名 |
${bank_account_type} | 口座の種類 |
${bank_account_holder_name} | 振込先口座名 |
${bank_name} | 振込先銀行名 |
${deposit_amount} | 入金額 |
${deposit_needed} | 不足金額 |
${exeed_amount} | 超過入金額 |
${konbini_payment_details} | コンビニ支払い情報詳細 |
${konbini_transaction_id} | コンビニ支払い番号など |
${error_code} | エラーコード |
${error_message} | エラー内容 |
パラメータによっては、メタデータなど1つの項目に複数の値が存在したり、処理の種類によりパラメータに値が入らない場合があります。
こういった場合にパラメータ内でより細かい指定をすることで、パラメータや複数メタデータをそのままメール本文に反映するのを防ぐことができます。
${parameter:-(デフォルト値)}
を使用して下さい${charge_metadata.(キー)}
,${token_metadata.(キー)}
の形式で指定してください。パラメータ | メールに反映される情報 |
---|---|
${subscription_next_date:-無し} | 次回以降に支払いが残っている場合:2024/08/01 今回の支払いが最後だった場合:無し |
${charge_metadata.univapay-product-names} または ${token_metadata.univapay-product-names} | 商品名 |
${charge_metadata.univapay-phone-number} または ${token_metadata.univapay-phone-number} | 電話番号 |
${token_metadata.(キー)}
の利用が必須のパターン下記処理の場合は${charge_metadata.(キー)}
を指定してもメタデータが表示されません。
※商品機能をご利用にはオプション契約が必要になります。
商品ごとにメタデータを付与している場合、${charge_metadata.キー:-(空白)}
とすることで、指定したメタデータの値のみメール文面に反映させるような使い方ができます。
商品を利用した場合のみ表示したいメタデータの値が表示され、商品を利用しない決済の場合は空白になります。
①商品にメタデータを付与
商品ごとにメールで表示させたい文章をメタデータとして追加します。
②通知メールテンプレートを編集
商品メタデータのキーをproduct-text1
とする場合、
メール通知テンプレート内のタグを ${charge_metadata.product-text1:-}
とすることで、メールの各箇所に商品別のメール文章のみを表記することができます。
③通知メールでの反映を確認
商品ごとに異なる文章が表示され、商品を指定しない決済の時はメールに何も表示されないことが確認できれば問題ありません。
本サービスで発生する各種イベントの結果は「ウェブフック」として、それぞれの指定先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(オンライン)の三単合一における「税関申告」が完了 | 税関申告完了 | – |
トランザクショントークンオブジェクトに対する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
}
}
}
本サービスは、現段階ではオンラインでの決済にのみ対応しています。
各銘柄のロゴを利用したい場合は、ロゴの下にあるボタンをクリックしてダウンロードしてください。
消費者が決済フォームにカード番号などの必要情報を入力し、決済します。
非対面の取引※に限り、利用可能です。
※磁気テープやICチップのスキャンを行わない
利用できるのは、国際ブランド(VISA / Mastercard / JCB / American Express / Diners Club / DISCOVER)のマークが券面に記載されたクレジットカードです。
購入代金を自由な形で翌月にまとめて支払うことができるサービスです。
決済フォームでメールアドレスと電話番号を入力し、SMS認証を行って決済します。
決済ごとに専用の口座が消費者へ発行され、振込確認を自動で行います。
発行する口座は「GMOあおぞらネット銀行」のものです。
株式会社電算システムの提供する、前払い式のコンビニ決済です。
決済フォームから消費者情報を入力することで、各種コンビニエンスストアで支払うための情報が発行され、消費者が入金をすることで決済が完了します。
消費者が決済フォームからモバイルペイメントアプリで認証することで、オンラインでの決済を行います。
詳細はこちらを参照ください。
当社APIからのレスポンスは JSON 形式で返されます。
レスポンスと共に返されるHTTPステータスコードによって、リクエストの結果を判別できます。
APIの呼び出しが失敗すると、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。
詳細はエラーコードを参照ください。
定期課金とは、本サービスにより定期的かつ自動的に課金することを指します。
オブジェクト名はsubscription
です。
定期課金の作成(create
)リクエストはトランザクショントークンを用いて作成されます。
定期課金は、UPDATE
やCANCEL
のリクエストで、いつでも停止できます。
ウェブフックを用いて、定期課金イベントの通知を受け取ることを推奨します。
SUBSCRIPTION_PAYMENT
イベントSUBSCRIPTION_FAILED
イベントSUBSCRIPTION_CANCELED
イベントで、それぞれ通知します。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 定期課金のユニークID 作成時に自動付与 |
store_id | string (UUID) | 登録された「店舗」のユニークID 契約時に自動付与 |
transaction_token_id | string (UUID) | 事前に作成したトランザクショントークン |
amount | number | 課金額 |
currency | string (ISO-4217) | 通貨 例:日本円はJPY |
amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
initial_amount | number | 初回の課金 ※ CREATE 時に未指定だとamount を参照 |
initial_amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
schedule_settings.start_on | string (ISO-8601) | 2回目の課金日 指定日のタイムゾーンの07:00に実行 ※ CREATE 時に指定可能 |
schedule_settings.zone_id | string (IANA Timezone) | タイムゾーン 例:日本は Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | 月末固定の指定が、されている(true )か否(false )か |
schedule_settings.retry_interval | 半角英数 | 定期課金が失敗したときのリトライ間隔 存在し得る値(意味): PxD (x日)PxW (x週間)PxM (xか月) |
schedule_settings.termination_mode | 半角英 | 定期課金の停止リクエストを受理したとき、実際に自動課金のステータスをsupended (一時停止)に変更するタイミング指定可能な値(意味): immediate (即時)on_next_payment (次回課金日) |
status | 半角英 | 定期課金のステータスunverified (初回課金の待機中)unconfirmed (初回課金に失敗)canceled (永久停止:リクエストで移行し再開不可)unpaid (リトライ待ち)current (継続中)suspended (一時停止:管理画面で「一時停止」ボタンを押下、リトライ回数の超過、リクエストのいずれかで移行)completed (指定分完了:再開可) |
metadata | メタデータ ※ CREATE ,UPDATE 時はネストで任意のフィールドと値を指定可能 | |
mode | 半角英 | 決済のモードlive (本番)またはtest (テスト) |
created_on | ISO-8601 | データの作成日時 |
period | 半角英 | 指定した定期課金の間隔 存在し得る値(意味): daily (毎日)weekly (毎週)biweekly (隔週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年) |
cyclical_period | ISO8601 duration | 存在し得る値(意味):PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期)※CREATEで Period 未指定なら必須 |
next_payment.id | UUID | 支払いのID |
next_payment.due_date | YYYY-MM-DD | 次回課金日 |
next_payment.zone_id | IANA Timezone | タイムゾーン 例:日本は Asia/Tokyo |
next_payment.amount | 半角数 | 次回課金額 |
next_payment.currency | ISO-4217 | 通貨 例:日本円はJPY |
next_payment.amount_formatted | 半角数 (小数点) | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: corrency がUSD で課金額が110 の場合は1.1 |
next_payment.is_paid | 真偽 | 決済結果(未実行のためfalse 固定) |
next_payment.is_last_payment | 真偽 | 最後の支払いかどうか (回数指定時のみ true が出力され得る) |
next_payment.created_on | ISO-8601 | データの作成日時 |
next_payment.updated_on | ISO-8601 | データの更新日時 |
next_payment.retry_date | YYYY-MM-DD | 次回課金が失敗した場合のリトライ予定日 |
定期課金オブジェクトのCREATEリクエストには以下が必要です。(括弧内は入力箇所)
パラメータを指定して様々な種類の定期課金が作成可能です。
{secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金有効のトランザクショントークンID |
amount | number | 課金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
initial_amount | number | 定期的な金額と異なる場合は初回に請求する金額 |
period※ | string | ※cyclical_periodを利用しない場合 定期課金が請求される頻度 daily , weekly , biweekly , monthly , quarterly , semiannually , annually のいずれかこのフィールドが入力されている場合cyclical_periodは利用不可 分割払いの場合は monthly を指定 |
cyclical_period※ | string (ISO-8601 Duration) | ※periodを利用しない場合 課金を行う詳細な頻度(1日間以上) 例:P3D,P2M,P2M等 このフィールドが入力されている場合 period は利用不可 |
schedule_settings.start_on | string (ISO-8601) | 以降のすべての支払いがで開始される日付(年月日形式 )時間は zone_id で宣言されたタイムゾーンの午前7時※に固定※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時 |
schedule_settings.zone_id | string (IANAタイムゾーン) | 定期課金が請求されるタイムゾーン 例:Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | period がmonthly で指定されたstart_on の日付が月末日である場合、以降は月の最終日に料金を請求例: start_on が2018-06-30 の場合、次の請求はtrue の場合は2018-07-31 、false の場合は2018-07-30 |
schedule_settings.termination_mode | string | 定期課金の停止リクエストimmediate , on_next_payment のいずれかデフォルト値: immediate immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了 |
installment_plan.plan_type | string | installment_plan を指定した定期課金は全てクレジットカード会社による分割払いになり、revolving :リボ払いfixed_cycles :installment_plan.fixed_cycles で指定した回数の分割払いrevolving , fixed_cycles のいずれか |
installment_plan.fixed_cycles※ | number | ※plan_type がfixed_cycles の場合クレジットカード会社での分割払いの回数 指定可能な値:3,5,6,10,12,15,18,20,24 ※上記以外の回数はエラー |
first_charge_authorization_only | boolean | 初回決済時に行う処理true :オーソリ(仮売上)false :キャプチャ(実売上)デフォルト値: false |
first_charge_capture_after | string (ISO-8601 Duration) | first_charge_authorization_only がtrue の場合、自動でキャプチャを行う日指定可能な値:1,2,3,4,5,6 ※上記以外の回数はエラー 例:3日後を指定する場合は first_charge_capture_after:"P3D" |
subscription_plan.plan_type | string | 回数指定の定期課金を行う場合、fixed_cycles , fixed_cycle_amount のいずれか |
subscription_plan.fixed_cycles※ | number | ※subscription_plan.plan_type が fixed_cycles の場合定期課金を行う回数 |
subscription_plan.fixed_cycle_amount※ | number | ※subscription_plan.plan_type が fixed_cycle_amount の場合定期課金の1回当たりの支払い金額 |
schedule_settings.retry_interval | string (ISO-8601 Duration) | 定期課金の支払いが失敗したときにリトライを行う間隔 ※1日以上かつ定期課金のサイクルよりも短い必要あり 例:P5Dで失敗後5日毎にリトライ |
metadata | json | 定期課金に紐づけられたメタデータ |
curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"period": "daily",
"metadata":{
"ServiceId": 78435694
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "unverified",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9aad-7470-8314-03ee2f51b9cd",
"due_date": "2024-06-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:28.627023Z",
"updated_on": "2024-06-26T01:51:28.627023Z",
"retry_date": null
}
}
定期課金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで課金のステータスを内部でポーリングする |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
定期課金オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
search | 半角英数 | メタデータの値で検索 |
status | 半角英 | 定期課金のステータスunverified , unconfirmed , canceled , unpaid , suspended , current , completed のいずれか |
mode | 半角英 | 定期課金の実行モードlive ,test のいずれか |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"email": "test@test.com",
"brand": "visa",
"gateway": null,
"service_provider": null
}
},
{
"id": "11ef3355-6cec-f0dc-a579-d3bb89aab116",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3355-6cc6-194e-a5e0-bfd94bdad70d",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {},
"mode": "test",
"created_on": "2024-06-26T00:45:46.447678Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"email": "demo@demo.com",
"brand": "master",
"gateway": null,
"service_provider": null
}
},
<中略>
],
"has_more": true,
"total_hits": 99
}
定期課金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金で使用するトランザクショントークン クレジットカードの有効期限が切れ、他のカードの切り替える為などに使用 定期課金の状態が unconfirmed , unpaid , current , suspended の場合に変更可能 |
amount | number | 定期課金の課金額 |
metadata | json | 定期課金に紐づいているメタデータ |
status | string | 定期課金の状態suspended :ステータスを一時停止unpaid :一時停止の定期課金を再開 |
schedule_settings | json | 定期課金の停止リクエストが送信されたときの処理termination_mode の値によって停止のタイミングを指定immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了例: {"termination_mode": "on_next_payment"} |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"metadata":{
"ServiceId": 7843568
},
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"schedule_settings": {"termination_mode": "on_next_payment"}
}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "on_next_payment"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 7843568
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
定期課金オブジェクトに対するCANCELリクエストには以下が必要です。(括弧内は入力箇所)
作成された既存の定期課金を削除し、管理画面のステータスは「永久停止」となり再開不可ですのでご注意ください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request DELETE \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request DELETE \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記はBodyの記述例でリクエストした場合の例です。
204
Content-Type: application/json
定期課金オブジェクトに対する課金LISTリクエストには以下が必要です。(括弧内は入力箇所)
課金のデータモデルの詳細は課金オブジェクトを参照してください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
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 も含める必要あり |
card_number | number | クレジットカード番号でフィルタリングする |
from | string (ISO-8601) | この日付以降に作成された課金を表示する |
to | string (ISO-8601) | この日付より前に作成された課金を表示する |
string | メールアドレスでフィルタリングする | |
phone | string | 電話番号でフィルタリングする |
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/23f45c5e-18ef-11e7-96ee-d756c0178178/subscriptions/25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "26f9059e-18ef-11e7-a74f-173cf0f9475a",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259e9240-18ef-11e7-94da-97e85c2e269c",
"requested_amount": 483200,
"requested_currency": "EUR",
"requested_amount_formatted": 4832,
"charged_amount": 483200,
"charged_currency": "EUR",
"charged_amount_formatted": 4832,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
},
{
"id": "270858e6-18ef-11e7-adfa-6ff75ea1c202",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259f4a8c-18ef-11e7-b8fe-17e053dc5c54",
"requested_amount": 2491,
"requested_currency": "JPY",
"requested_amount_formatted": 2491,
"charged_amount": 2491,
"charged_currency": "JPY",
"charged_amount_formatted": 2491,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
],
"has_more": false
}
このリクエストでは、定期課金の支払い情報を確認することができます。
支払いが完了しているか、次回課金日がいつかなどを確認したい場合はこちらをご利用下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 支払いのID |
due_date | string (ISO-8601) | 支払いが実行される日付 時刻は zone_id で指定されたタイムゾーンのAM7:00 |
zone_id | string (IANA Timezone) | 支払いを実行する時刻が基準とするタイムゾーン |
amount | number | 課金金額 |
currency | string (ISO-4217) | 課金金額の通貨 |
amount_formatted | string | 補助単位があれば小数の値を含む課金金額 |
is_paid | boolean | 支払いが完了したかどうか |
is_last_payment | boolean | この支払が定期課金の最後の支払いかどうか 分割払いの場合のみ適用 |
created_on | string (ISO-8601) | この支払いの作成日時 |
定期課金オブジェクトに対する支払いGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){paymentId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments/{paymentId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments/11e89a0a-8cee-d660-b984-3fcaaed46e7c \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z"
}
定期課金オブジェクトに対する支払いLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z",
"updated_on": "2018-08-07T06:24:33.961256Z"
},
{
"id": "11e89a0a-8cc5-2662-9460-2b14b1a601ba",
"due_date": "2018-08-07",
"zone_id": "Asia/Tokyo",
"amount": 1000,
"currency": "JPY",
"amount_formatted": 1000,
"is_paid": true,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.646223Z",
"updated_on": "2018-08-07T06:24:33.88776Z"
}
],
"has_more": false
}
本ガイドでは、当社が提供している管理画面の構成や利用方法を説明しています。
下記の画像付き資料をご確認ください。
本サービスで最も簡単なご利用方法は「リンクフォーム決済」です。
決済金額を加盟店にて設定し、作成したフォームのURLを消費者に提供する単純な決済方法です。
下記の画像付き資料をご確認ください。
当社指定のフォーマットに沿ったCSVファイルをアップロードすることで、加盟店さまの判断で、既存の消費者に対して再び課金できる機能です。
CSV課金では、複数の既存の消費者に対して一括での課金が可能です。
オプション機能のため、ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
リカーリングトークンに保存されたクレジットカード情報を再利用して、新たな課金を行います。
CSVファイルで提供された情報をもとにリカーリングトークンを識別するため、予めリカーリングトークンに消費者の情報(クレジットカード情報,メールアドレス,メタデータ等)が結びついている必要があります。
一番新しいリカーリングトークンを識別する仕組みによって、消費者1人に対して複数のリカーリングトークンが存在している場合でも、重複して課金することを防げます。
例)メールアドレスで識別する場合
同じメールアドレスのリカーリングトークンが複数存在している場合、一番新しいリカーリングトークンに対してのみ課金する
詳細は、利用ガイド『CSV課金』をご覧ください。
CSV課金を実行してから、結果を確認するまでの流れを説明します。
当社指定のフォーマットに沿って、課金に必要な情報が記載されたCSVファイルを作成してください。
管理画面>CSV課金 から、「CSVファイルをアップロードする」のボタンを押してください。
その後、画面に沿って各設定を行い、「金額データCSV」の項目へ作成したCSVファイルをアップロードしてください。
CSV課金の結果は管理画面>CSV課金 から、対象のCSV課金を選択することで処理結果や詳細を確認できます。
対象のCSV課金を選択した画面から、決済結果を確認する方法は、以下の2通りあります。
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
返金(Refund)は、消費者にお金を返すために使用します。
詐欺や誤った注文、重複課金などの対応として返金(Refund)が行われます。
返金(Refund)は、課金(Charge)と同じ通貨で行う必要があり、その金額は課金(Charge)と同額かそれ以下となります。
合計の返金金額が課金金額以下であれば、一つの課金に対して複数の返金を行うこともできます。
返金(Refund)は、非同期処理されます。
まず作成時には、pending
状態になっており、ステータスを自動的にsuccessful
, failed
, error
に変更します。
ウェブフックのREFUND_FINISHED
イベントを登録して返金(Refund)の最終状態を得ることができます。
返金(Refund)が行われた時でも、返金対象の課金のトランザクション費用は請求されます。
テストデータの情報は、テストカード番号を参照下さい。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | 返金のユニークID |
store_id | string (UUID) | 返金対象の課金が属する店舗のID |
charge_id | string (UUID) | 返金(Refund)を行う課金のID |
status | string | 返金のステータスpending , successful , failed , error のいずれか |
amount | number | 返金の金額 |
currency | string (ISO-4217) | 返金する金額の通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む返金のリクエスト金額 |
reason | string | 返金の理由fraud , duplicate , customer_request , chargeback のいずれかchargeback は加盟店で設定不可で、後日カード会社から課金が拒否された場合に設定 |
message | string | 返金の詳細な理由 |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | 返金に紐づいている加盟店定義のメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | 返金が作成された日時 |
返金オブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
amount | number | 課金金額以下の返金金額 |
currency | string (ISO-4217) | ISO 4217の通貨コードで指定 |
reason | string | 返金理由fraud , duplicate , customer_request のいずれか |
message | string | 返金の詳細理由 |
metadata | json | 自由に設定可能 詳細はメタデータを参照 |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"amount": 250,
"currency": "JPY",
"reason": "customer_request",
"message": "15 percent off",
"metadata": {
"coupon": "VIP007"
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "pending",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
返金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
返金オブジェクトのLISTリクエストには以下が必要です。(括弧内は入力箇所)
課金 / 返金などをまとめて表示させたい場合はトランザクション:Listを推奨します。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
},
{
"id": "11ef32c9-f49b-a6ea-9f24-17662f077450",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"reason": "customer_request",
"message": "return",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:12:15.763927Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
}
],
"has_more": false,
"total_hits": 2
}
返金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | 返金(Refund)に紐づくメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"metadata": {"customer_id":5555}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007",
"customer_id": 5555
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
トランザクショントークンオブジェクトに対する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
フィールド 赤字は必須 ※は条件付き必須 | 許容する値 | 備考 | 省略時の値 |
---|---|---|---|
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メソッドであるため、値を"
(ダブルクォーテーション)で囲む必要はありません。
リストとして返されるすべてのリソースはページネートされリソースの作成日の降順でソートされます。
ページあたりのアイテムの件数はデフォルトで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
オンライン決済時の、APIへのリクエストの手順を説明します。
詳細は、利用ガイド『オンライン決済 - APIへのリクエスト』を参照してください。
トランザクショントークン – CREATEが利用できません。
加盟店さまのサイト内に消費者のクレジットカード情報を入力させてUnivaPay APIに送信する行為は、クレジットカード情報の「通過」にあたるため、加盟店サイトのPCI DSSへの準拠が必要です。
代わりに当社決済フォーム(リンクフォーム、ウィジェット、インラインフォーム)や 決済端末など、当社の提供するソリューションを使用することで、PCI DSSに準拠していない場合でもクレジットカード情報を送信できます。
PCI DSSに準拠している場合は、トークン化から課金、返金まで全てのリクエストを本サービスのAPIに送信できます。
対応しているSDKの言語は以下3つです。
本サービスのAPIには、レート制限と、リソース制限の2種類の制限があります。
詳細は、APIの制限のページを参照してください。
ここでは「リクエスト数」の制限に関して、抜粋して紹介します。
レート制限には、課金レート制限と標準レート制限の2つに分類されます。
課金の作成に関するリクエストを行う際にカウントされます。
対象API | X-Remaining-Requests (バーストレート) |
X-Requests-Per-Minute (1分あたりのリクエスト上限) |
---|---|---|
POST /tokens POST /charges POST /subscriptions |
上限:100 |
3,000/分 |
標準レート制限は、ルートバーストレートとイグザクトバーストレートの2つに分類されます。
アクセスするリソースの「パス」に対しての制限です。
対象 | X-Remaining-Requests-Route (ルートバーストレート) |
X-Requests-Per-Minute-Route (1分あたりのリクエスト上限:ルート) |
---|---|---|
全てのパス | 上限:30 | 1,200 |
Exact(完全一致)の名の通り、リソースIDやクエリ文字列も含めて完全に一致するパスに対して適用されます。
対象 | X-Remaining-Requests-Exact (イグザクトバーストレート) |
X-Requests-Per-Minute-Exact (1分あたりのリクエスト上限:イグザクト) |
---|---|---|
全てのクエリ | 上限:10 | 120 |
1つの加盟店または店舗で、有効にできるリソース数には上限があります。
この上限を超えるリソースの作成リクエストには、ResourceLimitReached
エラーが出力されます。
リソース | 上限 |
---|---|
webhook (ウェブフック) |
20 |
jwt (アプリトークン) |
20 |
パスワードリセットトークン | 5回/日 |
テスト課金 | 1440件/日 |
キャンセルリソースは、awaiting
もしくは authorized
状態の課金に対してキャンセルを作成する為に使われ、またその状態を表現します。
これは、コンビニ決済で課金を作成した時、もしくはクレジットカード(Apple Pay を含む)決済でオーソリを行った際に利用します。successful
状態の課金については、返金 を参照ください。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | キャンセルのID |
store_id | string (UUID) | キャンセルが行われた店舗のID |
charge_id | string (UUID) | キャンセルが行われた課金のID |
status | string | キャンセルの状態pending , successful , failed , error のいずれか |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | キャンセルに紐づいているメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | キャンセルが作成された日時 |
キャンセルオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対してキャンセルを作成することができます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234}}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "pending",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
キャンセルオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | キステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels/11ef32cc-e895-655e-8e33-e36629277b4f \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
キャンセルオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対して行われたキャンセルの一覧を取得できます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
},
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
],
"has_more": false
}
キャンセルオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
キャンセルした時に付与したメタデータを編集することができます。
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32ce-c739-9e0a-9ada-37dba0724131/cancels/11ef32ce-ce90-3272-9ec3-c35d8985dfc2 \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234, "reason": "expired"}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32ce-c739-9e0a-9ada-37dba0724131",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"reason": "expired",
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
課金オブジェクトに対する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"
}
}
基本動作については別途パラメータ解説ページがあり、左メニューから閲覧可能です。
フィールド名はローワーキャメルケースで記載する必要があります。
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 |
決済フォームとは、決済や申込のために消費者が情報を入力する画面のことです。
本サービスでは3種のフォームを選択可能です。加盟店さまの利用イメージに沿ったフォームを選択してください。
本サービスの全てのフォームは、加盟店さまのwebサイトにカード情報が通過することがなく、保存することも処理することもありません。
これにより、カード情報の漏洩リスクを最小限に抑えながら、柔軟な課金方式で商用サイトを運用できます。
フォーム種類 | 対応している決済手段 | 設置方法 | このような方向け |
---|---|---|---|
ウィジェット 詳細 | 全て | 十数行のごく短い(※)タグ | プログラミング可能でシステム連携する 多品目を合算して決済する |
インラインフォーム 詳細 | クレジットのみ | 40行程度の短い(※)タグかjavascriptのコード | 〃 |
リンクフォーム 詳細 | 全て | 短縮URLとそのQRコードをメールやメッセンジャーで送信 webサイトには<a>タグで設置 | システム連携しない プログラミング不可 単品販売のみ |
当社決済フォームを利用した場合の、決済手段ごとの支払いフローは、下記の画像付き資料を参照してください。
プログラミングの難しい加盟店さま向けに、指定されたパラメータでの各種決済フォーム用のタグを出力するジェネレータを管理画面内に用意しています。 ※利用方法はこちら
もちろん、各種パラメータを変数として、動的にタグ出力するプログラムを作成いただくことも問題ありません。
そのためのSDKもこちらに用意しています。
以下の新規リソース作成時にメタデータ付与 / 既存リソースのメタデータ更新が可能です。
付与できるメタデータの個数に制限はありませんが、リクエストボディ全体は最大256KBです。
メタデータはフラットなJSONとして保存されます。
本サービスと加盟店のシステム上のレコード(消費者や消費者による注文データ等)とを関連付けるために使用することを推奨します。
{
// Other request parameters
"metadata": {
"customer_id": 12345,
"shipping_details": "Customer wants it now"
}
}
インラインフォームのタグは、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 (個別の指定が必要な場合) | 〃 |
トークンとは、カード情報(カード番号と有効期限)を復号できないよう、ランダムな文字列に暗号化したもののことです。
本サービスの決済フォームでは、消費者が入力したカード情報を自動的にトークンへ置き換える処理を行います。
これを「トークン化」といいます。
トークンには複数の種類があります。
どの種類のトークンを作成するか、トークンを用いてどのような処理を行うかは、加盟店さまが自由に指定できます。
行える処理については、ページ下部「チェックアウトタイプとトークンタイプの見取り図」を参照してください。
当社サービスで発行できるトークンの種別(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 | いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) | 初回の課金を行い、かつ、 いつでも課金できる状態の 「リカーリングトークン」を作成 (要保存) |
発生したエラーのコードおよびメッセージを確認できる場所は、下記の通りです。
確認者
|
場所
|
---|---|
消費者
|
・決済完了画面 ・通知メール「決済完了通知」 |
加盟店さま
|
・merchant>決済>決済詳細画面 「ステータス」部分 ・通知メール「決済完了通知」 |
エラーコードやエラーメッセージの内容を確認したい場合は、APIリファレンス『エラーコード – 概要』を参照してください。
認証エラー(ペイメントエラー306)は、クレジットカードが拒否された場合に発生するエラーです。
よくある事例は以下の通りです。
実際の拒否理由は、消費者からカード発行会社へお問い合わせください。
トランザクション履歴とは、実行済みの課金と返金のことです。
貸借のアクティビティにアクセスできるようになっています。
課金や返金の一覧よりもこの閲覧方式を用いることを推奨します。
フィールド | データ型 | 備考 |
---|---|---|
merchant_id | string (UUID) | 課金が作成された加盟店のユニークID |
merchant_name | string | 加盟店名 |
store_id | string (UUID) | 課金が作成された店舗のユニークID |
store_name | string | 店舗名 |
resource_id | string (UUID) | このエントリーが参照しているリソースのユニークIDtype がcharge であれば課金のID、refund であれば返金のID |
amount | number | 課金または返金の金額 |
currency | string (ISO-4217) | トランザクションの通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む課金か返金の金額 |
type | string | charge またはrefund のいずれか |
status | string | pending , successful , failed , errored のいずれか |
payment_type | string | 決済処理の支払い方法 |
mode | string | liveまたはtest |
metadata | json | 課金に付与されたメタデータ |
bank_transfer_latest_deposit_date | string (ISO-8601) | 銀行振込の場合 振込日 |
bank_transfer_payment_status | string | 銀行振込の場合 決済のステータスunpaid(未入金), insufficient(不足), exact(丁度), exceeded (超過) のいずれか |
created_on | string (ISO-8601) | トランザクションの日時 |
トランザクションオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
curl --request GET \
--url https://api.univapay.com/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
from | string (ISO-8601) | 指定された日時以降でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
to | string (ISO-8601) | 指定された日時以前でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
search | string | 課金ID, 返金ID, メタデータの情報、カード名義人名、カード名義人メールアドレス、カード番号下4桁のいずれかでフィルタリングする |
type | string | charge ,refund のいずれか |
status | string | 状態でフィルタリングする 課金もしくは返金の状態のいずれか |
mode | string | 実行モードでフィルタリングするlive またはtest |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-f037-10ce-b891-9b43076af963",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:56.42805Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"cardholder_email_address": "test@test.com",
"brand": "visa",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-efeb-2efc-adc5-ff26c8964860",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:55.930755Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"cardholder_email_address": "demo@demo.com",
"brand": "master",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
<中略>
],
"has_more": true,
"total_hits": 99
}
課金オブジェクトに対する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 リクエストを行い、トランザクションのステータスが変化したタイミングで通知を受け取れる実装方法です。
当社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
)になる場合があります。加盟店リソースはアカウントの所有者についての情報と、この加盟店で作成される店舗のデフォルト設定を表示します。
フィールド名 | データ型 | 備考 |
---|---|---|
id | UUID | 加盟店を識別するID。一般的に merchantId として使われます。 |
name | string | 加盟店の名称 |
string | 加盟店のメールアドレス | |
verified | boolean | 加盟店が審査済みかどうか |
created_on | string (ISO-8601) | 加盟店の作成日時 |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国。 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座への送金前に積み立てられた最低金額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで顧客にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す。 |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか。 trueの場合、別のメールアドレスで使用されているカードは拒否される。 |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | string (ISO-8601) amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類none – 使用できないbounded – トランザクショントークンを作成するときにusage_period パラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_window で指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド名 | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
加盟店オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url http://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"verification_data_id": "11edf541-54f3-2a58-9afe-b372c6f5fc0a",
"name": "管理画面ガイド",
"email": "merchant@test.com",
"notification_email": "merchant@test.com",
"verified": true,
"created_on": "2023-05-18T06:00:45.870218Z",
"configuration": {
"percent_fee": 3.400,
"flat_fees": [
{
"amount": 30,
"amount_formatted": 30,
"currency": "JPY"
}
],
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"transfer_schedule": {
"wait_period": "P7D",
"period": "monthly",
"full_period_required": null,
"day_of_week": null,
"week_of_month": null,
"day_of_month": null,
"weekly_closing_day": null,
"weekly_payout_day": null
},
"user_transactions_configuration": {
"enabled": true,
"notify_customer": true,
"notify_on_test": true,
"notify_on_recurring_token_creation": true,
"notify_on_recurring_token_cvv_failed": true,
"notify_on_webhook_failure": true,
"notify_on_webhook_disabled": true,
"notify_user_on_failed_transactions": true,
"notify_customer_on_failed_transactions": true,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": true,
"notify_on_authorizations": true,
"notify_on_cvv_authorizations": false,
"notify_on_cancels": true,
"customer_refer_link_enabled": true,
"notify_on_convenience_expiry": true
},
"recurring_token_configuration": {
"recurring_type": "infinite",
"charge_wait_period": "PT20S",
"card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": true,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": "P20D",
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": 5,
"limit_refund_by_sales": {
"enabled": true,
"period": "daily",
"rolling_window": false
}
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": 3.300,
"american_express": 3.500,
"mastercard": 3.300,
"maestro": null,
"discover": null,
"jcb": 3.500,
"diners_club": 3.300,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": true,
"allow_merchant_due_date_patch": true
},
"customer_management_configuration": {
"enabled": true,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": false,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": true
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": true
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"default_extension_period": "PT24H",
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_enabled": true
},
"platform_credentials_enabled": false,
"tagged_platform_credentials_enabled": false
},
"tms_merchant_data": null
}
以下は、「支払う」と表示されたボタンでの、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 (個別の指定が必要な場合) | 〃 |
ウィジェットのページに記載してある内容と同様です。
本サービスには、4つの処理があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
オーソリ(仮売上) | 指定した金額の決済が可能なクレジットカードに対し、与信枠を仮押さえする この仮押さえは、各カードの発行会社が定める期間中(国内発行は60日間、海外発行は30日間が典型)のみ有効です。 本サービスでは、課金の作成をリクエストする際に capture フィールドにfalse の値を指定することで、オーソリ処理が行えます。一般的な物販では、注文時は消費者によってオーソリの手続きが行われるようにし、発送時に加盟店側でキャプチャするという運用が主流です。 しかし、在庫切れでメーカー取り寄せとなった場合など、発送手続きまでに時間がかかる場合は、一旦のキャンセル処理の実施が推奨されます。 その理由は、消費者の与信枠を長期間圧迫することを避けるためです。 | クレジットカード Paidy |
セキュリティコード認証(CVV認証) | 入力されたクレジットカードが、決済時点で有効かどうかを確認する カード情報のトークン化を行う際に消費者へセキュリティコード認証を要求し、1円のオーソリを行うことで、カードの有効性チェックをしています。 この処理によって、初回の決済で課金を行わずにカード情報をトークン化し、後日課金を行えます。 | クレジットカード |
キャプチャ | 事前に作成したトランザクショントークンに対し、売上確定処理を行う オーソリ済みの課金データに対してキャプチャを行うと、売上の処理が行われ、仮押さえされていた与信枠が売上確定の状態で消し込まれます。 | クレジットカード Paidy |
返金 | 過去にキャプチャした課金データに対し、返金処理を行う 返金を実行すると、既にカード会社からの引き落としが完了した後でも、各カード会社の引き落とし日に相殺される、もしくは振込が行われるといった処理がされます 返金は管理画面からの操作、またはAPIへのリクエスト送信で行います。 | 全て |
本サービスには3つの課金種類があります。
決済フォームのタグやコードを設置したり、書き出す際には以下を参照してください。
課金の種類 | 特徴 | 利用可能な決済手段 |
---|---|---|
都度課金 | 一度きりの決済を行う最も基本的な課金方式です。 クレジットカードの場合のみ ・オーソリ(仮売上) ・キャプチャ(売上確定処理) が指定できます。 | 全て |
定期課金 | 指定したサイクルで定期的に課金します。 停止・再開は管理画面の「定期課金」メニューまたはAPIで可能。 | クレジットカード Paidy |
リカーリング課金 | フォームで入力されたカード情報を 「リカーリングタイプ」のトークンとして保存し、 課金時に送信する必要があります。 任意の周期と金額で課金することができます。 | クレジットカード 銀行振込 コンビニ決済 Paidy |
Alipay Online、Alipay Plus OnlineはPCブラウザ、スマートフォンからそれぞれ決済できます。
WeChat Pay Onlineはモバイル端末からのみ決済できます。
決済手段や、消費者の使用するデバイスによって消費者の支払いフローが異なりますのでご注意ください。
詳細は、以下を参照してください。
決済手段 | PCブラウザ | モバイル端末 |
---|---|---|
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
端末内のアプリを開いて決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online |
非対応 |
リンクフォームを利用する場合: ウィジェットを利用する場合: |
その他のオンライン決済については、利用ガイド『オンライン決済 - 特徴』を参照してください。
通貨を変更する必要はありません。
日本円を指定すると、AlipayおよびWechatアプリ側で自動で「元」に変換されます。
APIでの実装で対応しています。
実装方法は、APIリファレンス『課金 – CREATE』からご確認ください。
現在対応しておりません。
課金のステータスが awaiting 以外(pending、failed、error など)の状態でイシュアトークンを取得すると、本エラーが発生します。
イシュアトークンを取得する前に、課金のステータスが awaiting になっているかGET処理によって確認することを推奨します。
銀行振込の課金オブジェクトに対する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
}
当社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)へお問い合わせください。
店舗は、決済を分類したい場合や取引ごとの設定を分けたい場合などに用いられます。トランザクショントークンは、アプリケーショントークン経由でストアに紐づいています。
フィールド | データ型 | 備考 |
---|---|---|
id | UUID | 店舗を区別するUUID |
name | string | 店舗の表示名 |
string | 店舗のメールアドレス | |
verified | boolean | 店舗が審査済みかどうか |
created_on | string (ISO-8601) | 店舗が作成された時間(ミリ杪, UNIX時間) |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座に振り込む前に蓄積された資金の最低額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで消費者にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | この店舗での使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか 外国のカードとは、その国が店舗の国と同じではないカード |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか trueの場合、別のメールアドレスで使用されているカードは拒否される |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類 none – 使用できない bounded – トランザクショントークンを作成するときにusage_periodパラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期間 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_windowで指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
店舗オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"configuration": {
"percent_fee": null,
"flat_fees": null,
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"user_transactions_configuration": {
"enabled": null,
"notify_customer": null,
"notify_on_test": null,
"notify_on_recurring_token_creation": null,
"notify_on_recurring_token_cvv_failed": null,
"notify_on_webhook_failure": null,
"notify_on_webhook_disabled": null,
"notify_user_on_failed_transactions": null,
"notify_customer_on_failed_transactions": null,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": null,
"notify_on_authorizations": null,
"notify_on_cvv_authorizations": null,
"notify_on_cancels": null,
"customer_refer_link_enabled": null,
"notify_on_convenience_expiry": null
},
"recurring_token_configuration": {
"recurring_type": null,
"charge_wait_period": null,
"card_charge_cvv_confirmation": {
"enabled": null,
"threshold": null
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": null,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": null,
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": null,
"limit_refund_by_sales": null
},
"checkout_configuration": {
"ec_email": {},
"ec_products": {}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": null,
"american_express": null,
"mastercard": null,
"maestro": null,
"discover": null,
"jcb": null,
"diners_club": null,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": null,
"allow_merchant_due_date_patch": null
},
"customer_management_configuration": {
"enabled": null,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": null,
"prepaid_enabled": null,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": null,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": null,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": null
},
"qr_scan_configuration": {
"enabled": null,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"expiration_time_shift": {}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": null
},
"online_configuration": {},
"bank_transfer_configuration": {
"expiration_time_shift": {}
},
"platform_credentials_enabled": null,
"tagged_platform_credentials_enabled": null
},
"tms_store_data": null
}
店舗オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
パラメータでsearchを用い、店舗IDを指定することで特定の店舗をフィルタリングして表示することも可能です。
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
search | string | 店舗名でフィルタリングする |
curl --request GET \
--url http://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11eec3c2-c117-9386-809b-3fb44d6462d4",
"name": "管理画面ガイド_TEST店舗Ⅳ",
"created_on": "2024-02-05T01:06:12.557138Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee6d59-0aa7-3562-bbe0-af183c595b00",
"name": "管理画面ガイド_TEST店舗Ⅲ",
"created_on": "2023-10-18T01:52:49.32173Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee4bb9-8282-c9aa-8ac7-3f876b49d88b",
"name": "管理画面ガイド_TEST店舗Ⅱ",
"created_on": "2023-09-05T06:57:42.566226Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"merchant_name": "管理画面ガイド"
}
],
"has_more": false
}
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 当システムが生成した顧客を識別するUUID |
店舗オブジェクトに対するカスタマーUUIDリクエストには以下が必要です。(括弧内は入力箇所)
加盟店が顧客を識別するIDを利用している際、当システム側で顧客を識別するUUIDを生成することができます。
{id}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{id}/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 加盟店システムで発番する顧客を識別するID |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
--data "{"customer_id": "1234abcd"}"
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"customer_id": "03ad9882-a1ca-4064-a905-3682477bec10"
}
インラインフォームで扱えるパラメータは、ウィジェットで扱えるパラメータの一部です。
そのため、個別でページ作成をしていません。
以下より「インラインフォームで利用可」となっているもの(クレジットカードで処理できるもの)を選択し、記述してください。
本サービスは主要な通貨で直接決済を行うことができますが、直接決済できない通貨の場合には決済処理時に自動で変換することができます。
ドルの場合セントという2桁の補助単位がありますが、通貨単位のドルと補助単位のセントを合わせて一つの整数にしてリクエストしてください。例えば、10.00
ドルは、1000
と送ります。
直接決済可能な通貨は以下の通りです。
JPY
日本円USD
米ドル※接続しているアクワイアラ(カード会社)やセンター(カード会社と紐づくオンライン処理用のセンター)で許可されている通貨であることが必須です。
加盟店さまで直接決済が利用可能な通貨についてはサポートデスクにお問い合わせください。
直接決済に対応していない通貨を使用する場合、振込先の銀行口座に設定してある通貨に自動的に変換されます。
設定された通貨が使用できない場合は、デフォルト設定である日本円に変換されます。
請求情報には変換後の通貨が使用されますので、別の通貨に変換される場合は、カード利用者に通知するようにして下さい。
本サービスとシステム連携して、注文や消費者のデータベースへ、支払い状態を反映する必要がある場合は、ウェブフックを受信してデータベースへの書き込みを行うプログラムを作成・設置してください。
ウェブフックの実行はベストエフォートであるため、対象のサーバや回線の状況によっては受信に失敗することがあります。
したがって、処理結果の判定をウェブフックで行うことは問題ありませんが、本来、処理結果を受信しているべきだが未受信ステータスの注文情報を、加盟店さまのデータベース上で検知した場合には、本サービスの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
に更新されたことを必ず確認してから行ってください。
課金オブジェクトの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
}
よくある質問とその回答です。
よくある質問とその回答をカテゴリ別にまとめました。
左メニューまたは下部リストより、カテゴリを指定してご覧ください。
管理画面>決済から確認できます。
詳細は『管理画面ガイド』をご覧ください。
課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
成功 | 正常に決済が完了した |
処理待ち |
|
オーソライズ済 | 仮売上(決済金額の与信枠をおさえている) セキュリティコード認証(CVV認証)に成功した |
失敗 |
決済が失敗している |
エラー |
決済サーバーやデータベースエラーなどの例外的なエラーや、カードの有効期限切れなどが発生した |
キャンセル済 |
|
決済結果の取得方法は下記4通りです。
加盟店さまの目的に沿った方法をご利用ください。
決済タブのダウンロードボタンより、CSVレポートで決済結果のダウンロードができます。
各検索欄で検索することで条件ごとに決済を絞り込んでダウンロードできます。
CSVファイルの各項目については、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で、各処理結果を即時に受信できます。
コールバックの詳細は、利用ガイド『処理結果の通知と取得』をご覧ください。
各種処理結果について、本サービスから加盟店さまがシステム通知を受信できます。
ウェブフックの詳細は、利用ガイド『ウェブフック』をご覧ください。
各処理結果について、加盟店さま/消費者のメールアドレス宛に通知を送信できます。
通知の詳細は、利用ガイド『処理結果のメール通知』をご覧ください。
以下2通りのリクエスト方法によって、決済結果を取得できます。
詳細は、それぞれAPIリファレンスをご覧ください。
CSVレポートのダウンロード手順と見方について説明します。
①管理画面>決済 から、日時など任意の条件に絞ってください。
②課金と返金それぞれのCSVレポートをダウンロードしてください。
③イベント(Q列)に対応する金額を、イベント金額(F列)から確認できます。
課金と返金のファイルを照合して、加盟店さまの目的に合わせてデータを活用してください。
例1)「イベント」:売上、「イベント金額」:100
→100円の売上
例2)「イベント」:返金、「イベント金額」:100
→100円の返金
イベントの種類とその内容は、ご利用ガイド『CSVデータのダウンロード』をご覧ください。
トークンメタデータ(L列)または課金メタデータ(M列)から確認できます。
商品名のメタデータのキーは univapay-product-names です。
以下2通りの方法で、管理画面から課金を行えます。
管理画面の操作方法は、『管理画面ガイド』をご覧ください。
管理画面>リカーリングトークンから、課金させたいリカーリングトークンを選択し、下部の課金ボタンから課金ができます。
管理画面>CSV課金からCSVファイルをアップロードすることで、複数のリカーリングトークンに対して一括で課金ができます。
ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
Alipay・WeChat・PayPayonline・Paidy・d払いOnlineは一部返金に対応しています。
その他の決済手段は対応していません。
決済手段によって異なります。
以下を参照してください。
決済手段
|
返金の可否
|
クレジットカード決済
|
約半年(約180日)
|
Alipay
|
1年
|
Wechat
|
半年(180日)
|
PayPayonline
|
1年
|
Paidy
|
1年
|
d払いOnline
|
半年(180日)
|
以下のような原因が考えられます。
クレジットカード決済で、接続先が海外の場合、返金に1~2週間ほどかかる場合があります。
処理が完了したら「成功」「失敗」に変わりますので、しばらくお待ちください。
返金の受付は完了しましたが、処理は完了していない状態です。
返金処理には1~2週間ほどかかる場合がありますので、しばらくお待ちください。
課金時と返金時の通知メールは、同じメールテンプレート種別「決済完了通知」が送信されます。
メールテンプレートを作成する場合、パラメータ${transaction_type}を使用することで、処理によって自動で「課金」もしくは「返金」とメール表記を切り替えることが可能です。
例)件名が「${transaction_type}のお知らせ」の場合
課金時:「課金のお知らせ」
返金時:「返金のお知らせ」
メールテンプレートを作成せずデフォルトのメールテンプレートを使用する場合は、処理によって「課金」または「返金」にメール表記が切り替わります。
メールテンプレートのデフォルト内容は、利用ガイド『テンプレートの種類』を参照してください。
作成方法は以下3通りあります。
加盟店さまの運用に合った方法で作成してください。
1.管理画面から設定
管理画面>リンクフォーム から、リンクフォームを作成する際に「定期課金」をONにしてください。
2.パラメータを指定
決済フォーム設置時 または APIでの連携時、パラメータで課金方式を定期課金に指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面>店舗>対象の店舗>決済フォーム のジェネレータを活用すると、簡単に作成できます。
指定できる定期課金の間隔は以下の通りです。
定期課金のステータスの種類と、それぞれの状態を説明します。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち |
継続中の定期課金で課金を失敗し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
自動でリトライ(再度課金)を行います。
設定された回数のリトライに失敗すると、自動で即時停止します。
デフォルトは、定期課金の周期÷設定されたリトライ回数=リトライ間隔として計算されます。
※毎月(monthly)は課金月に関係なく30日として計算します。
※割り切れない場合は切り捨ての日数になります。
例)30日÷4=7.5日→7日
リトライ間隔は、前回失敗した日から計算されます。
例)リトライ間隔7日の定期課金
2024/1/23に失敗→2024/1/30にリトライ
任意のリトライ間隔に設定したい場合は、以下を参照してください。
全体の定期課金に対して、リトライを実行する回数を設定できます。
管理画面>一般設定 から設定できます。
設定時の注意点:
リトライ回数は初回の課金も回数に含みます。
リトライに成功すると、リトライ回数がリセットされ、次回の支払いからは設定した回数リトライされるようになります。
定期課金ごとに、リトライを実行する間隔を個別で設定できます。
リトライ間隔の設定は、リトライ回数の設定より優先されます。
設定方法は以下の通りです。
①定期課金作成時
(ⅰ)管理画面の定期課金作成画面で指定
(ⅲ)APIでの連携(定期課金 – CREATE)
②定期課金情報の更新:APIでの連携(定期課金 – UPDATE)
管理画面>定期課金 より、停止させたい定期課金を選択して詳細画面を開き、左下部の停止ボタンを押すことで停止できます。
停止ボタンは、停止後再開できる「一時停止」と、再開できない「永久停止」の2種類あります。
用途に合わせて選択してください。
管理画面>定期課金 から、再開させたい定期課金を選択して詳細画面を開き、左下部の再開ボタンを押すことで再開できます。
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/2に再開(次回課金日:2024/3/1に設定される)
③2024/3/1に課金される
例)
①毎月1日に課金される定期課金を2024/1/23に停止(次回課金日:2024/2/1の状態で停止する)
②2024/2/1に再開
→再開日がサイクル日(次回課金日)と同日のため、即時課金される
当社の決済フォームを使用するか、APIで連携することで作成できます。
初回に課金せず、カード登録のみを行う場合は、基本CVV認証が必須なことに注意してください。
※設定によって不要な場合もあります。
作成方法は、以下を参照してください。
リンクフォームタブと、店舗タブの各ジェネレーターから作成できます。
下記の通り設定してください。
決済フォーム設置時 または APIでの連携時、パラメータを指定することで作成できます。
使用するパラメータ情報は以下ページでご確認ください。
管理画面から変更できます。
管理画面>定期課金>対象の定期課金を選択し、次回課金日および次回課金金額を変更してください。
※設定変更後、ページ下部の「保存」ボタンを押してください
回数制限付き定期課金の場合は、次回課金金額の変更はできません。
契約時に設定された課金最大額が、都度の課金額の上限です。
一般設定>決済サービス>全体設定>課金 の「課金額の上限」から確認できます。
次の課金日は、管理画面>定期課金 から対象の定期課金を選択し、詳細画面から確認できます。
課金日の午前7時※より、順次課金されます。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金が停止している場合は、以下の点に注意してください。
次の課金を待っている状態です。
次の課金日の確認方法は、一つ上の質問項目「この定期課金が次に課金されるタイミングはいつですか?」の回答を参照してください。
加盟店が指定したサイクル(間隔)ごとに自動で課金を行う方法です。
加盟店さまへは、都度の課金が精算・入金されます。
都度課金を、消費者が任意の回数に分けて支払う方法です。
消費者とイシュア(カード発行会社)との契約によって、選択できる回数が異なります。
加盟店さまへは、一括で精算・入金されます。
カード情報(カード番号と有効期限)を復号できない別の文字列に置き換えたものです。
当社決済フォームに入力されたカード情報は、自動的に文字列に置き換える処理(トークン化)が行われます。
トークン化によって、PCI DSSに準拠していない加盟店でもクレジットカード決済を利用できます。
※クレジットカード情報を加盟店サイト内に入力させ、本サービスの APIに送信する場合は、カード情報の「通過」にあたるため、加盟店サイトがPCI DSSへの準拠が必要になります。
繰り返し課金に利用するために、消費者のクレジットカード情報をトークン化したものです。
リカーリングトークンを登録することによって、消費者が2回目以降の決済時にカード情報を入力する手間を省けます。
管理画面>リカーリングトークンから、登録済のリカーリングトークンに対して、以下の対応が可能です。
セキュリティコード認証されていない可能性があります。
初回処理時に課金しなかったリカーリングトークンに対して後から課金をするには、リカーリングトークン作成時にセキュリティコード認証をする必要があります。
※加盟店設定によります
当社指定のフォーマットに沿ったCSVファイルをアップロードすることで、加盟店さまの判断で、既存の消費者に対して再び課金できる機能です。
CSV課金では、複数の既存の消費者に対して一括での課金が可能です。
オプション機能のため、ご利用をご希望の場合はサポートデスク(ips-support@univapay.com)までお問い合わせください。
リカーリングトークンに保存されたクレジットカード情報を再利用して、新たな課金を行います。
CSVファイルで提供された情報をもとにリカーリングトークンを識別するため、予めリカーリングトークンに消費者の情報(クレジットカード情報,メールアドレス,メタデータ等)が結びついている必要があります。
一番新しいリカーリングトークンを識別する仕組みによって、消費者1人に対して複数のリカーリングトークンが存在している場合でも、重複して課金することを防げます。
例)メールアドレスで識別する場合
同じメールアドレスのリカーリングトークンが複数存在している場合、一番新しいリカーリングトークンに対してのみ課金する
詳細は、利用ガイド『CSV課金』をご覧ください。
CSV課金を実行してから、結果を確認するまでの流れを説明します。
当社指定のフォーマットに沿って、課金に必要な情報が記載されたCSVファイルを作成してください。
管理画面>CSV課金 から、「CSVファイルをアップロードする」のボタンを押してください。
その後、画面に沿って各設定を行い、「金額データCSV」の項目へ作成したCSVファイルをアップロードしてください。
CSV課金の結果は管理画面>CSV課金 から、対象のCSV課金を選択することで処理結果や詳細を確認できます。
対象のCSV課金を選択した画面から、決済結果を確認する方法は、以下の2通りあります。
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
オンライン決済時の、APIへのリクエストの手順を説明します。
詳細は、利用ガイド『オンライン決済 - APIへのリクエスト』を参照してください。
トランザクショントークン – CREATEが利用できません。
加盟店さまのサイト内に消費者のクレジットカード情報を入力させてUnivaPay APIに送信する行為は、クレジットカード情報の「通過」にあたるため、加盟店サイトのPCI DSSへの準拠が必要です。
代わりに当社決済フォーム(リンクフォーム、ウィジェット、インラインフォーム)や 決済端末など、当社の提供するソリューションを使用することで、PCI DSSに準拠していない場合でもクレジットカード情報を送信できます。
PCI DSSに準拠している場合は、トークン化から課金、返金まで全てのリクエストを本サービスのAPIに送信できます。
対応しているSDKの言語は以下3つです。
本サービスのAPIには、レート制限と、リソース制限の2種類の制限があります。
詳細は、APIの制限のページを参照してください。
ここでは「リクエスト数」の制限に関して、抜粋して紹介します。
レート制限には、課金レート制限と標準レート制限の2つに分類されます。
課金の作成に関するリクエストを行う際にカウントされます。
対象API | X-Remaining-Requests (バーストレート) |
X-Requests-Per-Minute (1分あたりのリクエスト上限) |
---|---|---|
POST /tokens POST /charges POST /subscriptions |
上限:100 |
3,000/分 |
標準レート制限は、ルートバーストレートとイグザクトバーストレートの2つに分類されます。
アクセスするリソースの「パス」に対しての制限です。
対象 | X-Remaining-Requests-Route (ルートバーストレート) |
X-Requests-Per-Minute-Route (1分あたりのリクエスト上限:ルート) |
---|---|---|
全てのパス | 上限:30 | 1,200 |
Exact(完全一致)の名の通り、リソースIDやクエリ文字列も含めて完全に一致するパスに対して適用されます。
対象 | X-Remaining-Requests-Exact (イグザクトバーストレート) |
X-Requests-Per-Minute-Exact (1分あたりのリクエスト上限:イグザクト) |
---|---|---|
全てのクエリ | 上限:10 | 120 |
1つの加盟店または店舗で、有効にできるリソース数には上限があります。
この上限を超えるリソースの作成リクエストには、ResourceLimitReached
エラーが出力されます。
リソース | 上限 |
---|---|
webhook (ウェブフック) |
20 |
jwt (アプリトークン) |
20 |
パスワードリセットトークン | 5回/日 |
テスト課金 | 1440件/日 |
発生したエラーのコードおよびメッセージを確認できる場所は、下記の通りです。
確認者
|
場所
|
---|---|
消費者
|
・決済完了画面 ・通知メール「決済完了通知」 |
加盟店さま
|
・merchant>決済>決済詳細画面 「ステータス」部分 ・通知メール「決済完了通知」 |
エラーコードやエラーメッセージの内容を確認したい場合は、APIリファレンス『エラーコード – 概要』を参照してください。
認証エラー(ペイメントエラー306)は、クレジットカードが拒否された場合に発生するエラーです。
よくある事例は以下の通りです。
実際の拒否理由は、消費者からカード発行会社へお問い合わせください。
Alipay Online、Alipay Plus OnlineはPCブラウザ、スマートフォンからそれぞれ決済できます。
WeChat Pay Onlineはモバイル端末からのみ決済できます。
決済手段や、消費者の使用するデバイスによって消費者の支払いフローが異なりますのでご注意ください。
詳細は、以下を参照してください。
決済手段 | PCブラウザ | モバイル端末 |
---|---|---|
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
端末内のアプリを開いて決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online |
非対応 |
リンクフォームを利用する場合: ウィジェットを利用する場合: |
その他のオンライン決済については、利用ガイド『オンライン決済 - 特徴』を参照してください。
通貨を変更する必要はありません。
日本円を指定すると、AlipayおよびWechatアプリ側で自動で「元」に変換されます。
APIでの実装で対応しています。
実装方法は、APIリファレンス『課金 – CREATE』からご確認ください。
現在対応しておりません。
課金のステータスが awaiting 以外(pending、failed、error など)の状態でイシュアトークンを取得すると、本エラーが発生します。
イシュアトークンを取得する前に、課金のステータスが awaiting になっているかGET処理によって確認することを推奨します。
口座種別はすべて「普通」です。
当システム上で返金機能はありません。
加盟店さまから直接消費者の口座へ返金をお願いいたします。
振込前であれば振込を出来なくすることが可能です。
管理画面>決済 より該当の課金を検索し、詳細画面の左下にある「請求停止」ボタンをクリックしてください。
振込手数料は消費者の負担です。
金額詳細は振込元の金融機関にお問い合わせください。
振込前であれば管理画面>決済>詳細画面より「請求停止」を行い、変更後の金額で再度申込を行ってください。
管理画面>決済 より該当の課金を検索し、詳細画面から口座情報を確認できます。
確認した口座情報を、加盟店さまより消費者へ案内してください。
日本の金融機関からのみ振込可能です。
海外金融機関からの振込は対応していません。
テスト決済方法および結果の確認方法を説明します。
管理画面>テスト課金 から、クレジットカード決済のみ簡易的なテスト決済が可能です。
実際に当社決済フォームを使用したテスト決済を行いたい場合は、以下の手順で行ってください。
①テストモードのアプリトークン作成
②アプリトークンをテストモードにの切り替え
……決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
リンクフォームは、対象店舗で作成したリンクフォームすべてに対して、モードの切り替えが適応されます。
ウィジェット および インラインフォームは、フォーム毎にアプリトークンを指定することで、モードを指定します。
③テスト決済実行
テストモードのアプリトークンを使用し、各処理を行ってください。
詳細は、APIリファレンス『トランザクショントークン – CREATE』をご覧ください。
別のアカウントは不要です。
テスト決済の方法および結果の確認方法は、一つ上の質問項目「テスト決済をするにはどうすれば良いですか?」の回答を参照してください。
テストモードの決済に使用できるカード番号は下記の通りです。
カード番号によって確認できる挙動が異なるため、加盟店さまの目的に沿った番号を利用してください。
カード番号
|
確認できる挙動
|
---|---|
4000020000000000
|
決済成功 / 返金成功
|
4242424242424242
|
決済成功 / 返金失敗
|
4111111111111111
|
決済失敗
|
計算ルールに基づいたカード番号であれば、その他のカード番号も利用可能です。
カード番号を生成できるサイト等を活用すると、簡単に作成できます。
例:https://www.getcreditcardnumbers.com/
※その他のカード番号を利用する場合は、決済成功 / 返金成功の挙動になります。
本番モードのアプリトークンを作成し、本番モードのアプリトークンに切り替えてください。
決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
テストモードのリカーリングトークンは、1カ月で消える仕様です。
消えたリカーリングトークンに対する課金は、返金ができなくなります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
できません。
サーバ上からテスト決済をお願いします。
実装方法によって、リダイレクト(遷移)先URLの指定方法が異なります。
以下を参照してください。
実装方法 | リダイレクト先URLの指定方法 |
---|---|
リンクフォームの設置 |
または
|
ウィジェット / インラインフォームの設置 |
かつ
※詳細は、利用ガイド『設置 – (HTML/JavaScript)』を参照してください |
APIでの連携 |
パラメータを指定 ※詳細は、APIリファレンス『課金 – CREATE』を参照してください |
使用中のアプリトークンに、サイトURLのドメインが指定されていない場合に表示されるエラーです。
ウィジェットやインラインフォームを利用する場合は、アプリトークンへのサイトURLのドメインの入力が必須です。
(APIやSDKを利用する場合は不要です。)
サイトURLのドメインを指定したアプリトークンを使用して、再度お試しください。
アプリトークンへのサイトURLのドメインの指定手順は、以下の通りです。
①管理画面>アプリトークン の「新規作成」ボタンをクリック
②利用店舗の指定 および モードの選択を行う
③ドメインの「追加」ボタンをクリックし、サイトURLのドメインを入力
例)サイトURLが「https://www.univapay.com/」の場合、ドメインは「www.univapay.com」
④右下「作成」ボタンをクリック
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
処理結果は、ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で即時に受け取れます(コールバック)。
コールバックを活用して、加盟店さま側でエラー内容ごとにウェブサイトの挙動を変える実装を行ってください。
また、ウェブフック および APIへのリクエスト(課金のGET処理)で処理結果を受け取り、ウェブサイトで次の処理を実行したい場合等に活用できます。
詳細は、それぞれ以下ページをご確認ください。
決済など各処理をテストモードで行うことで、通知メールの文面および挙動を確認できます。
※請求名など、本番モードの時にしか反映されないパラメータもあります。
管理画面>通知メールテンプレート の「新規作成」ボタンからメールテンプレートを作成することで、通知メールの文面を自由に変更できます。
メールテンプレートを作成していない場合は、デフォルトの文面で通知メールが送信されます。
デフォルトの文面は、利用ガイド『テンプレートの種類』のページを参照してください。
管理画面>一般設定>一般>通知 の「メールアドレス」に任意のメールアドレスを入力することで、加盟店さまに届く通知メールの宛先を指定できます。
指定していない場合、管理画面のログイン用メールアドレスへ通知メールが送信されます。
(その場合は、管理画面右上の加盟店名をクリック>ユーザー設定 の「メールアドレス」からログイン用メールアドレスを変更すると、通知メールの宛先も変更されます。)
管理画面>一般設定>通知 から、処理ごとに通知メールの挙動を設定できます。
通知あり / なしは、ボタンの有効 / 無効によって設定してください。
※設定を変更後、ページ下部の「保存」ボタンを押してください
以下手順によって、商品ごとにメールの文面を分けることができます。
管理画面>商品 から商品を選択後、メタデータの「追加」ボタンを押し、「値」にメールで表示させたい文章を追加してください。「キー」は任意の文字列を指定してください。
例)キー:商品Aの発送日,値:商品Aの発送はお支払の3日後です。
管理画面>通知メールテンプレート から、文章を追加したいメールテンプレートを選択(作成していない場合は「新規作成」ボタンから作成)し、メタデータの「キー」を指定したパラメータを記載してください。
(メタデータの「キー」を指定することで、課金メタデータのうち、表示させたい「値」のみを表示できます。)
また、パラメータの末尾に「:- (コロン,ハイフン,空白)」を入力してください。
(パラメータの語尾に「:-(コロン,ハイフン)」を入力すると、その後ろに入力した文字列が、該当のメタデータが存在しない場合に表示される「デフォルト値」として設定されます。)
デフォルト値を空白に指定することで、該当のメタデータが存在しない場合はメールへ反映されません。
例)${charge_metadata.商品Aの発送日:- }
テストモードで各処理を行って、通知メールの文面を確認してください。
商品を指定した処理時は通知メールの内容が商品ごとに分かれていて、商品を指定していない処理時はメールに何も表示されなければ完了です。
例)商品Aを指定して課金処理を行った場合、通知メールの文面に「商品Aの発送はお支払の3日後です。」と表示される / 商品を指定せず課金処理を行った場合、通知メールの文面何も表示されない
以下のどちらかのパラメータを、商品名を表示させたい通知メールテンプレート内に記載してください。
商品名以外にも、${charge_metadata.(キー)}や${token_metadata.(キー)}のように表示させたいメタデータのキーを指定すると、その値のみを通知メールの文面に表示させることができます。
※リカーリング課金時やCSV課金時、リカーリングトークン作成時、カード情報変更時は${charge_metadata.(キー)}を指定してもメタデータが表示されません。${token_metadata.(キー)}をご利用ください。
商品を指定しない処理時に表示させたくない場合は、下記のように「デフォルト値」を空白に指定してください。
以下のイベントが発生した場合、各種内容の通知メールが送信されます。
※「モード設定」や「基本設定」が無効な場合は送信されません。
管理画面>ウェブフック から、「新規作成」ボタンを押すと設定できます。
各項目の設定方法は以下を参照してください。
※設定後、ページ下部の「作成」ボタンを押してください
ウェブフック失敗により、自動停止された可能性があります。
以下の場合、ウェブフックを自動で停止します。
HTTPレスポンス エラーコード
|
処理
|
---|---|
3xx
|
リトライせず、失敗後即停止する
|
4xx、500、501、502
|
初回含む最大10回のリトライを行い、最大回数に達すると停止する
|
停止後はリトライされないため、もう一度有効化したい場合は管理画面から以下手順で設定する必要があります。
①管理画面>ウェブフック から、「すべて」または「停止」のウェブフック一覧を表示
②有効化したいウェブフックを選択
③画面左下の「有効化」ボタンを押す
ウェブフックの失敗時および停止時にメール通知が必要な場合は、管理画面>一般設定>一般>通知 の「ウェブフック失敗時の通知」「ウェブフック利用不可の通知」を有効にしてください。
失敗した理由は、管理画面>ウェブフック>対象のウェブフックを選択>最近のイベント から対象のトリガーを選択し、「error_message」から確認できます。
例)error_message:Request timeout to www.triple-farm.com after 3 seconds
……指定されたURLに対してウェブフック通知した際に、3秒以内にレスポンスがない場合、当社ではタイムアウトによって「失敗」と判定します。そのため、非同期処理によって3秒以内にレスポンスを返却する実装が必要です。
※あくまで当社の判定なため、加盟店さまへは結果通知が届いてる場合があります
ウェブフック失敗後の挙動は、利用ガイド『ウェブフック』を参照してください。
管理画面右上の加盟店名>ユーザー設定 から、ログイン用のメールアドレスおよびパスワードを変更できます。
※一般設定>一般>通知 の「メールアドレス」から、通知メールを受信するメールアドレスを別途設定していない場合は、ログイン用メールアドレスへ通知メールが送信されます。
ログイン画面から、以下手順でパスワードを再設定できます。
①「パスワードを忘れた場合」ボタンを押して、登録されている加盟店さまのメールアドレスを入力する
②入力されたメールアドレスに届いた、件名『UnivaPayパスワードリセット』というメールを開き、記載されているパスワード再設定用のURLをクリックする
③遷移先のページで、新しく設定したいパスワードを2度入力し、「送信」ボタンをクリックする
別サービスで決済システムを利用する場合は、別途審査を行いアカウントを発行する必要があります。
サポートデスク(ips-support@univapay.com)へお問い合わせください。
変更依頼・停止・解約申込フォームから申請することで、加盟店情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 「変更する」を選択した場合、それぞれ入力欄が表示されるので、変更したい内容を記載してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「店舗ID」「店舗名」を記載してください。
変更依頼・停止・解約申込フォームから申請してください。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
変更依頼・停止・解約申込フォームから申請することで、登録情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
加盟店さまの負担です。
振込手数料は、一律400円(税別)です。
契約内容によっては、変更が可能です。
変更を希望する場合は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
明細書および請求書は、「明細書送付先アドレス」宛に案内します。
書類ごとに、発行されるタイミングや記載内容、確認方法が異なります。
発行書類 | 発行されるタイミング | 記載内容の概要 | 確認方法 |
---|---|---|---|
売上代金支払明細書 | 振込日の約2~5日前 |
|
メール文面上 または 管理画面>精算 からPDFをダウンロード |
支払通知書 | 振込日当日 ※振込の場合のみ |
|
メール文面上からPDFをダウンロード |
請求書 | 集計期間の翌月末日頃 ※請求がある場合のみ |
|
メール文面上からPDFをダウンロード |
※送付日は休日等の影響によって多少変動します。
※契約内容により、送付のタイミングが異なる場合があります。
入金予定日が金融機関の休日や祝日と重なる場合、入金日は金融機関の翌営業日になります。
また、加盟店さまへの入金は、支払い額が10,000円以上の場合のみ行い、10,000円未満の場合は次月へ繰り越しします。
※デフォルトの金額設定です
10,000円以上の支払い額で入金がない場合は、精算担当(下記連絡先)へお問い合わせください。
※メールの場合は、必ず「加盟店ID」「加盟店名」を記載してください。
口座種別はすべて「普通」です。
当システム上で返金機能はありません。
加盟店さまから直接消費者の口座へ返金をお願いいたします。
振込前であれば振込を出来なくすることが可能です。
管理画面>決済 より該当の課金を検索し、詳細画面の左下にある「請求停止」ボタンをクリックしてください。
振込手数料は消費者の負担です。
金額詳細は振込元の金融機関にお問い合わせください。
振込前であれば管理画面>決済>詳細画面より「請求停止」を行い、変更後の金額で再度申込を行ってください。
管理画面>決済 より該当の課金を検索し、詳細画面から口座情報を確認できます。
確認した口座情報を、加盟店さまより消費者へ案内してください。
日本の金融機関からのみ振込可能です。
海外金融機関からの振込は対応していません。
トークンタイプにrecurring
を指定する場合は、繰り返し課金を目的としたトークンの保存を行うことについて、消費者に対して必ず事前の同意承諾を得るか、加盟店サイト内で十分な告知※を行ってください。
万が一、同意の取得や告知が十分でなかった場合は、消費者から加盟店さまに対して、支払いに対する異議や抗弁の申し立てがされる場合があります。
また、そのような事態が連続した場合は、カード会社から加盟店さまに対して加盟契約解除を言い渡されることがありますが、当社ではその責任を一切負いかねます。予めご了承ください。
クレジットカード情報はPCI-DSSに準拠したシステムでトークン化され、当社ではトークンを保存します。トークンの利用目的は、消費者の再購入やサービス利用状況に応じて再課金することです。課金は必ず消費者の事前同意を得た状態で行われ、無断で行われることはありません。なお、保存したトークンは本サービスでのみ利用可能なもので、万一漏洩することがあっても他サービスの課金に使われることはありません。 |
ウィジェットボタンの直下など、消費者が確認しやすい場所にに注意書きを設置してください。
なお、インラインフォームをご利用の場合は、インラインフォームが含まれる前のページか、インラインフォームの付近に、注意書きを設置してください。
決済情報と消費者に関する個人情報を取得する為のリソースです。
課金(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 | 振込支払先の口座名義 銀行振込の場合に利用可能 |
イシュアトークン
テスト決済方法および結果の確認方法を説明します。
管理画面>テスト課金 から、クレジットカード決済のみ簡易的なテスト決済が可能です。
実際に当社決済フォームを使用したテスト決済を行いたい場合は、以下の手順で行ってください。
①テストモードのアプリトークン作成
②アプリトークンをテストモードにの切り替え
……決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
リンクフォームは、対象店舗で作成したリンクフォームすべてに対して、モードの切り替えが適応されます。
ウィジェット および インラインフォームは、フォーム毎にアプリトークンを指定することで、モードを指定します。
③テスト決済実行
テストモードのアプリトークンを使用し、各処理を行ってください。
詳細は、APIリファレンス『トランザクショントークン – CREATE』をご覧ください。
別のアカウントは不要です。
テスト決済の方法および結果の確認方法は、一つ上の質問項目「テスト決済をするにはどうすれば良いですか?」の回答を参照してください。
テストモードの決済に使用できるカード番号は下記の通りです。
カード番号によって確認できる挙動が異なるため、加盟店さまの目的に沿った番号を利用してください。
カード番号
|
確認できる挙動
|
---|---|
4000020000000000
|
決済成功 / 返金成功
|
4242424242424242
|
決済成功 / 返金失敗
|
4111111111111111
|
決済失敗
|
計算ルールに基づいたカード番号であれば、その他のカード番号も利用可能です。
カード番号を生成できるサイト等を活用すると、簡単に作成できます。
例:https://www.getcreditcardnumbers.com/
※その他のカード番号を利用する場合は、決済成功 / 返金成功の挙動になります。
本番モードのアプリトークンを作成し、本番モードのアプリトークンに切り替えてください。
決済フォームごとの決済モードの切り替え方法は、以下を参照してください。
決済フォーム | 決済モードの切り替え方法 |
---|---|
リンクフォーム |
管理画面>店舗>対象の店舗を選択後、 |
ウィジェット |
|
インラインフォーム |
|
テストモードのリカーリングトークンは、1カ月で消える仕様です。
消えたリカーリングトークンに対する課金は、返金ができなくなります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
できません。
サーバ上からテスト決済をお願いします。
リンクフォーム / ウィジェットが表示されると、パラメータで指定されたアプリケーショントークンに関連した店舗の決済設定を取得する為に自動的にAPIにリクエストを行います。
決済設定は、リンクフォーム / ウィジェットを動作する為に必要な様々な設定情報の集合です。
フィールド | データ型 | 備考 |
---|---|---|
mode | string | ウィジェットに設定されたアプリケーショントークンのモード |
name | string | ストア名 |
logo_image | string | ストアのロゴ画像のURL |
recurring_token_privilege | string | このストアのリカーリングトークンの権限。none (なし), bounded (制限付き), infinite (無制限) のいずれか。 |
card_configuration.enabled | boolean | カードが利用可能か |
card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す |
card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうかtrue の場合、別のメールアドレスで使用されているカードは拒否される |
card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
card_configuration.card_limit.duration | string (ISO-8601) | 定義された期間、カードごとに利用を制限する金額 |
qr_scan_configuration.enabled | boolean | QRコードが支払方法として利用可能かどうか |
qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
convenience_configuration.enabled | boolean | コンビニがペイメント方法として利用可能かどうか |
theme.colors.main_background | string (HexColor) | 入力欄背景。入力フォームが表示されるエリアの背景色。デフォルトは #fafafa |
theme.colors.secondary_background | string (HexColor) | ロゴとタイトルが含まれるエリアの背景色。デフォルトは #ee7a00 |
theme.colors.main_color | string (HexColor) | ヘッダーと下部のボタンの背景色。デフォルトは #fafafa |
theme.colors.primary_text | string (HexColor) | タイトル(デフォルトはストア名)の文字色。デフォルトは #fafafa |
theme.colors.secondary_text | string (HexColor) | (指定がある場合は)ウィジェットのタイトル下部に表示される説明文の文字色。デフォルトは #222222 |
theme.colors.base_text | string (HexColor) | 上記で指定されない他のテキストの文字色。デフォルトは #000000 |
recurring_card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、このストアにCVV確認が必要かどうか |
recurring_card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、ストアのデフォルト通貨での最大金額 |
supported_brands | array[SupportedBrand] | 利用可能な決済ブランド |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
フィールド | データ型 | 備考 |
---|---|---|
brand | string | 対応しているブラントpayment_type により、次のいずれかcard: visa, mastercard, american_express, jcb, diners_club, unionpay, discover, maestro qr_merchant : alipay_merchant_qr, alipay_connect_mpm, pay_pay_merchant, we_chat_mpm online : alipay_online, alipay_plus_online, pay_pay_online, we_chat_online,dbarai_online bank_transfer : aozora_bank paidy : paidy |
payment_type | string | 次のいずれか card , qr_merchant , online , bank_transfer , paidy |
support_auth_capture | boolean | 仮売上のキャプチャが許可されているか |
requires_full_name | boolean | 名前を必須にしているか |
support_dynamic_descriptor | boolean | ダイナミックディスクリプタ―が利用可能か |
requires_cvv | boolean | セキュリティコードが必須か |
countries_allowed | array[string] | 許可されている国 |
supported_currencies | array[string] | 許可された通貨 |
cvv_auth | boolean | セキュリティコード認証を行うか |
dynamic_info | boolean | 分割払いが利用可能か |
決済設定オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
このリクエストはウィジェットを開いた際に自動的に送られ、店舗の支払いのための設定を確認することができます。
リンクフォーム / ウィジェットを開かなくても、アプリトークン / シークレット を指定して下記リクエストを送ることで確認可能です。
{jwt}
部分)curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"mode": "test",
"recurring_token_privilege": "infinite",
"name": "管理画面ガイド_TEST店舗",
"card_configuration": {
"enabled": true,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": true,
"prepaid_authorization_enabled": true,
"only_direct_currency": false,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"allow_direct_token_creation": true,
"three_ds_required": false,
"three_ds_address_required": true
},
"subscription_configuration": {
"enabled": true
},
"installments_configuration": {
"enabled": true,
"card_processor": {
"revolving": true,
"fixed_cycle": true
},
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y",
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": true,
"fixed_cycle": true,
"fixed_cycle_amount": true,
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y"
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration": "PT720H",
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": true
},
"paidy_public_key": "pk_test_9bta9fm2cbvpcscddhr7qrnkkb",
"logo_image": null,
"theme": {
"colors": {
"main_background": "#FFFFFF",
"secondary_background": "#F5F8FC",
"main_color": "#4C5F85",
"main_text": "#FFFFFF",
"primary_text": "#4C5F85",
"secondary_text": "#4C5F85",
"base_text": "#4C5F85"
}
},
"recurring_card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"match_amount": "disabled",
"expiration": "PT168H",
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"virtual_bank_accounts_threshold": 5,
"virtual_bank_accounts_fetch_count": 10,
"default_extension_period": "PT24H",
"maximum_extension_period": "PT720H",
"automatic_extension_enabled": false,
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_period": "PT72H",
"remind_notification_enabled": true
},
"supported_brands": [
{
"payment_type": "konbini",
"brand": "sunkus",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_plus_online",
"online_brand": "alipay_plus_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "yamazaki_daily_store",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "family_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "mini_stop",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "pay_easy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_online",
"online_brand": "alipay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "circle_k",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "mastercard",
"card_brand": "mastercard",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seven_eleven",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seico_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "d_barai_online",
"online_brand": "d_barai_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "daily_yamazaki",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "lawson",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "jcb",
"card_brand": "jcb",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "card",
"brand": "visa",
"card_brand": "visa",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "paidy",
"brand": "paidy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "diners_club",
"card_brand": "diners_club",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "american_express",
"card_brand": "american_express",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "pay_pay_online",
"online_brand": "pay_pay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "bank_transfer",
"brand": "aozora_bank",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "we_chat_online",
"online_brand": "we_chat_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
}
]
}
銀行振込の申込後、指定口座に振り込むと決済が完了される流れです。
当社決済フォームを利用した場合の消費者の支払いフローは、下記の画像付き資料を参照してください。
管理画面>決済 から申込や振込の履歴を確認できます。
また、「ステータス」と「結果」の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あおぞらネット銀行に送信した時 |
課金オブジェクトに対する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"
}
}
更新履歴を年ごとに記載しています。
なお2022年以前の履歴は省略しています。
Frontend
TWEAK 商品コードの数を指定するパラメータdata-product-code-quantitiesを追加しました(ウィジェット / インラインフォーム)
FIX カスタマーIDを指定するパラメータunivapayCustomerIdを指定の不具合を修正しました(リンクフォーム)
Frontend
FIX Paidy決済の場合、住所を入力必須項目として決済フォームに表示されるように修正しました(ウィジェット)
Frontend/Backend
NEW 毎月の精算で発生した請求金額を登録したカードで決済する、クレジットカード登録機能を追加しました
Frontend
NEW
リンクフォームで設定可能なパラメータを2種類追加しました
・nameKana
・phoneNumberCountryCode
Frontend
TWEAK 住所の都道府県の入力をプルダウンで選択するようになりました(ウィジェット / リンクフォーム)
Frontend
TWEAK 電話番号の入力フォームで国番号の表示を追加しました(リンクフォーム)
Frontend/Backend
NEW
ウィジェット / インラインフォーム / リンクフォームで設定可能なパラメータを2種類追加しました
・data-hide-recurring-checkbox / hideRecurringCheckbox
・data-hide-privacy-link / hidePrivacyLink
TWEAK 電話番号の入力フォームで国番号の表示を追加しました(ウィジェット)
Frontend/Backend
UPDATE
イシュアトークン取得APIリクエストのURL末尾が/issuuer_tokenに変更になりました
※既存のURL(/issuerToken)でもリクエスト可能です
UPDATE 定期課金のリトライ回数がリセットされる仕様に変更になりました
NEW 管理画面>店舗>決済フォーム>ウィジェットの一般設定で、韓国語 / タイ語 / ロシア語を追加しました
Frontend/Backend
UPDATE ウェブフックの通知が失敗した場合、返却されたエラーコードによって通知のリトライが可能になりました
Frontend/Backend
NEW リカーリングトークンの詳細情報から、登録済のカード情報の有効期限および名義の更新が可能になりました
Frontend/Backend
UPDATE カード情報変更後に作成された新規リカーリングトークンと変更前の古いリカーリングトークンを、管理画面>リカーリングトークンの検索欄・詳細画面から確認可能になりました
NEW コンビニ決済の入金期限切れの通知メールテンプレートを追加しました
Frontend
UPDATE 指定した秒数が経過するとウィジェットが閉じてタイムアウトのエラー画面を表示させるパラメータ”data-timeout”を追加しました
Frontend/Backend
NEW 次回課金実行日(リトライ日含む)に一時停止・永久停止の処理を設定できる機能を追加しました
UPDATE CSV課金>該当のCSV課金の「レポート」の項目内に、実行された決済を確認できる機能(「>決済を確認」のリンク)を追加しました
Frontend/backend
NEW 支払い情報の確認・変更画面を追加しました
Frontend
UPDATE リンクフォーム、商品、URLジェネレータ(ウィジェット/インラインフォーム/リンクフォーム)に「月末に固定」を指定するトグルスイッチを追加しました
Backend/Frontend
NEW 管理画面の、定期課金の詳細画面で「次回課金日」に月末を指定かつ「月末に固定」をONに指定すると、サイクルが1か月以上の場合のみ、課金日を月末に固定できるようになりました
Backend/Frontend
NEW
定期課金のリンクフォームの作成時に使えるパラメーターのフィールドに"terminationMode"を追加しました
値に"on_next_payment"を指定すると、停止リクエストを送信した場合、次回の支払直前に決済データの変更が行われ、webhookが実行されます
送信を省略した場合、デフォルト値"immediate"が適用され、即時実行されます
このフィールドは、リンクフォームのみ有効です
Backend
UPDATE APIリクエストで、作成済みのリカーリングトークンを使い、商品(通常課金商品/定期課金商品)を指定した課金を行えるようになりました
Backend/Frontend
NEW リンクフォームで通常課金商品と定期課金商品商品を同時に指定し、合算して決済できるようになりました(ジェネレータには今後実装予定)
UPDATE 管理画面で、定期課金に登録された消費者のメールアドレスを編集できるようになりました
Backend/Frontend
NEW APIリクエストで定期課金を作成するとき、次回課金日を1ヵ月以上先に指定できるようになりました
UPDATE 管理画面の決済フォームのジェネレータで、銀行振込とコンビニ決済の支払い期限(日/時間)が指定できるようになりました(ウィジェット/インラインフォーム/リンクフォームURL)
UPDATE 管理画面の、店舗>決済フォーム>リンクフォーム設定の言語から「自動」(消費者のブラウザ設定に合わせた言語が自動で表示される設定)を指定できるようになりました
UPDATE ウィジェット/インラインフォームのパラメータ data-installment-plan と data-installment-qty は使用不可となりました
Backend/Frontend
NEW APIリクエストで定期課金を作成するとき、初回課金金額を選択する仕様に変更し、初回課金額0円 かつ 課金日を基準としたサイクルの定期課金を作成できるようになりました
UPDATE 管理画面の、一般設定>一般>通知>決済に「定期課金イベント発生時に通知」の項目を追加しました
TWEAK 管理画面の商品作成画面に、課金のシミュレーションを追加しました
Frontend
NEW 管理画面の、店舗>決済フォーム(リンクフォーム/ウィジェット/インラインフォーム)および通知メールテンプレートに、「中国語(簡体字)」を追加しました
Backend/Frontend
TWEAK 管理画面の、リンクフォーム作成画面とジェネレータ(ウィジェット/インラインフォーム)に、定期課金のシミュレーションを追加しました
UPDATE 管理画面の、リンクフォーム作成画面で、作成済のリンクの種類(通常課金/定期課金)を変更できるようになりました
NEW 管理画面の、ジェネレータを利用するとき、簡体字中国語を選択できるようになりました
TWEAK ウィジェット出力リクエスト時のパラメータで、課金の完了後に、元あったウィジェット表示用のボタンを消す設定が可能になりました
Backend
NEW APIリクエストで定期課金を作成するとき、リカーリングトークンを同時に作成できるようになりました
Backend/Frontend
TWEAK 管理画面でジェネレータを利用するとき、デフォルトのCVV認証をONにしました
UPDATE 決済フォームに表示する分割回数を、パラメータで指定できるようになりました(ウィジェット/インラインフォーム)
Backend
NEW Alipay+Online/Alipay Online/PayPayOnlineで、課金ごとのリダイレクトURLをAPIリクエスト時に指定できるようになりました
Backend
UPDATE
定期課金失敗後のリトライを「翌日固定」から「サイクル日数÷リトライ回数」に変更しました
これにより、定期課金のリトライ感覚を任意で設定できるようになりました
Backend/Frontend
FIX リンクフォームで発生していた、コンビニ決済の不具合を修正しました
UPDATE 管理画面のリカーリングトークン情報の画面から、課金を行うことができるようになりました
Backend/Frontend
NEW 管理画面のHTMLジェネレータで、商品コードを利用できるようになりました
FIX APIリクエストで仮売上の分割決済をキャプチャする際に、分割のリクエストが送信されるように修正しました
FIX モバイルのAlipay Online決済の不具合を修正しました
Backend
FIX リンクフォームでの、Paidy決済の不具合を修正しました
UPDATE セキュリティコード認証(カード情報登録)で発生した1円オーソリに対し、キャプチャするボタンを管理画面で非表示にし、APIでも受け付けないよう変更しました
Backend/Frontend
UPDATE APIやフォーム類で、分割払いと回数指定定期課金が併用して利用できるようになりました
UPDATE APIやフォーム類で、定期課金で指定できるサイクルに選択肢が増えました
UPDATE 上記が、管理画面のジェネレータでも指定できるようになりました
UPDATE コンビニ決済申込の通知メールで、支払期限の時刻まで表示するようになりました
UPDATE 定期課金の次回課金日を999日後まで指定できるようになりました
Backend/Frontend
NEW 管理画面上で、ウェブフックIDが確認できるようになりました
FIX 回数指定タイプの、定期課金の不具合を修正しました
Frontend
NEW 管理画面のURLコード生成ジェネレータで、自動リダイレクト設定ができるようになりました(リンクフォーム)
NEW 管理画面で、決済のメタデータに商品名が追加されました
Backend
NEW 加盟店の返金可否を設定できるようになりました(プラットフォーム単位)
Frontend
NEW 管理画面で、ウェブフックの通知履歴が過去1か月分確認できるようになりました
Backend
FIX Alipay+Onlineの決済で予期しないエラーが発生する不具合を修正しました
Frontend
TWEAK 管理画面で、課金IDなどの各IDを短縮表示するようになりました
NEW ウィジェットで、カスタム項目が利用可能になりました
Backend/Frontend
FIX CSV課金で発生した不具合を修正しました
FIX インラインフォームの不具合を複数修正しました
Backend/Frontend
UPDATE 管理画面の決済情報検索で、トランザクショントークン作成時に付与したメタデータを検索キーに指定できるようになりました
Backend/Frontend
NEW 管理画面で、決済情報のCSVデータがダウンロード可能になりました
UPDATE ウィジェット/インラインフォームで、タグ記述による商品コードの指定が可能になりました
UPDATE セキュリティコード認証を行った際にwebhookを送信できるようになりました
実装方法によって、リダイレクト(遷移)先URLの指定方法が異なります。
以下を参照してください。
実装方法 | リダイレクト先URLの指定方法 |
---|---|
リンクフォームの設置 |
または
|
ウィジェット / インラインフォームの設置 |
かつ
※詳細は、利用ガイド『設置 – (HTML/JavaScript)』を参照してください |
APIでの連携 |
パラメータを指定 ※詳細は、APIリファレンス『課金 – CREATE』を参照してください |
使用中のアプリトークンに、サイトURLのドメインが指定されていない場合に表示されるエラーです。
ウィジェットやインラインフォームを利用する場合は、アプリトークンへのサイトURLのドメインの入力が必須です。
(APIやSDKを利用する場合は不要です。)
サイトURLのドメインを指定したアプリトークンを使用して、再度お試しください。
アプリトークンへのサイトURLのドメインの指定手順は、以下の通りです。
①管理画面>アプリトークン の「新規作成」ボタンをクリック
②利用店舗の指定 および モードの選択を行う
③ドメインの「追加」ボタンをクリックし、サイトURLのドメインを入力
例)サイトURLが「https://www.univapay.com/」の場合、ドメインは「www.univapay.com」
④右下「作成」ボタンをクリック
以下要因の可能性があります。
すべての条件に当てはまらない または 修正しても改善しなかった場合は、サポートデスク(ips-support@univapay.com)までお問い合わせください。
処理結果は、ウィジェットのパラメータを追加することで、リダイレクト先のURLに追加される形式で即時に受け取れます(コールバック)。
コールバックを活用して、加盟店さま側でエラー内容ごとにウェブサイトの挙動を変える実装を行ってください。
また、ウェブフック および APIへのリクエスト(課金のGET処理)で処理結果を受け取り、ウェブサイトで次の処理を実行したい場合等に活用できます。
詳細は、それぞれ以下ページをご確認ください。
本ページは、銀行振込に対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提に説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、銀行振込の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(銀行振込のみ表示させたい場合) |
---|---|---|
ウィジェット (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 ) |
課金オブジェクトに対する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
ここでは、本サービスで提供するシステム通知「ウェブフック」ついて説明します。
レスポンスで返却されるフィールドおよび値の詳細は、以下を参照してください。
その他data
内のフィールドおよび値は、イベントごとのリソースタイプによって異なります。こちらから確認して下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | 半角英数(UUID) | ウェブフックを識別するためのUUID |
merchant_id | 半角英数(UUID) | ウェブフックが帰属する「加盟店」のUUID |
store_id | 半角英数(UUID) | ウェブフックが帰属する「店舗」のUUID |
triggers | 配列(テキスト) | ウェブフック送信契機となるイベント (イベント名の一覧を参照) 複数指定可能 |
url | 半角英数(URLとして有効なもの) | ウェブフックの送信先 |
auth_token | 半角英数 | ウェブフック実行時にヘッダーに含める認証用の値 authorizationというフィールド名を利用 |
active | 真偽 | 作成時の有効性true で有効、false で無効 |
created_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの作成日 |
updated_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの更新日 |
{
"id": "11ef1288-37b0-2f15-a097-d3a0d4243d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
{
"id": "11ef1288-37b0-2f15-a097-d3a0d7843d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "failed",
"error": {
"code": 309,
"message": "Test charge failed purposely",
"details": "Test charge failed purposely"
},
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
ウェブフックオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
ウェブフックIDを指定しない場合、クエリパラメータでフィルタリングすることで条件に当てはまるウェブフックの一覧を取得します。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{webhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": true,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-05-22T08:15:49.488255Z"
}
ウェブフックオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
通知失敗などによって停止したウェブフックを再開処理する場合はこのリクエストをご利用ください。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{wenbhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
active | boolean | ウェブフックのステータスtrue もしくはfalse |
url | string | ウェブフック通知先のURL |
triggers | string | イベントのトリガー 詳細はこちら |
auth_token | string | Authorizationヘッダー |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"active": "false"}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": false,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-06-25T09:41:56.235574Z"
}
本サービスにはいくつかの制限があります。
同一のグローバルIPアドレスから決済を連続で失敗した場合、そのIPアドレスに対して12時間の制限をかけます。
1つの加盟店で制限されたIPアドレスは他加盟店でも制限され、制限のかかったIPアドレスから管理画面にアクセスすると、
管理画面>店舗>リンクフォーム設定上にエラーが表示されます。
1か月間の課金額より返金額が上回る場合は返金不可の制限をかけます。
海外で発行されたカードでの決済を拒否します。
※管理画面から制限の有無が設定可能です。
短時間で大量のリクエストをした場合に制限をかけます。
詳細はAPI制限のページを確認してください。
トランザクショントークンオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
トランザクショントークンを作成した後はトランザクショントークンIDを指定して課金 / 定期課金を行ってください。
{secret}
部分){jwt}
部分)トランザクショントークン – CREATE リクエストは、クレジットカード情報を加盟店サイト内に入力させ、本サービスのAPIに送信します。
このリクエストを行うには PCI DSS に準拠している必要があります。
PCI DSSに準拠していない場合はこのリクエストを行えないことに注意してください。
PCI DSSに準拠していてトランザクショントークン – CREATE リクエストの利用を希望する場合は、当社までご連絡ください。
クレジットカード以外の決済手段の場合は、当社へ連絡不要でトランザクショントークン – CREATE リクエストを行えます。
curl --request POST
--url https://api.univapay.com/tokens
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
payment_type | string | card (クレジットカード決済), paidy (Paidy決済), online (オンラインモバイル決済)※, konbini (コンビニ決済), bank_transfer (銀行振込決済)のいずれか※ online はワンタイムトークンのみ指定可能 |
type | string | トークンの種類を参照 特定の支払い手段により種類が制限される場合あり 繰り返しに設定されていて、アカウントに無限に課金可能なトークンを作成する権限がない場合は、 usage_limit パラメーターを指定する必要あり |
usage_limit | string | このトークンがリカーリングトークンの場合に使用できる頻度 無限に課金可能なリカーリングトークンを作成する権限がある場合は空白可 |
email※ | string | メールアドレス ※payment_typeがonlineのみ任意・それ以外は必須 |
ip_address※ | string | 消費者のデバイスのIPv4アドレス ※we_chat_online(web, http_get)の場合 |
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": "2034",
"cvv": "123",
"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
本ガイドは、銀行振込における各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"
から確認できます。
このページでは、本ドキュメントで使用している用語の意味を説明します。
※あくまで本ドキュメント内における用語の意味です。
用語 | 説明 |
---|---|
アクワイアラ | 加盟店を増やすことを目的としたカード会社のこと。 国際ブランドである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コードやバーコードを読み取って行う決済方法のこと。 |
トランザクショントークンを作成して消費者の決済情報を収集した後、決済を完了するために課金(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 | 処理日時 |
決済など各処理をテストモードで行うことで、通知メールの文面および挙動を確認できます。
※請求名など、本番モードの時にしか反映されないパラメータもあります。
管理画面>通知メールテンプレート の「新規作成」ボタンからメールテンプレートを作成することで、通知メールの文面を自由に変更できます。
メールテンプレートを作成していない場合は、デフォルトの文面で通知メールが送信されます。
デフォルトの文面は、利用ガイド『テンプレートの種類』のページを参照してください。
管理画面>一般設定>一般>通知 の「メールアドレス」に任意のメールアドレスを入力することで、加盟店さまに届く通知メールの宛先を指定できます。
指定していない場合、管理画面のログイン用メールアドレスへ通知メールが送信されます。
(その場合は、管理画面右上の加盟店名をクリック>ユーザー設定 の「メールアドレス」からログイン用メールアドレスを変更すると、通知メールの宛先も変更されます。)
管理画面>一般設定>通知 から、処理ごとに通知メールの挙動を設定できます。
通知あり / なしは、ボタンの有効 / 無効によって設定してください。
※設定を変更後、ページ下部の「保存」ボタンを押してください
以下手順によって、商品ごとにメールの文面を分けることができます。
管理画面>商品 から商品を選択後、メタデータの「追加」ボタンを押し、「値」にメールで表示させたい文章を追加してください。「キー」は任意の文字列を指定してください。
例)キー:商品Aの発送日,値:商品Aの発送はお支払の3日後です。
管理画面>通知メールテンプレート から、文章を追加したいメールテンプレートを選択(作成していない場合は「新規作成」ボタンから作成)し、メタデータの「キー」を指定したパラメータを記載してください。
(メタデータの「キー」を指定することで、課金メタデータのうち、表示させたい「値」のみを表示できます。)
また、パラメータの末尾に「:- (コロン,ハイフン,空白)」を入力してください。
(パラメータの語尾に「:-(コロン,ハイフン)」を入力すると、その後ろに入力した文字列が、該当のメタデータが存在しない場合に表示される「デフォルト値」として設定されます。)
デフォルト値を空白に指定することで、該当のメタデータが存在しない場合はメールへ反映されません。
例)${charge_metadata.商品Aの発送日:- }
テストモードで各処理を行って、通知メールの文面を確認してください。
商品を指定した処理時は通知メールの内容が商品ごとに分かれていて、商品を指定していない処理時はメールに何も表示されなければ完了です。
例)商品Aを指定して課金処理を行った場合、通知メールの文面に「商品Aの発送はお支払の3日後です。」と表示される / 商品を指定せず課金処理を行った場合、通知メールの文面何も表示されない
以下のどちらかのパラメータを、商品名を表示させたい通知メールテンプレート内に記載してください。
商品名以外にも、${charge_metadata.(キー)}や${token_metadata.(キー)}のように表示させたいメタデータのキーを指定すると、その値のみを通知メールの文面に表示させることができます。
※リカーリング課金時やCSV課金時、リカーリングトークン作成時、カード情報変更時は${charge_metadata.(キー)}を指定してもメタデータが表示されません。${token_metadata.(キー)}をご利用ください。
商品を指定しない処理時に表示させたくない場合は、下記のように「デフォルト値」を空白に指定してください。
以下のイベントが発生した場合、各種内容の通知メールが送信されます。
※「モード設定」や「基本設定」が無効な場合は送信されません。
ここでは、本サービスで発生するエラーについて説明します。
本サービスで発生するエラーは、「APIリクエストエラー」と「ペイメントエラー」に分けられます。
APIリクエストエラーは、何らかの理由でAPIの呼び出しが正しく行えなかったことを表します。
ペイメントエラーは、API呼び出しが正常に行えたが、カード会社やセンター等、外部のシステムでの処理が失敗した場合に発生します。
多くの場合、以下のJSONの形式で詳細なエラー情報が提供されます。
項目 | 意味 | 記法 | 代表例 |
---|---|---|---|
status | レスポンスの種別 | 半角英 | error |
code | エラーコード | 半角英 アッパースネークケース (UPPER_SNAKE_CASE) | 表を参照 |
errors | エラー詳細をネスト | ||
field | エラー原因となったパラメータのフィールド名 (errorsにネストされたエラー詳細) | ローワースネークケース (lower_snake_case) | |
reason | ネストされたエラーの詳細 (errorsにネストされたエラー詳細) | アッパースネークケース (UPPER_SNAKE_CASE) または英文で上限や下限の提示 |
このエラーは APIリクエストが正常に受け付けられなかったことを意味し、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。
HTTP ステータス | 内容 |
---|---|
400 Bad Requests | リクエストの内容に問題があります 詳細はボディのエラー情報に記載 |
401 Unauthorized | 認証ができませんでした Authorization ヘッダが無いか、内容に問題あり |
403 Forbidden | リクエストを実行する為の権限なし |
404 Not Found | 指定されたパス、もしくはリソースIDが存在しない |
429 Too Many Requests | レート制限の上限に達した |
500 Internal Server Error | 本サービスのシステム内部で予期しないエラーが発生 この場合、処理の一部は実行されている可能性があります |
HTTP/1.1 429 Too Many Requests
...
Content-Length: 0
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "NON_UNIQUE_ACTIVE_TOKEN"
errors: []
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "VALIDATION_ERROR"
errors: [{
field: "card_number"
reason: "INVALID_CARD_NUMBER"
}]
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "CHARGE_AMOUNT_TOO_LOW"
errors: [{
reason: "Charge amount must exceed 100"
}]
}
JSON形式の詳細なエラー情報が提供される場合、エラーコードは以下のような内容を意味します。
HTTPステータス | エラーコード | 内容 |
---|---|---|
400 | ALREADY_CAPTURED | 対象の課金は既にキャプチャ済みか、オーソリが完了していません。 |
400 | AUTH_NOT_SUPPORTED | オーソリに対応したゲートウェイが設定されていません。 |
400 | CANCEL_NOT_ALLOWED | この支払い方法はキャンセルに対応していません。もしくは対象の課金のステータスはキャンセルできない状態です。 詳細はキャンセルを参照してください。 |
400 | CANNOT_CHANGE_CANCELED_SUBSCRIPTION | キャンセルされた定期課金は変更することはできません。 |
400 | CANNOT_CHANGE_TOKEN | この状態の定期課金のトランザクショントークンは変更できません。トランザクショントークンの変更可能な条件は定期課金の更新を参照してください。 |
400 | CANNOT_REFUND_UNSUCCESSFUL_CHARGE | successful 以外の状態の課金は返金できません。 |
400 | CAPTURE_AMOUNT_TOO_LARGE | キャプチャの金額がオーソリ時の金額より大きいです。 |
400 | CARD_BRAND_NOT_SUPPORTED | 指定されたカードブランドに対応したゲートウェイが設定されていません。 |
400 | CARD_COUNTRY_NOT_SUPPORTED | 指定されたカード発行国に対応したゲートウェイが設定されていません。 |
400 | CARD_PROCESSING_DISABLED | 支払い方法でカードが無効になっています。 |
400 | CHARGE_TOO_QUICK | 制限つきのリカーリングトークンまたは同一カードに対して、30秒以内※に同一金額で複数の課金を作成しようとしました。 ※APIからリクエストを行っている加盟店さまは、本エラーの発生時間を変更できます。詳細は冪等なリクエストを参照してください。 |
400 | CONVENIENCE_PROCESSING_DISABLED | 支払い方法でコンビニ決済が無効になっています。 |
400 | CURRENCY_MUST_MATCH_CHARGE | 返金時の通貨は課金時の通貨と同じである必要があります。 |
400 | CVV_REQUIRED | CVV の提供が必要です。 |
400 | CVV_AUTHORIZATION_NOT_COMPLETED | CVV(セキュリティーコード)認証に失敗しました。 |
400 | FILE_INVALID_TYPE | アップロードされたファイルの MIME タイプが正しくありません。 |
400 | FILE_MAX_SIZE_EXCEEDED | アップロードされたファイルのサイズが大きすぎます。 |
400 | FORBIDDEN_IP | リクエスト元のIPアドレスから割り出された国が、設定された許可する国に含まれていません。 |
400 | INSTALLMENT_MAX_PAYOUT_PERIOD_EXCEEDED | 分割払いの支払期間が、設定された最大の支払期間を超過しています。 |
400 | INSTALLMENT_PAYMENT_TYPE_NOT_ALLOWED_FOR_PLAN | 分割払いの支払い方法として許可されていない支払い方法です。 |
400 | INSTALLMENT_INVALID_CYCLES_COUNT | 利用できない分割回数です。 |
400 | INSTALLMENT_INVALID_PLAN | サポートされていない分割支払いプランです。 |
400 | INVALID_PLATFORM | プラットフォームの指定が正しくありません。 |
400 | INVALID_TOKEN_TYPE | トランザクショントークンの種類が正しくありません。 |
400 | INVALID_QR_SCAN_GATEWAY | QRコード決済のゲートウェイが設定されていないか有効ではありません。 |
400 | LAST_NAME_REQUIRED | カード名義にスペースで区切られた苗字が必要です。 |
400 | LIVE_MODE_NOT_ENABLED_WHEN_UNVERIFIED | 本番モード(live )を使用するにはアカウントの審査の完了が必要です。 |
400 | NO_DIRECT_CURRENCY_GATEWAY | 通貨の変換をせずに利用可能なゲートウェイが設定されていません。 |
400 | NO_GATEWAYS_AVAILABLE | 利用可能なゲートウェイが見つかりません。 |
400 | NO_TEST_CARD_IN_LIVE_MODE | 本番モード(live )でテストカードは使用できません。 |
400 | NON_SUBSCRIPTION_PAYMENT | 課金の作成にワンタイムトークンもしくはリカーリングトークンを指定してください。 |
400 | NOT_ONE_TIME_TOKEN | ワンタムトークン以外はサポートされていません。 |
400 | NOT_SUBSCRIPTION_TOKEN | 定期課金トークンもしくはリカーリングトークンを指定してください。 |
400 | PARTIAL_CAPTURE_NOT_SUPPORTED | 部分的なキャプチャはサポートされていません。 |
400 | PAYMENT_EXPIRATION_EXCEEDS_PERIOD | 支払い期限日時がサイクルを超過しています。 |
400 | QR_PROCESSING_DISABLED | 支払い方法でQRコードが無効になっています。 |
400 | RECURRING_TOKEN_DISABLED | トランザクショントークンが無効になっているか、アカウントにリカーリングトークンを使用する権限がありません。 |
400 | RECURRING_USAGE_LIMIT_REQUIRED | usage_limit パラメータが必要です。 |
400 | RECURRING_USAGE_REQUIRES_CVV | CVV の提供が必要です。 |
400 | REFUND_EXCEEDS_CHARGE_AMOUNT | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えた場合 ※全額返金成功の課金に再度返金処理をした場合 |
400 | REFUND_NOT_ALLOWED | 返金に対応していない支払い方法、もしくは返金が許可されませんでした。 |
400 | REFUND_EXCEEDS_SALES | 返金の金額が上限を越えたため返金できません。 |
400 | REFUND_NOT_WITHIN_BOUNDS | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えていて、かつ一部返金の1回分の返金金額が課金金額を超えた場合 |
400 | RESOURCE_LIMIT_REACHED | リソース制限の上限に達しました。 |
400 | SUBSCRIPTION_ALREADY_ENDED | 定期課金は既に終了しています。 |
400 | TOKEN_FOR_WRONG_STORE | トランザクショントークンのストアが定期課金のストアと異なります。 |
400 | TRANSACTION_ALREADY_PROCESSED | 使用済みのトランザクショントークンは指定できません。 |
400 | TRANSACTION_TOKEN_EXPIRED | トランザクショントークンの有効期限が切れました。 |
400 | USAGE_LIMIT_NOT_APPLICABLE | usage_limit は指定できません。 |
400 | VALIDATION_ERROR | リクエスト内容のパラメータにバリデーションエラーがあります。詳細は errors を参照してください。 |
400 | CHARGE_AMOUNT_TOO_HIGH | 課金金額が課金最大額より超過しています。 |
401 | AUTH_HEADER_MISSING | Authorization ヘッダが指定されていません。 |
401 | EXPIRED_LOGIN_TOKEN | ログイントークンの有効期限が切れました。 |
401 | INVALID_APP_TOKEN | アプリケーショントークンの指定が正しくありません。 |
401 | INVALID_CREDENTIALS | 認証情報が正しくありません。 |
401 | INVALID_DOMAIN | リクエストされた Origin ヘッダのドメインは、指定されたアプリケーショントークンのドメインに登録されていません。 |
401 | INVALID_LOGIN_TOKEN | ログイントークンが無効です。 |
401 | DIRECT_CARD_TOKEN_CREATION_DISABLED | PCIDSSに準拠していないためカード情報を送信できません。 |
403 | CARD_LOCKED | このカードは一定期間内の失敗回数がしきい値を超えた為、一時的にロックされています。 30分以内に5回以上失敗で、2時間制限をかけます。 |
403 | INVALID_PERMISSIONS | アプリケーショントークンの種類が正しくないか、アカウントの権限が不足しています。 |
403 | INSTALLMENT_PROCESSOR_INITIAL_AMOUNTS_NOT_SUPPORTED | このゲートウェイでは初回金額の指定はサポートされていません。 |
403 | OUTDATED_APP_TOKEN | アプリケーショントークンのバージョンが古いです。新しくアプリケーショントークンを作成しなおしてください。 |
403 | TEST_CARD_CANNOT_BE_BANNED | テストカードは禁止できません。 |
409 | IDEMPOTENCY_KEY_CONFLICT | 冪等性が保証されたリクエストの際に、指定された冪等性キーが以前に異なるAPIやメソッドで使用されています。 |
409 | NON_UNIQUE_ACTIVE_TOKEN | アクティブなトランザクショントークンが既に存在します。 |
409 | WEBHOOK_URL_EXISTS | 指定されたURLは既に登録されています。 |
500 | COULD_NOT_REFRESH_AUTH | ログイントークンの更新に失敗しました。サポートへお問い合わせください。 |
500 | DB_ERROR | 内部データベースエラー。サポートへお問い合わせください。 |
500 | FILE_UPLOAD_ERROR | ファイルのアップロードに失敗しました、サポートへお問い合わせください。 |
500 | IMPROPER_AUTH | オーソリの状態が正しくありません。サポートへお問い合わせください。 |
500 | TIMEOUT | 内部処理でタイムアウトが発生しました。サポートへお問い合わせください。 |
500 | UNABLE_TO_GET_IDEMPOTENT_RESULT | 冪等性キーに該当するキャッシュは見つかった為、リクエストされた内容は処理しませんでしたが、以前の処理結果のキャッシュの取得に失敗しました。 |
500 | UNKNOWN_ERROR | 予期しないエラーです。サポートへお問い合わせください。 |
503 | SERVICE_UNAVAILABLE_TRY_AGAIN | サービスが一時的に利用できません。時間を置いて再試行してください。 |
504 | NO_GATEWAY_AVAILABLE_TO_PROCESS_THE_REQUEST | このリクエストは接続先システムで対応していせん。サポートへお問い合わせください。 |
課金(Charge)や返金(Refund)などのリソースは、リソースの作成、つまりリクエストの受付に成功した場合でも、実際にゲートウェイでの処理に失敗した場合等にエラーが発生する場合があります。この場合、課金や返金の状態は failed
になり、error
フィールドに以下のデータが設定されます。
code
(number) – 課金が失敗またはエラーになった理由を表すエラーコードmessage
(string) – 課金が失敗した理由detail
(string) – 課金が失敗した詳細理由エラーコードは、以下の通りです。
コード | 内容 |
---|---|
301 | カード番号のエラーです。 |
302 | 不正な有効期限(月)です。 |
303 | 不正な有効期限(年)です。 |
304 | 有効期限切れです。 |
305 | セキュリティーコードに関するエラーです。 |
306 | カードが拒否されました(認証審査エラー) 失敗理由についてはカード発行会社へお問い合わせください。 |
307 | 不正なカードです。 |
308 | このカードはカード会社から承認が下りていません。詳細は消費者よりカード会社へお問い合わせください。 |
309 | 一般エラーが発生しました。詳細情報は管理画面で確認できます。 |
310 | 消費者データが不正です(無効なリクエストデータ)。 加盟店のリクエストに誤りがある可能性があります。 |
311 | 短期間に同一カードでの課金が多すぎます。しばらく待ってから再試行してください。 |
312 | この課金はキャンセルできません。 |
313 | オーソリの期限が切れました(課金のキャプチャ時)。 |
314 | このカードは盗難されたものとして報告されたか、発行会社によって無効化されました。加盟店は利用者のこのカードを差し押さえてください。 |
315 | カード発行会社へお問い合わせください。 |
316 | 名義人の姓は必須です。 |
317 | 部分的なキャプチャはサポートされていません。 |
318 | 部分的な返金はサポートされていません。 |
319 | 不正行為の疑いがあります(セキュリティ制限)。 |
320 | 銀行側のシステムでエラーが発生しました。 |
321 | ダイナミックディスクリプタはサポートされていません。 |
322 | バーコード/QRコードが無効です。 |
323 | バーコード/QRコードの有効期限が切れています。 |
324 | このバーコード/QRコードは既に処理済みです。 |
325 | このバーコード/QRコードは現在処理中です。 |
326 | リスクプロファイルが高いため拒否されました。 |
327 | 決済期限(タイムアウトは5分)が切れています。 |
328 | 復帰に失敗しました。手動による介入が必要です。 |
329 | 返金に失敗しました。 |
330 | 残高が不足しています。 |
331 | メタデータフィールドの値が無効または不足しています。 |
332 | 国境を越えた取引は許可されていません:身分証明書がありません。 |
333 | 国境を越えた取引は許可されていません:電話番号がありません。 |
334 | 国境を越えた取引は許可されていません:承認されていない支払方法です。 |
335 | 国境を越えた取引は許可されていません:名前がありません。 |
336 | この支払方法の決済制限を超えました。 |
337 | この加盟店の決済制限を超えました。 |
338 | 決済情報が見つかりません。 |
339 | 決済情報が重複しています。 |
340 | この消費者のリテールQRアカウントはゲートウェイによって拒否されました。 |
341 | この加盟店には、このゲートウェイに必要な情報が不足しています。 |
342 | 国境を越えた取引は許可されていません: 承認されていない通貨です。 |
343 | ゲートウェイでサーバーエラー(接続先システムエラー)が発生したため、支払いを処理できませんでした。しばらく待ってから再試行してください。 |
344 | 選択した支払方法は、ゲートウェイにより一時的に利用できません。 |
345 | 支払いは既にキャンセルされています。 |
346 | システムが遅延したため、支払い処理に時間がかかりキャンセルされました。しばらく待ってから再試行してください。 |
355 | 指定された支払い区分(分割回数など)が非対応のカードです。 |
コード | 内容 |
---|---|
500 | リクエストを実行したところ、前処理エラーが発生しました。正しい入力が行われたことを確認し、詳細はエラーメッセージを参照してください。 |
501 | 内部エラーが発生しました。サポート担当者にご連絡ください。 |
502 | リクエストに対してレスポンスがタイムアウトとなりました。お時間おいて再度お手続きお願い致します。 |
税関申告リソースは、失敗するとエラー情報を返すことがあります。税関申告エラーには、以下の情報が含まれます。
code
(number) – エラーコードを照合するために使用できる一意のキーmessage
(string) – エラーの簡単な説明detail
(string) – より詳細なエラーメッセジがった場合の詳細コードの定義は以下の表のとおりです。
コード | 内容 |
---|---|
601 | 本サービスでシステムリリースされたエラーが発生しましたが、具体的な情報はdetail をご覧ください。 |
602 | ペイメントプロセッサーが送信されたリクエストを拒否しました。具体的な情報はdetail をご覧ください。 |
603 | 提出されたお客様の身元確認は、税関当局によって拒否されました。 |
604 | 必要なお客様のID情報が加盟店から提出されていなかった。 |
イシュアトークンとは、オンライン決済事業者から提供された消費者が決済を行うための情報です。
各決済事業者での支払い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>
管理画面>ウェブフック から、「新規作成」ボタンを押すと設定できます。
各項目の設定方法は以下を参照してください。
※設定後、ページ下部の「作成」ボタンを押してください
ウェブフック失敗により、自動停止された可能性があります。
以下の場合、ウェブフックを自動で停止します。
HTTPレスポンス エラーコード
|
処理
|
---|---|
3xx
|
リトライせず、失敗後即停止する
|
4xx、500、501、502
|
初回含む最大10回のリトライを行い、最大回数に達すると停止する
|
停止後はリトライされないため、もう一度有効化したい場合は管理画面から以下手順で設定する必要があります。
①管理画面>ウェブフック から、「すべて」または「停止」のウェブフック一覧を表示
②有効化したいウェブフックを選択
③画面左下の「有効化」ボタンを押す
ウェブフックの失敗時および停止時にメール通知が必要な場合は、管理画面>一般設定>一般>通知 の「ウェブフック失敗時の通知」「ウェブフック利用不可の通知」を有効にしてください。
失敗した理由は、管理画面>ウェブフック>対象のウェブフックを選択>最近のイベント から対象のトリガーを選択し、「error_message」から確認できます。
例)error_message:Request timeout to www.triple-farm.com after 3 seconds
……指定されたURLに対してウェブフック通知した際に、3秒以内にレスポンスがない場合、当社ではタイムアウトによって「失敗」と判定します。そのため、非同期処理によって3秒以内にレスポンスを返却する実装が必要です。
※あくまで当社の判定なため、加盟店さまへは結果通知が届いてる場合があります
ウェブフック失敗後の挙動は、利用ガイド『ウェブフック』を参照してください。
ウィジェットは、消費者がカード情報を入力するためのインターフェイスで、ポップアップウインドウとして表示されるタイプのフォームです。
ウィジェットは、以下の役割を果たします。
消費者に、希望の支払い方法をクリック(またはタップ)で選択させます。
この選択画面で表示される選択肢は、ウィジェットのタグまたはコードの記述内容に依存します。なお、支払い方法を単一に指定した場合、この選択画面は省略されます。
選択された「支払い方法」毎に予め設定されている必須情報を、消費者に入力させます。
入力欄はウィジェットのタグまたはコードの記述内容によって、追加することも可能です。
詳しくはこちら
選択された「支払い方法」毎に、各種処理を行います。
一部、赤字※印の項目は申込完了後、消費者が支払いを行うのを待機します。
誤って「決済完了」とみなさないよう、くれぐれも注意してください。
支払い方法 | 処理 | 認証後の処理 |
---|---|---|
クレジットカード | カード会社に対し、要求された処理(オーソリ/キャプチャ)で認証 | 認証済みのカード情報をトークン化して決済処理 以降、以下を<共通処理>と記載: 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 インラインフォームで利用可 | 全て |
コンビニ決済の申込後、通知メールの情報を確認してコンビニで入金すると、決済が完了する流れです。
当社決済フォームを利用した場合の消費者の支払いフローは、下記の画像付き資料を参照してください。
管理画面>決済 から、申込や入金の履歴を確認できます。
「ステータス」は決済履歴一覧および詳細画面の「課金詳細」から確認できます。
課金ステータス | 状態 |
---|---|
処理待ち | 決済フォームから申込が完了しているが、消費者から入金されていない もしくは入金確認中 |
成功 | 各コンビニエンスストアで消費者の入金が完了した |
キャンセル | 加盟店さま側で申込を取り消した状態 |
失敗 | 決済フォームでの申込時に何かしらのエラーが発生した もしくは入金期限を過ぎた |
テストモードでは本番モードと挙動が異なります。
テストモードで決済を行った場合、申込完了の直後は「処理待ち」のステータスになります。
その約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}として内容が表示されます。 各コンビニエンスストアでの支払い番号などの情報を含んでいて、支払先ごとに内容を編集できます。 |
定期課金オブジェクトのCREATEリクエストには以下が必要です。(括弧内は入力箇所)
パラメータを指定して様々な種類の定期課金が作成可能です。
{secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金有効のトランザクショントークンID |
amount | number | 課金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
initial_amount | number | 定期的な金額と異なる場合は初回に請求する金額 |
period※ | string | ※cyclical_periodを利用しない場合 定期課金が請求される頻度 daily , weekly , biweekly , monthly , quarterly , semiannually , annually のいずれかこのフィールドが入力されている場合cyclical_periodは利用不可 分割払いの場合は monthly を指定 |
cyclical_period※ | string (ISO-8601 Duration) | ※periodを利用しない場合 課金を行う詳細な頻度(1日間以上) 例:P3D,P2M,P2M等 このフィールドが入力されている場合 period は利用不可 |
schedule_settings.start_on | string (ISO-8601) | 以降のすべての支払いがで開始される日付(年月日形式 )時間は zone_id で宣言されたタイムゾーンの午前7時※に固定※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時 |
schedule_settings.zone_id | string (IANAタイムゾーン) | 定期課金が請求されるタイムゾーン 例:Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | period がmonthly で指定されたstart_on の日付が月末日である場合、以降は月の最終日に料金を請求例: start_on が2018-06-30 の場合、次の請求はtrue の場合は2018-07-31 、false の場合は2018-07-30 |
schedule_settings.termination_mode | string | 定期課金の停止リクエストimmediate , on_next_payment のいずれかデフォルト値: immediate immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了 |
installment_plan.plan_type | string | installment_plan を指定した定期課金は全てクレジットカード会社による分割払いになり、revolving :リボ払いfixed_cycles :installment_plan.fixed_cycles で指定した回数の分割払いrevolving , fixed_cycles のいずれか |
installment_plan.fixed_cycles※ | number | ※plan_type がfixed_cycles の場合クレジットカード会社での分割払いの回数 指定可能な値:3,5,6,10,12,15,18,20,24 ※上記以外の回数はエラー |
first_charge_authorization_only | boolean | 初回決済時に行う処理true :オーソリ(仮売上)false :キャプチャ(実売上)デフォルト値: false |
first_charge_capture_after | string (ISO-8601 Duration) | first_charge_authorization_only がtrue の場合、自動でキャプチャを行う日指定可能な値:1,2,3,4,5,6 ※上記以外の回数はエラー 例:3日後を指定する場合は first_charge_capture_after:"P3D" |
subscription_plan.plan_type | string | 回数指定の定期課金を行う場合、fixed_cycles , fixed_cycle_amount のいずれか |
subscription_plan.fixed_cycles※ | number | ※subscription_plan.plan_type が fixed_cycles の場合定期課金を行う回数 |
subscription_plan.fixed_cycle_amount※ | number | ※subscription_plan.plan_type が fixed_cycle_amount の場合定期課金の1回当たりの支払い金額 |
schedule_settings.retry_interval | string (ISO-8601 Duration) | 定期課金の支払いが失敗したときにリトライを行う間隔 ※1日以上かつ定期課金のサイクルよりも短い必要あり 例:P5Dで失敗後5日毎にリトライ |
metadata | json | 定期課金に紐づけられたメタデータ |
curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"period": "daily",
"metadata":{
"ServiceId": 78435694
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "unverified",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9aad-7470-8314-03ee2f51b9cd",
"due_date": "2024-06-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:28.627023Z",
"updated_on": "2024-06-26T01:51:28.627023Z",
"retry_date": null
}
}
課金オブジェクトに対する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>
定期課金とは、本サービスにより定期的かつ自動的に課金することを指します。
オブジェクト名はsubscription
です。
定期課金の作成(create
)リクエストはトランザクショントークンを用いて作成されます。
定期課金は、UPDATE
やCANCEL
のリクエストで、いつでも停止できます。
ウェブフックを用いて、定期課金イベントの通知を受け取ることを推奨します。
SUBSCRIPTION_PAYMENT
イベントSUBSCRIPTION_FAILED
イベントSUBSCRIPTION_CANCELED
イベントで、それぞれ通知します。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 定期課金のユニークID 作成時に自動付与 |
store_id | string (UUID) | 登録された「店舗」のユニークID 契約時に自動付与 |
transaction_token_id | string (UUID) | 事前に作成したトランザクショントークン |
amount | number | 課金額 |
currency | string (ISO-4217) | 通貨 例:日本円はJPY |
amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
initial_amount | number | 初回の課金 ※ CREATE 時に未指定だとamount を参照 |
initial_amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
schedule_settings.start_on | string (ISO-8601) | 2回目の課金日 指定日のタイムゾーンの07:00に実行 ※ CREATE 時に指定可能 |
schedule_settings.zone_id | string (IANA Timezone) | タイムゾーン 例:日本は Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | 月末固定の指定が、されている(true )か否(false )か |
schedule_settings.retry_interval | 半角英数 | 定期課金が失敗したときのリトライ間隔 存在し得る値(意味): PxD (x日)PxW (x週間)PxM (xか月) |
schedule_settings.termination_mode | 半角英 | 定期課金の停止リクエストを受理したとき、実際に自動課金のステータスをsupended (一時停止)に変更するタイミング指定可能な値(意味): immediate (即時)on_next_payment (次回課金日) |
status | 半角英 | 定期課金のステータスunverified (初回課金の待機中)unconfirmed (初回課金に失敗)canceled (永久停止:リクエストで移行し再開不可)unpaid (リトライ待ち)current (継続中)suspended (一時停止:管理画面で「一時停止」ボタンを押下、リトライ回数の超過、リクエストのいずれかで移行)completed (指定分完了:再開可) |
metadata | メタデータ ※ CREATE ,UPDATE 時はネストで任意のフィールドと値を指定可能 | |
mode | 半角英 | 決済のモードlive (本番)またはtest (テスト) |
created_on | ISO-8601 | データの作成日時 |
period | 半角英 | 指定した定期課金の間隔 存在し得る値(意味): daily (毎日)weekly (毎週)biweekly (隔週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年) |
cyclical_period | ISO8601 duration | 存在し得る値(意味):PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期)※CREATEで Period 未指定なら必須 |
next_payment.id | UUID | 支払いのID |
next_payment.due_date | YYYY-MM-DD | 次回課金日 |
next_payment.zone_id | IANA Timezone | タイムゾーン 例:日本は Asia/Tokyo |
next_payment.amount | 半角数 | 次回課金額 |
next_payment.currency | ISO-4217 | 通貨 例:日本円はJPY |
next_payment.amount_formatted | 半角数 (小数点) | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: corrency がUSD で課金額が110 の場合は1.1 |
next_payment.is_paid | 真偽 | 決済結果(未実行のためfalse 固定) |
next_payment.is_last_payment | 真偽 | 最後の支払いかどうか (回数指定時のみ true が出力され得る) |
next_payment.created_on | ISO-8601 | データの作成日時 |
next_payment.updated_on | ISO-8601 | データの更新日時 |
next_payment.retry_date | YYYY-MM-DD | 次回課金が失敗した場合のリトライ予定日 |
本ページは、コンビニ決済に対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、コンビニ決済の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例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 ) |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-convenience-store-expiration-period /convenienceStoreExpirationPeriod かつ data-convenience-store-expiration-time-shift /convenienceStoreExpirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | convenienceStoreExpirationPeriod かつ convenienceStoreExpirationTimeShift | P3D かつ
(または 12%3A34%3A56%2B09%3A00 ) |
このページは「初期設定」が完了していることを前提に作成しています。
リンクフォームは、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 |
定期課金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで課金のステータスを内部でポーリングする |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
ここでは、APIを通じて提供されるリソースを紹介します。
ここでは、特定のオブジェクトに紐づかない項目について説明します。
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
米ドル※接続しているアクワイアラ(カード会社)やセンター(カード会社と紐づくオンライン処理用のセンター)で許可されている通貨であることが必須です。
加盟店さまで直接決済が利用可能な通貨についてはサポートデスクにお問い合わせください。
直接決済に対応していない通貨を使用する場合、振込先の銀行口座に設定してある通貨に自動的に変換されます。
設定された通貨が使用できない場合は、デフォルト設定である日本円に変換されます。
請求情報には変換後の通貨が使用されますので、別の通貨に変換される場合は、カード利用者に通知するようにして下さい。
決済情報と消費者に関する個人情報を取得する為のリソースです。
課金(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 | 振込支払先の口座名義 銀行振込の場合に利用可能 |
イシュアトークン
トランザクショントークンを作成して消費者の決済情報を収集した後、決済を完了するために課金(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 | 処理日時 |
定期課金とは、本サービスにより定期的かつ自動的に課金することを指します。
オブジェクト名はsubscription
です。
定期課金の作成(create
)リクエストはトランザクショントークンを用いて作成されます。
定期課金は、UPDATE
やCANCEL
のリクエストで、いつでも停止できます。
ウェブフックを用いて、定期課金イベントの通知を受け取ることを推奨します。
SUBSCRIPTION_PAYMENT
イベントSUBSCRIPTION_FAILED
イベントSUBSCRIPTION_CANCELED
イベントで、それぞれ通知します。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 定期課金のユニークID 作成時に自動付与 |
store_id | string (UUID) | 登録された「店舗」のユニークID 契約時に自動付与 |
transaction_token_id | string (UUID) | 事前に作成したトランザクショントークン |
amount | number | 課金額 |
currency | string (ISO-4217) | 通貨 例:日本円はJPY |
amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
initial_amount | number | 初回の課金 ※ CREATE 時に未指定だとamount を参照 |
initial_amount_formatted | string | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: currency がUSD で課金額が110 の場合は1.1 |
schedule_settings.start_on | string (ISO-8601) | 2回目の課金日 指定日のタイムゾーンの07:00に実行 ※ CREATE 時に指定可能 |
schedule_settings.zone_id | string (IANA Timezone) | タイムゾーン 例:日本は Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | 月末固定の指定が、されている(true )か否(false )か |
schedule_settings.retry_interval | 半角英数 | 定期課金が失敗したときのリトライ間隔 存在し得る値(意味): PxD (x日)PxW (x週間)PxM (xか月) |
schedule_settings.termination_mode | 半角英 | 定期課金の停止リクエストを受理したとき、実際に自動課金のステータスをsupended (一時停止)に変更するタイミング指定可能な値(意味): immediate (即時)on_next_payment (次回課金日) |
status | 半角英 | 定期課金のステータスunverified (初回課金の待機中)unconfirmed (初回課金に失敗)canceled (永久停止:リクエストで移行し再開不可)unpaid (リトライ待ち)current (継続中)suspended (一時停止:管理画面で「一時停止」ボタンを押下、リトライ回数の超過、リクエストのいずれかで移行)completed (指定分完了:再開可) |
metadata | メタデータ ※ CREATE ,UPDATE 時はネストで任意のフィールドと値を指定可能 | |
mode | 半角英 | 決済のモードlive (本番)またはtest (テスト) |
created_on | ISO-8601 | データの作成日時 |
period | 半角英 | 指定した定期課金の間隔 存在し得る値(意味): daily (毎日)weekly (毎週)biweekly (隔週)monthly (毎月)bimonthly (隔月)quarterly (3ヶ月)semiannually (6ヶ月)annually (毎年) |
cyclical_period | ISO8601 duration | 存在し得る値(意味):PxD (x日周期)PxW (x週間周期)PxM (xヶ月周期)PxY (x年周期)※CREATEで Period 未指定なら必須 |
next_payment.id | UUID | 支払いのID |
next_payment.due_date | YYYY-MM-DD | 次回課金日 |
next_payment.zone_id | IANA Timezone | タイムゾーン 例:日本は Asia/Tokyo |
next_payment.amount | 半角数 | 次回課金額 |
next_payment.currency | ISO-4217 | 通貨 例:日本円はJPY |
next_payment.amount_formatted | 半角数 (小数点) | 現実的に流通する補助通貨がある場合、通貨額での課金額 例: corrency がUSD で課金額が110 の場合は1.1 |
next_payment.is_paid | 真偽 | 決済結果(未実行のためfalse 固定) |
next_payment.is_last_payment | 真偽 | 最後の支払いかどうか (回数指定時のみ true が出力され得る) |
next_payment.created_on | ISO-8601 | データの作成日時 |
next_payment.updated_on | ISO-8601 | データの更新日時 |
next_payment.retry_date | YYYY-MM-DD | 次回課金が失敗した場合のリトライ予定日 |
返金(Refund)は、消費者にお金を返すために使用します。
詐欺や誤った注文、重複課金などの対応として返金(Refund)が行われます。
返金(Refund)は、課金(Charge)と同じ通貨で行う必要があり、その金額は課金(Charge)と同額かそれ以下となります。
合計の返金金額が課金金額以下であれば、一つの課金に対して複数の返金を行うこともできます。
返金(Refund)は、非同期処理されます。
まず作成時には、pending
状態になっており、ステータスを自動的にsuccessful
, failed
, error
に変更します。
ウェブフックのREFUND_FINISHED
イベントを登録して返金(Refund)の最終状態を得ることができます。
返金(Refund)が行われた時でも、返金対象の課金のトランザクション費用は請求されます。
テストデータの情報は、テストカード番号を参照下さい。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | 返金のユニークID |
store_id | string (UUID) | 返金対象の課金が属する店舗のID |
charge_id | string (UUID) | 返金(Refund)を行う課金のID |
status | string | 返金のステータスpending , successful , failed , error のいずれか |
amount | number | 返金の金額 |
currency | string (ISO-4217) | 返金する金額の通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む返金のリクエスト金額 |
reason | string | 返金の理由fraud , duplicate , customer_request , chargeback のいずれかchargeback は加盟店で設定不可で、後日カード会社から課金が拒否された場合に設定 |
message | string | 返金の詳細な理由 |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | 返金に紐づいている加盟店定義のメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | 返金が作成された日時 |
キャンセルリソースは、awaiting
もしくは authorized
状態の課金に対してキャンセルを作成する為に使われ、またその状態を表現します。
これは、コンビニ決済で課金を作成した時、もしくはクレジットカード(Apple Pay を含む)決済でオーソリを行った際に利用します。successful
状態の課金については、返金 を参照ください。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | キャンセルのID |
store_id | string (UUID) | キャンセルが行われた店舗のID |
charge_id | string (UUID) | キャンセルが行われた課金のID |
status | string | キャンセルの状態pending , successful , failed , error のいずれか |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | キャンセルに紐づいているメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | キャンセルが作成された日時 |
トランザクション履歴とは、実行済みの課金と返金のことです。
貸借のアクティビティにアクセスできるようになっています。
課金や返金の一覧よりもこの閲覧方式を用いることを推奨します。
フィールド | データ型 | 備考 |
---|---|---|
merchant_id | string (UUID) | 課金が作成された加盟店のユニークID |
merchant_name | string | 加盟店名 |
store_id | string (UUID) | 課金が作成された店舗のユニークID |
store_name | string | 店舗名 |
resource_id | string (UUID) | このエントリーが参照しているリソースのユニークIDtype がcharge であれば課金のID、refund であれば返金のID |
amount | number | 課金または返金の金額 |
currency | string (ISO-4217) | トランザクションの通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む課金か返金の金額 |
type | string | charge またはrefund のいずれか |
status | string | pending , successful , failed , errored のいずれか |
payment_type | string | 決済処理の支払い方法 |
mode | string | liveまたはtest |
metadata | json | 課金に付与されたメタデータ |
bank_transfer_latest_deposit_date | string (ISO-8601) | 銀行振込の場合 振込日 |
bank_transfer_payment_status | string | 銀行振込の場合 決済のステータスunpaid(未入金), insufficient(不足), exact(丁度), exceeded (超過) のいずれか |
created_on | string (ISO-8601) | トランザクションの日時 |
加盟店リソースはアカウントの所有者についての情報と、この加盟店で作成される店舗のデフォルト設定を表示します。
フィールド名 | データ型 | 備考 |
---|---|---|
id | UUID | 加盟店を識別するID。一般的に merchantId として使われます。 |
name | string | 加盟店の名称 |
string | 加盟店のメールアドレス | |
verified | boolean | 加盟店が審査済みかどうか |
created_on | string (ISO-8601) | 加盟店の作成日時 |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国。 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座への送金前に積み立てられた最低金額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで顧客にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す。 |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか。 trueの場合、別のメールアドレスで使用されているカードは拒否される。 |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | string (ISO-8601) amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類none – 使用できないbounded – トランザクショントークンを作成するときにusage_period パラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_window で指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド名 | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
店舗は、決済を分類したい場合や取引ごとの設定を分けたい場合などに用いられます。トランザクショントークンは、アプリケーショントークン経由でストアに紐づいています。
フィールド | データ型 | 備考 |
---|---|---|
id | UUID | 店舗を区別するUUID |
name | string | 店舗の表示名 |
string | 店舗のメールアドレス | |
verified | boolean | 店舗が審査済みかどうか |
created_on | string (ISO-8601) | 店舗が作成された時間(ミリ杪, UNIX時間) |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座に振り込む前に蓄積された資金の最低額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで消費者にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | この店舗での使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか 外国のカードとは、その国が店舗の国と同じではないカード |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか trueの場合、別のメールアドレスで使用されているカードは拒否される |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類 none – 使用できない bounded – トランザクショントークンを作成するときにusage_periodパラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期間 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_windowで指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
リンクフォーム / ウィジェットが表示されると、パラメータで指定されたアプリケーショントークンに関連した店舗の決済設定を取得する為に自動的にAPIにリクエストを行います。
決済設定は、リンクフォーム / ウィジェットを動作する為に必要な様々な設定情報の集合です。
フィールド | データ型 | 備考 |
---|---|---|
mode | string | ウィジェットに設定されたアプリケーショントークンのモード |
name | string | ストア名 |
logo_image | string | ストアのロゴ画像のURL |
recurring_token_privilege | string | このストアのリカーリングトークンの権限。none (なし), bounded (制限付き), infinite (無制限) のいずれか。 |
card_configuration.enabled | boolean | カードが利用可能か |
card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す |
card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうかtrue の場合、別のメールアドレスで使用されているカードは拒否される |
card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
card_configuration.card_limit.duration | string (ISO-8601) | 定義された期間、カードごとに利用を制限する金額 |
qr_scan_configuration.enabled | boolean | QRコードが支払方法として利用可能かどうか |
qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
convenience_configuration.enabled | boolean | コンビニがペイメント方法として利用可能かどうか |
theme.colors.main_background | string (HexColor) | 入力欄背景。入力フォームが表示されるエリアの背景色。デフォルトは #fafafa |
theme.colors.secondary_background | string (HexColor) | ロゴとタイトルが含まれるエリアの背景色。デフォルトは #ee7a00 |
theme.colors.main_color | string (HexColor) | ヘッダーと下部のボタンの背景色。デフォルトは #fafafa |
theme.colors.primary_text | string (HexColor) | タイトル(デフォルトはストア名)の文字色。デフォルトは #fafafa |
theme.colors.secondary_text | string (HexColor) | (指定がある場合は)ウィジェットのタイトル下部に表示される説明文の文字色。デフォルトは #222222 |
theme.colors.base_text | string (HexColor) | 上記で指定されない他のテキストの文字色。デフォルトは #000000 |
recurring_card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、このストアにCVV確認が必要かどうか |
recurring_card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、ストアのデフォルト通貨での最大金額 |
supported_brands | array[SupportedBrand] | 利用可能な決済ブランド |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
フィールド | データ型 | 備考 |
---|---|---|
brand | string | 対応しているブラントpayment_type により、次のいずれかcard: visa, mastercard, american_express, jcb, diners_club, unionpay, discover, maestro qr_merchant : alipay_merchant_qr, alipay_connect_mpm, pay_pay_merchant, we_chat_mpm online : alipay_online, alipay_plus_online, pay_pay_online, we_chat_online,dbarai_online bank_transfer : aozora_bank paidy : paidy |
payment_type | string | 次のいずれか card , qr_merchant , online , bank_transfer , paidy |
support_auth_capture | boolean | 仮売上のキャプチャが許可されているか |
requires_full_name | boolean | 名前を必須にしているか |
support_dynamic_descriptor | boolean | ダイナミックディスクリプタ―が利用可能か |
requires_cvv | boolean | セキュリティコードが必須か |
countries_allowed | array[string] | 許可されている国 |
supported_currencies | array[string] | 許可された通貨 |
cvv_auth | boolean | セキュリティコード認証を行うか |
dynamic_info | boolean | 分割払いが利用可能か |
ここでは、本サービスで提供するシステム通知「ウェブフック」ついて説明します。
レスポンスで返却されるフィールドおよび値の詳細は、以下を参照してください。
その他data
内のフィールドおよび値は、イベントごとのリソースタイプによって異なります。こちらから確認して下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | 半角英数(UUID) | ウェブフックを識別するためのUUID |
merchant_id | 半角英数(UUID) | ウェブフックが帰属する「加盟店」のUUID |
store_id | 半角英数(UUID) | ウェブフックが帰属する「店舗」のUUID |
triggers | 配列(テキスト) | ウェブフック送信契機となるイベント (イベント名の一覧を参照) 複数指定可能 |
url | 半角英数(URLとして有効なもの) | ウェブフックの送信先 |
auth_token | 半角英数 | ウェブフック実行時にヘッダーに含める認証用の値 authorizationというフィールド名を利用 |
active | 真偽 | 作成時の有効性true で有効、false で無効 |
created_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの作成日 |
updated_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの更新日 |
{
"id": "11ef1288-37b0-2f15-a097-d3a0d4243d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
{
"id": "11ef1288-37b0-2f15-a097-d3a0d7843d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "failed",
"error": {
"code": 309,
"message": "Test charge failed purposely",
"details": "Test charge failed purposely"
},
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
ここでは、本サービスで発生するエラーについて説明します。
本サービスで発生するエラーは、「APIリクエストエラー」と「ペイメントエラー」に分けられます。
APIリクエストエラーは、何らかの理由でAPIの呼び出しが正しく行えなかったことを表します。
ペイメントエラーは、API呼び出しが正常に行えたが、カード会社やセンター等、外部のシステムでの処理が失敗した場合に発生します。
多くの場合、以下のJSONの形式で詳細なエラー情報が提供されます。
項目 | 意味 | 記法 | 代表例 |
---|---|---|---|
status | レスポンスの種別 | 半角英 | error |
code | エラーコード | 半角英 アッパースネークケース (UPPER_SNAKE_CASE) | 表を参照 |
errors | エラー詳細をネスト | ||
field | エラー原因となったパラメータのフィールド名 (errorsにネストされたエラー詳細) | ローワースネークケース (lower_snake_case) | |
reason | ネストされたエラーの詳細 (errorsにネストされたエラー詳細) | アッパースネークケース (UPPER_SNAKE_CASE) または英文で上限や下限の提示 |
このエラーは APIリクエストが正常に受け付けられなかったことを意味し、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。
HTTP ステータス | 内容 |
---|---|
400 Bad Requests | リクエストの内容に問題があります 詳細はボディのエラー情報に記載 |
401 Unauthorized | 認証ができませんでした Authorization ヘッダが無いか、内容に問題あり |
403 Forbidden | リクエストを実行する為の権限なし |
404 Not Found | 指定されたパス、もしくはリソースIDが存在しない |
429 Too Many Requests | レート制限の上限に達した |
500 Internal Server Error | 本サービスのシステム内部で予期しないエラーが発生 この場合、処理の一部は実行されている可能性があります |
HTTP/1.1 429 Too Many Requests
...
Content-Length: 0
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "NON_UNIQUE_ACTIVE_TOKEN"
errors: []
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "VALIDATION_ERROR"
errors: [{
field: "card_number"
reason: "INVALID_CARD_NUMBER"
}]
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "CHARGE_AMOUNT_TOO_LOW"
errors: [{
reason: "Charge amount must exceed 100"
}]
}
JSON形式の詳細なエラー情報が提供される場合、エラーコードは以下のような内容を意味します。
HTTPステータス | エラーコード | 内容 |
---|---|---|
400 | ALREADY_CAPTURED | 対象の課金は既にキャプチャ済みか、オーソリが完了していません。 |
400 | AUTH_NOT_SUPPORTED | オーソリに対応したゲートウェイが設定されていません。 |
400 | CANCEL_NOT_ALLOWED | この支払い方法はキャンセルに対応していません。もしくは対象の課金のステータスはキャンセルできない状態です。 詳細はキャンセルを参照してください。 |
400 | CANNOT_CHANGE_CANCELED_SUBSCRIPTION | キャンセルされた定期課金は変更することはできません。 |
400 | CANNOT_CHANGE_TOKEN | この状態の定期課金のトランザクショントークンは変更できません。トランザクショントークンの変更可能な条件は定期課金の更新を参照してください。 |
400 | CANNOT_REFUND_UNSUCCESSFUL_CHARGE | successful 以外の状態の課金は返金できません。 |
400 | CAPTURE_AMOUNT_TOO_LARGE | キャプチャの金額がオーソリ時の金額より大きいです。 |
400 | CARD_BRAND_NOT_SUPPORTED | 指定されたカードブランドに対応したゲートウェイが設定されていません。 |
400 | CARD_COUNTRY_NOT_SUPPORTED | 指定されたカード発行国に対応したゲートウェイが設定されていません。 |
400 | CARD_PROCESSING_DISABLED | 支払い方法でカードが無効になっています。 |
400 | CHARGE_TOO_QUICK | 制限つきのリカーリングトークンまたは同一カードに対して、30秒以内※に同一金額で複数の課金を作成しようとしました。 ※APIからリクエストを行っている加盟店さまは、本エラーの発生時間を変更できます。詳細は冪等なリクエストを参照してください。 |
400 | CONVENIENCE_PROCESSING_DISABLED | 支払い方法でコンビニ決済が無効になっています。 |
400 | CURRENCY_MUST_MATCH_CHARGE | 返金時の通貨は課金時の通貨と同じである必要があります。 |
400 | CVV_REQUIRED | CVV の提供が必要です。 |
400 | CVV_AUTHORIZATION_NOT_COMPLETED | CVV(セキュリティーコード)認証に失敗しました。 |
400 | FILE_INVALID_TYPE | アップロードされたファイルの MIME タイプが正しくありません。 |
400 | FILE_MAX_SIZE_EXCEEDED | アップロードされたファイルのサイズが大きすぎます。 |
400 | FORBIDDEN_IP | リクエスト元のIPアドレスから割り出された国が、設定された許可する国に含まれていません。 |
400 | INSTALLMENT_MAX_PAYOUT_PERIOD_EXCEEDED | 分割払いの支払期間が、設定された最大の支払期間を超過しています。 |
400 | INSTALLMENT_PAYMENT_TYPE_NOT_ALLOWED_FOR_PLAN | 分割払いの支払い方法として許可されていない支払い方法です。 |
400 | INSTALLMENT_INVALID_CYCLES_COUNT | 利用できない分割回数です。 |
400 | INSTALLMENT_INVALID_PLAN | サポートされていない分割支払いプランです。 |
400 | INVALID_PLATFORM | プラットフォームの指定が正しくありません。 |
400 | INVALID_TOKEN_TYPE | トランザクショントークンの種類が正しくありません。 |
400 | INVALID_QR_SCAN_GATEWAY | QRコード決済のゲートウェイが設定されていないか有効ではありません。 |
400 | LAST_NAME_REQUIRED | カード名義にスペースで区切られた苗字が必要です。 |
400 | LIVE_MODE_NOT_ENABLED_WHEN_UNVERIFIED | 本番モード(live )を使用するにはアカウントの審査の完了が必要です。 |
400 | NO_DIRECT_CURRENCY_GATEWAY | 通貨の変換をせずに利用可能なゲートウェイが設定されていません。 |
400 | NO_GATEWAYS_AVAILABLE | 利用可能なゲートウェイが見つかりません。 |
400 | NO_TEST_CARD_IN_LIVE_MODE | 本番モード(live )でテストカードは使用できません。 |
400 | NON_SUBSCRIPTION_PAYMENT | 課金の作成にワンタイムトークンもしくはリカーリングトークンを指定してください。 |
400 | NOT_ONE_TIME_TOKEN | ワンタムトークン以外はサポートされていません。 |
400 | NOT_SUBSCRIPTION_TOKEN | 定期課金トークンもしくはリカーリングトークンを指定してください。 |
400 | PARTIAL_CAPTURE_NOT_SUPPORTED | 部分的なキャプチャはサポートされていません。 |
400 | PAYMENT_EXPIRATION_EXCEEDS_PERIOD | 支払い期限日時がサイクルを超過しています。 |
400 | QR_PROCESSING_DISABLED | 支払い方法でQRコードが無効になっています。 |
400 | RECURRING_TOKEN_DISABLED | トランザクショントークンが無効になっているか、アカウントにリカーリングトークンを使用する権限がありません。 |
400 | RECURRING_USAGE_LIMIT_REQUIRED | usage_limit パラメータが必要です。 |
400 | RECURRING_USAGE_REQUIRES_CVV | CVV の提供が必要です。 |
400 | REFUND_EXCEEDS_CHARGE_AMOUNT | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えた場合 ※全額返金成功の課金に再度返金処理をした場合 |
400 | REFUND_NOT_ALLOWED | 返金に対応していない支払い方法、もしくは返金が許可されませんでした。 |
400 | REFUND_EXCEEDS_SALES | 返金の金額が上限を越えたため返金できません。 |
400 | REFUND_NOT_WITHIN_BOUNDS | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えていて、かつ一部返金の1回分の返金金額が課金金額を超えた場合 |
400 | RESOURCE_LIMIT_REACHED | リソース制限の上限に達しました。 |
400 | SUBSCRIPTION_ALREADY_ENDED | 定期課金は既に終了しています。 |
400 | TOKEN_FOR_WRONG_STORE | トランザクショントークンのストアが定期課金のストアと異なります。 |
400 | TRANSACTION_ALREADY_PROCESSED | 使用済みのトランザクショントークンは指定できません。 |
400 | TRANSACTION_TOKEN_EXPIRED | トランザクショントークンの有効期限が切れました。 |
400 | USAGE_LIMIT_NOT_APPLICABLE | usage_limit は指定できません。 |
400 | VALIDATION_ERROR | リクエスト内容のパラメータにバリデーションエラーがあります。詳細は errors を参照してください。 |
400 | CHARGE_AMOUNT_TOO_HIGH | 課金金額が課金最大額より超過しています。 |
401 | AUTH_HEADER_MISSING | Authorization ヘッダが指定されていません。 |
401 | EXPIRED_LOGIN_TOKEN | ログイントークンの有効期限が切れました。 |
401 | INVALID_APP_TOKEN | アプリケーショントークンの指定が正しくありません。 |
401 | INVALID_CREDENTIALS | 認証情報が正しくありません。 |
401 | INVALID_DOMAIN | リクエストされた Origin ヘッダのドメインは、指定されたアプリケーショントークンのドメインに登録されていません。 |
401 | INVALID_LOGIN_TOKEN | ログイントークンが無効です。 |
401 | DIRECT_CARD_TOKEN_CREATION_DISABLED | PCIDSSに準拠していないためカード情報を送信できません。 |
403 | CARD_LOCKED | このカードは一定期間内の失敗回数がしきい値を超えた為、一時的にロックされています。 30分以内に5回以上失敗で、2時間制限をかけます。 |
403 | INVALID_PERMISSIONS | アプリケーショントークンの種類が正しくないか、アカウントの権限が不足しています。 |
403 | INSTALLMENT_PROCESSOR_INITIAL_AMOUNTS_NOT_SUPPORTED | このゲートウェイでは初回金額の指定はサポートされていません。 |
403 | OUTDATED_APP_TOKEN | アプリケーショントークンのバージョンが古いです。新しくアプリケーショントークンを作成しなおしてください。 |
403 | TEST_CARD_CANNOT_BE_BANNED | テストカードは禁止できません。 |
409 | IDEMPOTENCY_KEY_CONFLICT | 冪等性が保証されたリクエストの際に、指定された冪等性キーが以前に異なるAPIやメソッドで使用されています。 |
409 | NON_UNIQUE_ACTIVE_TOKEN | アクティブなトランザクショントークンが既に存在します。 |
409 | WEBHOOK_URL_EXISTS | 指定されたURLは既に登録されています。 |
500 | COULD_NOT_REFRESH_AUTH | ログイントークンの更新に失敗しました。サポートへお問い合わせください。 |
500 | DB_ERROR | 内部データベースエラー。サポートへお問い合わせください。 |
500 | FILE_UPLOAD_ERROR | ファイルのアップロードに失敗しました、サポートへお問い合わせください。 |
500 | IMPROPER_AUTH | オーソリの状態が正しくありません。サポートへお問い合わせください。 |
500 | TIMEOUT | 内部処理でタイムアウトが発生しました。サポートへお問い合わせください。 |
500 | UNABLE_TO_GET_IDEMPOTENT_RESULT | 冪等性キーに該当するキャッシュは見つかった為、リクエストされた内容は処理しませんでしたが、以前の処理結果のキャッシュの取得に失敗しました。 |
500 | UNKNOWN_ERROR | 予期しないエラーです。サポートへお問い合わせください。 |
503 | SERVICE_UNAVAILABLE_TRY_AGAIN | サービスが一時的に利用できません。時間を置いて再試行してください。 |
504 | NO_GATEWAY_AVAILABLE_TO_PROCESS_THE_REQUEST | このリクエストは接続先システムで対応していせん。サポートへお問い合わせください。 |
課金(Charge)や返金(Refund)などのリソースは、リソースの作成、つまりリクエストの受付に成功した場合でも、実際にゲートウェイでの処理に失敗した場合等にエラーが発生する場合があります。この場合、課金や返金の状態は failed
になり、error
フィールドに以下のデータが設定されます。
code
(number) – 課金が失敗またはエラーになった理由を表すエラーコードmessage
(string) – 課金が失敗した理由detail
(string) – 課金が失敗した詳細理由エラーコードは、以下の通りです。
コード | 内容 |
---|---|
301 | カード番号のエラーです。 |
302 | 不正な有効期限(月)です。 |
303 | 不正な有効期限(年)です。 |
304 | 有効期限切れです。 |
305 | セキュリティーコードに関するエラーです。 |
306 | カードが拒否されました(認証審査エラー) 失敗理由についてはカード発行会社へお問い合わせください。 |
307 | 不正なカードです。 |
308 | このカードはカード会社から承認が下りていません。詳細は消費者よりカード会社へお問い合わせください。 |
309 | 一般エラーが発生しました。詳細情報は管理画面で確認できます。 |
310 | 消費者データが不正です(無効なリクエストデータ)。 加盟店のリクエストに誤りがある可能性があります。 |
311 | 短期間に同一カードでの課金が多すぎます。しばらく待ってから再試行してください。 |
312 | この課金はキャンセルできません。 |
313 | オーソリの期限が切れました(課金のキャプチャ時)。 |
314 | このカードは盗難されたものとして報告されたか、発行会社によって無効化されました。加盟店は利用者のこのカードを差し押さえてください。 |
315 | カード発行会社へお問い合わせください。 |
316 | 名義人の姓は必須です。 |
317 | 部分的なキャプチャはサポートされていません。 |
318 | 部分的な返金はサポートされていません。 |
319 | 不正行為の疑いがあります(セキュリティ制限)。 |
320 | 銀行側のシステムでエラーが発生しました。 |
321 | ダイナミックディスクリプタはサポートされていません。 |
322 | バーコード/QRコードが無効です。 |
323 | バーコード/QRコードの有効期限が切れています。 |
324 | このバーコード/QRコードは既に処理済みです。 |
325 | このバーコード/QRコードは現在処理中です。 |
326 | リスクプロファイルが高いため拒否されました。 |
327 | 決済期限(タイムアウトは5分)が切れています。 |
328 | 復帰に失敗しました。手動による介入が必要です。 |
329 | 返金に失敗しました。 |
330 | 残高が不足しています。 |
331 | メタデータフィールドの値が無効または不足しています。 |
332 | 国境を越えた取引は許可されていません:身分証明書がありません。 |
333 | 国境を越えた取引は許可されていません:電話番号がありません。 |
334 | 国境を越えた取引は許可されていません:承認されていない支払方法です。 |
335 | 国境を越えた取引は許可されていません:名前がありません。 |
336 | この支払方法の決済制限を超えました。 |
337 | この加盟店の決済制限を超えました。 |
338 | 決済情報が見つかりません。 |
339 | 決済情報が重複しています。 |
340 | この消費者のリテールQRアカウントはゲートウェイによって拒否されました。 |
341 | この加盟店には、このゲートウェイに必要な情報が不足しています。 |
342 | 国境を越えた取引は許可されていません: 承認されていない通貨です。 |
343 | ゲートウェイでサーバーエラー(接続先システムエラー)が発生したため、支払いを処理できませんでした。しばらく待ってから再試行してください。 |
344 | 選択した支払方法は、ゲートウェイにより一時的に利用できません。 |
345 | 支払いは既にキャンセルされています。 |
346 | システムが遅延したため、支払い処理に時間がかかりキャンセルされました。しばらく待ってから再試行してください。 |
355 | 指定された支払い区分(分割回数など)が非対応のカードです。 |
コード | 内容 |
---|---|
500 | リクエストを実行したところ、前処理エラーが発生しました。正しい入力が行われたことを確認し、詳細はエラーメッセージを参照してください。 |
501 | 内部エラーが発生しました。サポート担当者にご連絡ください。 |
502 | リクエストに対してレスポンスがタイムアウトとなりました。お時間おいて再度お手続きお願い致します。 |
税関申告リソースは、失敗するとエラー情報を返すことがあります。税関申告エラーには、以下の情報が含まれます。
code
(number) – エラーコードを照合するために使用できる一意のキーmessage
(string) – エラーの簡単な説明detail
(string) – より詳細なエラーメッセジがった場合の詳細コードの定義は以下の表のとおりです。
コード | 内容 |
---|---|
601 | 本サービスでシステムリリースされたエラーが発生しましたが、具体的な情報はdetail をご覧ください。 |
602 | ペイメントプロセッサーが送信されたリクエストを拒否しました。具体的な情報はdetail をご覧ください。 |
603 | 提出されたお客様の身元確認は、税関当局によって拒否されました。 |
604 | 必要なお客様のID情報が加盟店から提出されていなかった。 |
管理画面右上の加盟店名>ユーザー設定 から、ログイン用のメールアドレスおよびパスワードを変更できます。
※一般設定>一般>通知 の「メールアドレス」から、通知メールを受信するメールアドレスを別途設定していない場合は、ログイン用メールアドレスへ通知メールが送信されます。
ログイン画面から、以下手順でパスワードを再設定できます。
①「パスワードを忘れた場合」ボタンを押して、登録されている加盟店さまのメールアドレスを入力する
②入力されたメールアドレスに届いた、件名『UnivaPayパスワードリセット』というメールを開き、記載されているパスワード再設定用のURLをクリックする
③遷移先のページで、新しく設定したいパスワードを2度入力し、「送信」ボタンをクリックする
別サービスで決済システムを利用する場合は、別途審査を行いアカウントを発行する必要があります。
サポートデスク(ips-support@univapay.com)へお問い合わせください。
変更依頼・停止・解約申込フォームから申請することで、加盟店情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 「変更する」を選択した場合、それぞれ入力欄が表示されるので、変更したい内容を記載してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「店舗ID」「店舗名」を記載してください。
変更依頼・停止・解約申込フォームから申請してください。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
本ガイドは、コンビニ決済における各API処理の補足説明です。
コンビニ決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
消費者の情報をトークン化して保存します。
詳細は、APIリファレンス「トランザクショントークン – CREATE」を確認してください。
リクエストBody例
{
"payment_type" : "konbini",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"customer_name" : "テスト 太郎",
"phone_number" : {
"country_code" : "81",
"local_number" : "0364413400"
},
"convenience_store" : "family_mart"
},
"metadata": {
"memberid" : "12345"
}
}
2.課金作成
作成したトークンに対して課金申込を行います。
詳細は、APIリファレンス「課金 – CREATE」を確認してください。
リクエストBody例
{
"transaction_token_id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
"amount": "100",
"currency": "jpy",
"metadata": {
"orderid": "12345"
}
}
3.課金の取得
課金申込の結果を取得します。
詳細は、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,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "awaiting",
"error": null,
"metadata": {
"internal_convenience_payment_number": "20020-123456789012",
"internal_convenience_payment_url": "https:/example.com"
},
"mode": "live",
"created_on": "2022-07-20T06:28:44.521327Z"
}
支払先の情報は、レスポンスの"metadata"
の値として反映されます。
支払先の情報が反映されるタイミングは、課金作成のリクエスト時ではなく、課金申込が成功して"status": "awaiting"
になった時以降です。"metadata"
の値とその内容は以下の通りです。
"metadata" の値 | 内容 |
---|---|
internal_convenience_payment_number | 支払い番号 |
internal_convenience_payment_url | 支払い票のURL ※支払先がセブンイレブンの場合のみ発行されます |
Pay-easyの場合は支払いに別途「収納機関番号」が必要です。
値は固定されていて、共通で58091
です。
課金取得時のレスポンスには反映されず、申込完了メールにのみ反映されます。
4.課金の取得
入金の結果を取得します。
詳細は、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"
から確認できます。
変更依頼・停止・解約申込フォームから申請することで、登録情報を変更できます。
フォームに沿って変更内容を記載後、「送信する」ボタンを押してください。
以下では、フォームの各項目について、抜粋して説明します。
項目名 | 説明 |
届出種別 | 「加盟店情報変更」を選択してください |
明細書の明細No |
下記①②いずれかの方法で確認してください。 ①管理画面>精算 から確認 ※不明な場合、管理画面>一般設定>一般>全体設定>情報 に記載されているの「ID」を代わりに入力してください |
会社情報 / 店舗情報・サイト情報 / 担当者情報 / 振込先情報 |
「変更する」または「変更しない」を選択してください。 |
フォームに変更したい情報の項目が無かった場合(店舗の追加など)は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
加盟店さまの負担です。
振込手数料は、一律400円(税別)です。
契約内容によっては、変更が可能です。
変更を希望する場合は、サポートデスク(ips-support@univapay.com)へお問い合わせください。
※メール内に必ず「加盟店ID」「加盟店名」を記載してください。
明細書および請求書は、「明細書送付先アドレス」宛に案内します。
書類ごとに、発行されるタイミングや記載内容、確認方法が異なります。
発行書類 | 発行されるタイミング | 記載内容の概要 | 確認方法 |
---|---|---|---|
売上代金支払明細書 | 振込日の約2~5日前 |
|
メール文面上 または 管理画面>精算 からPDFをダウンロード |
支払通知書 | 振込日当日 ※振込の場合のみ |
|
メール文面上からPDFをダウンロード |
請求書 | 集計期間の翌月末日頃 ※請求がある場合のみ |
|
メール文面上からPDFをダウンロード |
※送付日は休日等の影響によって多少変動します。
※契約内容により、送付のタイミングが異なる場合があります。
入金予定日が金融機関の休日や祝日と重なる場合、入金日は金融機関の翌営業日になります。
また、加盟店さまへの入金は、支払い額が10,000円以上の場合のみ行い、10,000円未満の場合は次月へ繰り越しします。
※デフォルトの金額設定です
10,000円以上の支払い額で入金がない場合は、精算担当(下記連絡先)へお問い合わせください。
※メールの場合は、必ず「加盟店ID」「加盟店名」を記載してください。
定期課金オブジェクトのCREATEリクエストには以下が必要です。(括弧内は入力箇所)
パラメータを指定して様々な種類の定期課金が作成可能です。
{secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金有効のトランザクショントークンID |
amount | number | 課金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
initial_amount | number | 定期的な金額と異なる場合は初回に請求する金額 |
period※ | string | ※cyclical_periodを利用しない場合 定期課金が請求される頻度 daily , weekly , biweekly , monthly , quarterly , semiannually , annually のいずれかこのフィールドが入力されている場合cyclical_periodは利用不可 分割払いの場合は monthly を指定 |
cyclical_period※ | string (ISO-8601 Duration) | ※periodを利用しない場合 課金を行う詳細な頻度(1日間以上) 例:P3D,P2M,P2M等 このフィールドが入力されている場合 period は利用不可 |
schedule_settings.start_on | string (ISO-8601) | 以降のすべての支払いがで開始される日付(年月日形式 )時間は zone_id で宣言されたタイムゾーンの午前7時※に固定※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時 |
schedule_settings.zone_id | string (IANAタイムゾーン) | 定期課金が請求されるタイムゾーン 例:Asia/Tokyo |
schedule_settings.preserve_end_of_month | boolean | period がmonthly で指定されたstart_on の日付が月末日である場合、以降は月の最終日に料金を請求例: start_on が2018-06-30 の場合、次の請求はtrue の場合は2018-07-31 、false の場合は2018-07-30 |
schedule_settings.termination_mode | string | 定期課金の停止リクエストimmediate , on_next_payment のいずれかデフォルト値: immediate immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了 |
installment_plan.plan_type | string | installment_plan を指定した定期課金は全てクレジットカード会社による分割払いになり、revolving :リボ払いfixed_cycles :installment_plan.fixed_cycles で指定した回数の分割払いrevolving , fixed_cycles のいずれか |
installment_plan.fixed_cycles※ | number | ※plan_type がfixed_cycles の場合クレジットカード会社での分割払いの回数 指定可能な値:3,5,6,10,12,15,18,20,24 ※上記以外の回数はエラー |
first_charge_authorization_only | boolean | 初回決済時に行う処理true :オーソリ(仮売上)false :キャプチャ(実売上)デフォルト値: false |
first_charge_capture_after | string (ISO-8601 Duration) | first_charge_authorization_only がtrue の場合、自動でキャプチャを行う日指定可能な値:1,2,3,4,5,6 ※上記以外の回数はエラー 例:3日後を指定する場合は first_charge_capture_after:"P3D" |
subscription_plan.plan_type | string | 回数指定の定期課金を行う場合、fixed_cycles , fixed_cycle_amount のいずれか |
subscription_plan.fixed_cycles※ | number | ※subscription_plan.plan_type が fixed_cycles の場合定期課金を行う回数 |
subscription_plan.fixed_cycle_amount※ | number | ※subscription_plan.plan_type が fixed_cycle_amount の場合定期課金の1回当たりの支払い金額 |
schedule_settings.retry_interval | string (ISO-8601 Duration) | 定期課金の支払いが失敗したときにリトライを行う間隔 ※1日以上かつ定期課金のサイクルよりも短い必要あり 例:P5Dで失敗後5日毎にリトライ |
metadata | json | 定期課金に紐づけられたメタデータ |
curl --request POST \
--url https://api.univapay.com/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"period": "daily",
"metadata":{
"ServiceId": 78435694
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "unverified",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9aad-7470-8314-03ee2f51b9cd",
"due_date": "2024-06-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:28.627023Z",
"updated_on": "2024-06-26T01:51:28.627023Z",
"retry_date": null
}
}
定期課金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで課金のステータスを内部でポーリングする |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
定期課金オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
search | 半角英数 | メタデータの値で検索 |
status | 半角英 | 定期課金のステータスunverified , unconfirmed , canceled , unpaid , suspended , current , completed のいずれか |
mode | 半角英 | 定期課金の実行モードlive ,test のいずれか |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"email": "test@test.com",
"brand": "visa",
"gateway": null,
"service_provider": null
}
},
{
"id": "11ef3355-6cec-f0dc-a579-d3bb89aab116",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3355-6cc6-194e-a5e0-bfd94bdad70d",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {},
"mode": "test",
"created_on": "2024-06-26T00:45:46.447678Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"email": "demo@demo.com",
"brand": "master",
"gateway": null,
"service_provider": null
}
},
<中略>
],
"has_more": true,
"total_hits": 99
}
定期課金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金で使用するトランザクショントークン クレジットカードの有効期限が切れ、他のカードの切り替える為などに使用 定期課金の状態が unconfirmed , unpaid , current , suspended の場合に変更可能 |
amount | number | 定期課金の課金額 |
metadata | json | 定期課金に紐づいているメタデータ |
status | string | 定期課金の状態suspended :ステータスを一時停止unpaid :一時停止の定期課金を再開 |
schedule_settings | json | 定期課金の停止リクエストが送信されたときの処理termination_mode の値によって停止のタイミングを指定immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了例: {"termination_mode": "on_next_payment"} |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"metadata":{
"ServiceId": 7843568
},
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"schedule_settings": {"termination_mode": "on_next_payment"}
}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "on_next_payment"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 7843568
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
定期課金オブジェクトに対するCANCELリクエストには以下が必要です。(括弧内は入力箇所)
作成された既存の定期課金を削除し、管理画面のステータスは「永久停止」となり再開不可ですのでご注意ください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request DELETE \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request DELETE \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記はBodyの記述例でリクエストした場合の例です。
204
Content-Type: application/json
定期課金オブジェクトに対する課金LISTリクエストには以下が必要です。(括弧内は入力箇所)
課金のデータモデルの詳細は課金オブジェクトを参照してください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
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 も含める必要あり |
card_number | number | クレジットカード番号でフィルタリングする |
from | string (ISO-8601) | この日付以降に作成された課金を表示する |
to | string (ISO-8601) | この日付より前に作成された課金を表示する |
string | メールアドレスでフィルタリングする | |
phone | string | 電話番号でフィルタリングする |
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/23f45c5e-18ef-11e7-96ee-d756c0178178/subscriptions/25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "26f9059e-18ef-11e7-a74f-173cf0f9475a",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259e9240-18ef-11e7-94da-97e85c2e269c",
"requested_amount": 483200,
"requested_currency": "EUR",
"requested_amount_formatted": 4832,
"charged_amount": 483200,
"charged_currency": "EUR",
"charged_amount_formatted": 4832,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
},
{
"id": "270858e6-18ef-11e7-adfa-6ff75ea1c202",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259f4a8c-18ef-11e7-b8fe-17e053dc5c54",
"requested_amount": 2491,
"requested_currency": "JPY",
"requested_amount_formatted": 2491,
"charged_amount": 2491,
"charged_currency": "JPY",
"charged_amount_formatted": 2491,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
],
"has_more": false
}
このリクエストでは、定期課金の支払い情報を確認することができます。
支払いが完了しているか、次回課金日がいつかなどを確認したい場合はこちらをご利用下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 支払いのID |
due_date | string (ISO-8601) | 支払いが実行される日付 時刻は zone_id で指定されたタイムゾーンのAM7:00 |
zone_id | string (IANA Timezone) | 支払いを実行する時刻が基準とするタイムゾーン |
amount | number | 課金金額 |
currency | string (ISO-4217) | 課金金額の通貨 |
amount_formatted | string | 補助単位があれば小数の値を含む課金金額 |
is_paid | boolean | 支払いが完了したかどうか |
is_last_payment | boolean | この支払が定期課金の最後の支払いかどうか 分割払いの場合のみ適用 |
created_on | string (ISO-8601) | この支払いの作成日時 |
定期課金オブジェクトに対する支払いGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){paymentId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments/{paymentId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments/11e89a0a-8cee-d660-b984-3fcaaed46e7c \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z"
}
定期課金オブジェクトに対する支払いLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z",
"updated_on": "2018-08-07T06:24:33.961256Z"
},
{
"id": "11e89a0a-8cc5-2662-9460-2b14b1a601ba",
"due_date": "2018-08-07",
"zone_id": "Asia/Tokyo",
"amount": 1000,
"currency": "JPY",
"amount_formatted": 1000,
"is_paid": true,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.646223Z",
"updated_on": "2018-08-07T06:24:33.88776Z"
}
],
"has_more": 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 (個別の指定が必要な場合) | 〃 |
ウィジェットのページに記載してある内容と同様です。
インラインフォームで扱えるパラメータは、ウィジェットで扱えるパラメータの一部です。
そのため、個別でページ作成をしていません。
以下より「インラインフォームで利用可」となっているもの(クレジットカードで処理できるもの)を選択し、記述してください。
定期課金オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
search | 半角英数 | メタデータの値で検索 |
status | 半角英 | 定期課金のステータスunverified , unconfirmed , canceled , unpaid , suspended , current , completed のいずれか |
mode | 半角英 | 定期課金の実行モードlive ,test のいずれか |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef32a7-3a71-8662-803f-1bc27702eeec",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 78435694
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"email": "test@test.com",
"brand": "visa",
"gateway": null,
"service_provider": null
}
},
{
"id": "11ef3355-6cec-f0dc-a579-d3bb89aab116",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3355-6cc6-194e-a5e0-bfd94bdad70d",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "immediate"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {},
"mode": "test",
"created_on": "2024-06-26T00:45:46.447678Z",
"period": "monthly",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"next_payment_date": "2024-07-26",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"email": "demo@demo.com",
"brand": "master",
"gateway": null,
"service_provider": null
}
},
<中略>
],
"has_more": true,
"total_hits": 99
}
返金(Refund)は、消費者にお金を返すために使用します。
詐欺や誤った注文、重複課金などの対応として返金(Refund)が行われます。
返金(Refund)は、課金(Charge)と同じ通貨で行う必要があり、その金額は課金(Charge)と同額かそれ以下となります。
合計の返金金額が課金金額以下であれば、一つの課金に対して複数の返金を行うこともできます。
返金(Refund)は、非同期処理されます。
まず作成時には、pending
状態になっており、ステータスを自動的にsuccessful
, failed
, error
に変更します。
ウェブフックのREFUND_FINISHED
イベントを登録して返金(Refund)の最終状態を得ることができます。
返金(Refund)が行われた時でも、返金対象の課金のトランザクション費用は請求されます。
テストデータの情報は、テストカード番号を参照下さい。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | 返金のユニークID |
store_id | string (UUID) | 返金対象の課金が属する店舗のID |
charge_id | string (UUID) | 返金(Refund)を行う課金のID |
status | string | 返金のステータスpending , successful , failed , error のいずれか |
amount | number | 返金の金額 |
currency | string (ISO-4217) | 返金する金額の通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む返金のリクエスト金額 |
reason | string | 返金の理由fraud , duplicate , customer_request , chargeback のいずれかchargeback は加盟店で設定不可で、後日カード会社から課金が拒否された場合に設定 |
message | string | 返金の詳細な理由 |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | 返金に紐づいている加盟店定義のメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | 返金が作成された日時 |
本サービスの銀行振込は、申込ごとに発行したユニークな口座番号への振込確認・消込を自動で行い、結果を反映する仕組みです。
利用する口座は「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"
から確認できます。
ここでは、当社決済フォームを開いてから決済が完了するまでの流れを説明します。
決済手段や消費者の使用するデバイスによっては、利用できない方法があります。
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 または 表示されたQRコードをモバイル端末で読み取って決済 |
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 |
WeChat Pay Online | 非対応 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | 端末内のアプリを開いて決済 または ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
Alipay Online | 端末内のアプリを開いて決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online | リンクフォームを利用する場合: アプリ内で当社決済フォームを開き、そのままアプリ内で決済 ※決済手段でAlipay,Alipay Plusを選択すると支払い処理に失敗します。 ※アプリ外のブラウザからフォームを開いた場合は、決済手段として表示されず利用できません。 ウィジェットを利用する場合: アプリ外のブラウザから当社決済フォームを開き、情報入力後WeChatアプリへ移動して決済 ※利用開始前に、ウィジェット設置予定のウェブサイトのドメインをサポートデスクへ連絡する必要があります。 ※アプリ内のブラウザからフォームを開いて決済する方法は現在対応していません。 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
※PayPay Onlineは決済時に消費者の情報を取得しないため、決済情報から消費者を特定できません。
そのため、決済フォームから消費者の情報を取得する(メールアドレスを必須項目にする等)または メタデータを付与するなど、消費者を特定できる実装を推奨します。
消費者の支払い画面は、下記の画像付き資料を参照してください。
テストモードでは本番モードと挙動が異なります。
テストモードの挙動は下記のとおりです。
リクエスト方法 | 挙動 |
---|---|
ウィジェット リンクフォーム | 即時に課金ステータスが「成功」になる |
API | レスポンスで "issuer_token": "test" が返却される※実際のイシュアトークン(URL)は発行されません。 |
テストモードでリクエストすることで、メール通知とウェブフック(システム通知)を確認できます。
定期課金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
transaction_token_id | string (UUID) | 定期課金で使用するトランザクショントークン クレジットカードの有効期限が切れ、他のカードの切り替える為などに使用 定期課金の状態が unconfirmed , unpaid , current , suspended の場合に変更可能 |
amount | number | 定期課金の課金額 |
metadata | json | 定期課金に紐づいているメタデータ |
status | string | 定期課金の状態suspended :ステータスを一時停止unpaid :一時停止の定期課金を再開 |
schedule_settings | json | 定期課金の停止リクエストが送信されたときの処理termination_mode の値によって停止のタイミングを指定immediate :即座に停止または終了on_next_payment :次回課金日の直前に停止または終了例: {"termination_mode": "on_next_payment"} |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"metadata":{
"ServiceId": 7843568
},
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"schedule_settings": {"termination_mode": "on_next_payment"}
}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef335e-9aa5-c54a-8313-7f9847da313a",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"transaction_token_id": "11ef3362-3700-c54a-9baa-6f7e6527c9d9",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"initial_amount": null,
"initial_amount_formatted": null,
"subsequent_cycles_start": null,
"schedule_settings": {
"start_on": null,
"zone_id": "Asia/Tokyo",
"preserve_end_of_month": null,
"retry_interval": null,
"termination_mode": "on_next_payment"
},
"only_direct_currency": false,
"first_charge_capture_after": null,
"first_charge_authorization_only": false,
"status": "current",
"metadata": {
"ServiceId": 7843568
},
"mode": "test",
"created_on": "2024-06-26T01:51:28.627023Z",
"period": "monthly",
"next_payment": {
"id": "11ef335e-9ae2-8322-8e79-e7ba4b56234e",
"due_date": "2024-07-26",
"zone_id": "Asia/Tokyo",
"amount": 1250,
"currency": "USD",
"amount_formatted": 12.50,
"is_paid": false,
"is_last_payment": false,
"created_on": "2024-06-26T01:51:29.025129Z",
"updated_on": "2024-06-26T01:51:29.025129Z",
"retry_date": null
}
}
電算システムを利用した決済手段です。
決済フォームでの情報入力が完了すると、指定したコンビニエンスストアで入金を行うための情報が発行されます。
入金に必要な情報は、通知メールもしくはメタデータから確認可能です。
発行された情報をもとに消費者が入金を行うと、入金確認を自動で行い、結果を反映します。
また、管理画面の「ウェブフック」で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 ) |
課金作成時に以下記述をしてください。
実装方法 | フィールド | 値の指定例(3日後の12:34:56までの場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-convenience-store-expiration-period /convenienceStoreExpirationPeriod かつ data-convenience-store-expiration-time-shift /convenienceStoreExpirationTimeShift | P3D かつ 12:34:56+09:00 |
リンクフォーム | convenienceStoreExpirationPeriod かつ convenienceStoreExpirationTimeShift | P3D かつ
(または 12%3A34%3A56%2B09%3A00 ) |
本ガイドは、コンビニ決済における各API処理の補足説明です。
コンビニ決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
消費者の情報をトークン化して保存します。
詳細は、APIリファレンス「トランザクショントークン – CREATE」を確認してください。
リクエストBody例
{
"payment_type" : "konbini",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"customer_name" : "テスト 太郎",
"phone_number" : {
"country_code" : "81",
"local_number" : "0364413400"
},
"convenience_store" : "family_mart"
},
"metadata": {
"memberid" : "12345"
}
}
2.課金作成
作成したトークンに対して課金申込を行います。
詳細は、APIリファレンス「課金 – CREATE」を確認してください。
リクエストBody例
{
"transaction_token_id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
"amount": "100",
"currency": "jpy",
"metadata": {
"orderid": "12345"
}
}
3.課金の取得
課金申込の結果を取得します。
詳細は、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,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": false,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "awaiting",
"error": null,
"metadata": {
"internal_convenience_payment_number": "20020-123456789012",
"internal_convenience_payment_url": "https:/example.com"
},
"mode": "live",
"created_on": "2022-07-20T06:28:44.521327Z"
}
支払先の情報は、レスポンスの"metadata"
の値として反映されます。
支払先の情報が反映されるタイミングは、課金作成のリクエスト時ではなく、課金申込が成功して"status": "awaiting"
になった時以降です。"metadata"
の値とその内容は以下の通りです。
"metadata" の値 | 内容 |
---|---|
internal_convenience_payment_number | 支払い番号 |
internal_convenience_payment_url | 支払い票のURL ※支払先がセブンイレブンの場合のみ発行されます |
Pay-easyの場合は支払いに別途「収納機関番号」が必要です。
値は固定されていて、共通で58091
です。
課金取得時のレスポンスには反映されず、申込完了メールにのみ反映されます。
4.課金の取得
入金の結果を取得します。
詳細は、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"
から確認できます。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、オンライン決済の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(オンライン決済のみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | online |
リンクフォーム | paymentMethods[] | online |
実装方法 | フィールド | 値の例(オンライン決済かつ特定のQR事業者に限定したい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods |
|
リンクフォーム | paymentMethods[] |
|
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
定期課金オブジェクトに対するCANCELリクエストには以下が必要です。(括弧内は入力箇所)
作成された既存の定期課金を削除し、管理画面のステータスは「永久停止」となり再開不可ですのでご注意ください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request DELETE \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request DELETE \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/subscriptions/11ef335e-9aa5-c54a-8313-7f9847da313a \
--header 'Authorization: Bearer {secret}.{jwt}'
下記はBodyの記述例でリクエストした場合の例です。
204
Content-Type: application/json
返金オブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
amount | number | 課金金額以下の返金金額 |
currency | string (ISO-4217) | ISO 4217の通貨コードで指定 |
reason | string | 返金理由fraud , duplicate , customer_request のいずれか |
message | string | 返金の詳細理由 |
metadata | json | 自由に設定可能 詳細はメタデータを参照 |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"amount": 250,
"currency": "JPY",
"reason": "customer_request",
"message": "15 percent off",
"metadata": {
"coupon": "VIP007"
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "pending",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
返金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
返金オブジェクトのLISTリクエストには以下が必要です。(括弧内は入力箇所)
課金 / 返金などをまとめて表示させたい場合はトランザクション:Listを推奨します。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
},
{
"id": "11ef32c9-f49b-a6ea-9f24-17662f077450",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"reason": "customer_request",
"message": "return",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:12:15.763927Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
}
],
"has_more": false,
"total_hits": 2
}
返金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | 返金(Refund)に紐づくメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"metadata": {"customer_id":5555}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007",
"customer_id": 5555
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
キャンセルリソースは、awaiting
もしくは authorized
状態の課金に対してキャンセルを作成する為に使われ、またその状態を表現します。
これは、コンビニ決済で課金を作成した時、もしくはクレジットカード(Apple Pay を含む)決済でオーソリを行った際に利用します。successful
状態の課金については、返金 を参照ください。
フィールド名 | データ型 | 備考 |
---|---|---|
id | string (UUID) | キャンセルのID |
store_id | string (UUID) | キャンセルが行われた店舗のID |
charge_id | string (UUID) | キャンセルが行われた課金のID |
status | string | キャンセルの状態pending , successful , failed , error のいずれか |
error.code | string | 課金が失敗またはエラーになった理由を表すエラーコード |
error.message | string | 課金が失敗した理由 |
error.detail | string | 課金が失敗した詳細理由 |
metadata | json | キャンセルに紐づいているメタデータ |
mode | string | liveまたはtest |
created_on | string (ISO-8601) | キャンセルが作成された日時 |
本ガイドは、オンライン決済における各API処理の補足説明です。
オンライン決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
APIの処理によって各QR事業者の支払い画面を呼び出すための流れは下記です。
消費者の情報をトークン化して保存します。
詳細はこちらのドキュメントを確認してください。
決済手段によって必要な情報が異なります。
また、 http_get
や http_post
など、各QR事業者が要求する実行方法によっても指定する値が異なります。
リクエストBody例
{
"payment_type" : "online",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"brand" : "alipay_plus_online",
"call_method" : "http_get"
},
"metadata": {
"memberid" : "12345"
},
}
作成したトークンに対して課金申込を行います。
詳細はこちらのドキュメントを確認してください。
リクエストBody例
{
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"amount": 1000,
"currency": "JPY",
"metadata": {
"order_id": 12345,
"shipping_details": "Customer wants it now"
},
"redirect": {
"endpoint": "https://test.url/path?additionalParams=paramValue"
}
}
課金申込の結果を取得します。
詳細はこちらのドキュメントを確認してください。
"status": "awaiting"
が確認できたら正常に課金申込が完了し、消費者からの入金待ちの状態です。
ウェブフックで結果を受信することも可能です。
(ウェブフックのイベント名はcharge_updated
です。)
レスポンス / ウェブフック Body例
{
"id": "0fe1e42a-1845-11e7-9b1f-d3bd0c055a99",
"store_id": "af857264-180c-11e7-9be2-276aea4fed28",
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"status": "awaiting",
"error": null,
"metadata": {
"customer_id": 12345,
"shipping_details": "Customer wants it now"
},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
状況は、課金の状態 "status"
および入金額 "charged_amount_formatted"
から確認できます。
取得した課金IDを基に各QR事業者の支払い画面を呼び出します。
レスポンスで発行された各QR事業者の支払いURLを消費者側に表示すると、支払いに進めます。
詳細はこちらのドキュメントを確認してください。
レスポンス Body例
{ "issuer_token": "test", "call_method": "http_get" }
決済処理を行う際に各QR事業者(プロバイダ事業者)の画面に遷移し、消費者側がログインして決済する または 各アプリを開いて決済する手段です。
下記がオンライン決済に該当します。
オンライン決済でサポートしている内容は、以下を参照してください。
都度課金のみ利用できます。
定期課金やリカーリングトークンを用いた継続的な課金には利用できません。
当社決済フォーム(リンクフォーム,ウィジェット)の設置と、APIでの連携が可能です。
以下の処理は対応していないため、有効にしても無視されます。
処理 | 無視される理由 |
---|---|
カード登録(リカーリングトークン作成) CVV認証(CVV auth) 仮売上 分割払い | 無効な項目のため |
定期課金 | 未実装な項目のため |
ここでは、当社決済フォームを開いてから決済が完了するまでの流れを説明します。
決済手段や消費者の使用するデバイスによっては、利用できない方法があります。
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 または 表示されたQRコードをモバイル端末で読み取って決済 |
Alipay Online | 表示されたQRコードをモバイル端末で読み取って決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 表示されたQRコードをモバイル端末で読み取って決済 |
WeChat Pay Online | 非対応 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
決済手段 | 消費者の支払いフロー |
---|---|
PayPay Online | 端末内のアプリを開いて決済 または ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
Alipay Online | 端末内のアプリを開いて決済 または ブラウザ内でAlipayのアカウント情報を入力し、支払いパスワードを入力して決済 |
Alipay Plus Online | 支払うウォレットを選択し、端末内の各アプリを開いて決済 |
WeChat Pay Online | リンクフォームを利用する場合: アプリ内で当社決済フォームを開き、そのままアプリ内で決済 ※決済手段でAlipay,Alipay Plusを選択すると支払い処理に失敗します。 ※アプリ外のブラウザからフォームを開いた場合は、決済手段として表示されず利用できません。 ウィジェットを利用する場合: アプリ外のブラウザから当社決済フォームを開き、情報入力後WeChatアプリへ移動して決済 ※利用開始前に、ウィジェット設置予定のウェブサイトのドメインをサポートデスクへ連絡する必要があります。 ※アプリ内のブラウザからフォームを開いて決済する方法は現在対応していません。 |
d払い Online | ブラウザ内でログイン情報を入力し、SMSで発行されたワンタイムコードを入力して決済 |
※PayPay Onlineは決済時に消費者の情報を取得しないため、決済情報から消費者を特定できません。
そのため、決済フォームから消費者の情報を取得する(メールアドレスを必須項目にする等)または メタデータを付与するなど、消費者を特定できる実装を推奨します。
消費者の支払い画面は、下記の画像付き資料を参照してください。
テストモードでは本番モードと挙動が異なります。
テストモードの挙動は下記のとおりです。
リクエスト方法 | 挙動 |
---|---|
ウィジェット リンクフォーム | 即時に課金ステータスが「成功」になる |
API | レスポンスで "issuer_token": "test" が返却される※実際のイシュアトークン(URL)は発行されません。 |
テストモードでリクエストすることで、メール通知とウェブフック(システム通知)を確認できます。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、オンライン決済の手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(オンライン決済のみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | online |
リンクフォーム | paymentMethods[] | online |
実装方法 | フィールド | 値の例(オンライン決済かつ特定のQR事業者に限定したい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods |
|
リンクフォーム | paymentMethods[] |
|
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
本ガイドは、オンライン決済における各API処理の補足説明です。
オンライン決済に必要な消費者の情報には、カード番号のような保護が必要な情報は含まれていないため、決済を行うシステムがPCI DSSに準拠していない場合でもAPIへのリクエストでトークンを作成できます。
以下では、本サービスのウィジェットやリンクフォームを使用せず、加盟店さま側で支払ページを作成しAPIで処理する場合のフローを説明します。
APIの処理によって各QR事業者の支払い画面を呼び出すための流れは下記です。
消費者の情報をトークン化して保存します。
詳細はこちらのドキュメントを確認してください。
決済手段によって必要な情報が異なります。
また、 http_get
や http_post
など、各QR事業者が要求する実行方法によっても指定する値が異なります。
リクエストBody例
{
"payment_type" : "online",
"type" : "one_time",
"email" : "demo@univapay.com",
"data" : {
"brand" : "alipay_plus_online",
"call_method" : "http_get"
},
"metadata": {
"memberid" : "12345"
},
}
作成したトークンに対して課金申込を行います。
詳細はこちらのドキュメントを確認してください。
リクエストBody例
{
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"amount": 1000,
"currency": "JPY",
"metadata": {
"order_id": 12345,
"shipping_details": "Customer wants it now"
},
"redirect": {
"endpoint": "https://test.url/path?additionalParams=paramValue"
}
}
課金申込の結果を取得します。
詳細はこちらのドキュメントを確認してください。
"status": "awaiting"
が確認できたら正常に課金申込が完了し、消費者からの入金待ちの状態です。
ウェブフックで結果を受信することも可能です。
(ウェブフックのイベント名はcharge_updated
です。)
レスポンス / ウェブフック Body例
{
"id": "0fe1e42a-1845-11e7-9b1f-d3bd0c055a99",
"store_id": "af857264-180c-11e7-9be2-276aea4fed28",
"transaction_token_id": "9c3b37f8-1851-11e7-9b58-8b8ddbe8f1d1",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 1000,
"requested_currency": "JPY",
"requested_amount_formatted": 1000,
"charged_amount": 1000,
"charged_currency": "JPY",
"charged_amount_formatted": 1000,
"status": "awaiting",
"error": null,
"metadata": {
"customer_id": 12345,
"shipping_details": "Customer wants it now"
},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
状況は、課金の状態 "status"
および入金額 "charged_amount_formatted"
から確認できます。
取得した課金IDを基に各QR事業者の支払い画面を呼び出します。
レスポンスで発行された各QR事業者の支払いURLを消費者側に表示すると、支払いに進めます。
詳細はこちらのドキュメントを確認してください。
レスポンス Body例
{ "issuer_token": "test", "call_method": "http_get" }
定期課金オブジェクトに対する課金LISTリクエストには以下が必要です。(括弧内は入力箇所)
課金のデータモデルの詳細は課金オブジェクトを参照してください。
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
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 も含める必要あり |
card_number | number | クレジットカード番号でフィルタリングする |
from | string (ISO-8601) | この日付以降に作成された課金を表示する |
to | string (ISO-8601) | この日付より前に作成された課金を表示する |
string | メールアドレスでフィルタリングする | |
phone | string | 電話番号でフィルタリングする |
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/23f45c5e-18ef-11e7-96ee-d756c0178178/subscriptions/25d0fb2c-18ef-11e7-9dd3-db8fb7b820e7/charges \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "26f9059e-18ef-11e7-a74f-173cf0f9475a",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259e9240-18ef-11e7-94da-97e85c2e269c",
"requested_amount": 483200,
"requested_currency": "EUR",
"requested_amount_formatted": 4832,
"charged_amount": 483200,
"charged_currency": "EUR",
"charged_amount_formatted": 4832,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
},
{
"id": "270858e6-18ef-11e7-adfa-6ff75ea1c202",
"store_id": "23f45c5e-18ef-11e7-96ee-d756c0178178",
"transaction_token_id": "259f4a8c-18ef-11e7-b8fe-17e053dc5c54",
"requested_amount": 2491,
"requested_currency": "JPY",
"requested_amount_formatted": 2491,
"charged_amount": 2491,
"charged_currency": "JPY",
"charged_amount_formatted": 2491,
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2018-07-13T02:55:00.07367Z"
}
],
"has_more": false
}
Paidy(後払い)とは、購入代金を自由な方法で翌月にまとめて支払うことができる決済手段です。
決済フォームでメールアドレスと電話番号を入力し、SMS認証を行うことで決済を行います。
Paidyでサポートしている内容は、以下を参照してください。
都度課金および定期課金、リカーリング課金を利用できます。
当社決済フォーム(リンクフォーム,ウィジェット)の設置のみ対応しています。
APIでの連携には対応していません。
以下の処理は無効な項目のため、有効にしても無視されます。
当社決済フォームへ情報を入力後、Paidyの決済画面が開いたら案内に沿って進むと、再度当社画面に戻って決済が完了する流れです。
ウィジェットの場合は「支払う」ボタンを押し、リンクフォームの場合は待機すると支払い完了画面が表示されます。
消費者の支払い画面は、下記の画像付き資料を参照してください。
結果を加盟店さまの配送(または、それに準ずる会員ステータス等の)システムに自動で反映する必要がある場合は、ウェブフックで結果を受信して注文システムを更新するプログラムを設置してください。また、結果はAPIへリクエストすることでも取得できます。
システム連動を行わず、管理画面またはメールで結果を確認する場合は作成する必要はありません。
Paidyはテストモードの決済に対応していません。
本番モードの挙動は本ページ「消費者の支払いフロー」で確認してください。
本ページは、Paidyに対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、Paidyの手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(Paidyのみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | paidy |
リンクフォーム | paymentMethods[] | paidy |
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
当社決済フォームへ情報を入力後、Paidyの決済画面が開いたら案内に沿って進むと、再度当社画面に戻って決済が完了する流れです。
ウィジェットの場合は「支払う」ボタンを押し、リンクフォームの場合は待機すると支払い完了画面が表示されます。
消費者の支払い画面は、下記の画像付き資料を参照してください。
結果を加盟店さまの配送(または、それに準ずる会員ステータス等の)システムに自動で反映する必要がある場合は、ウェブフックで結果を受信して注文システムを更新するプログラムを設置してください。また、結果はAPIへリクエストすることでも取得できます。
システム連動を行わず、管理画面またはメールで結果を確認する場合は作成する必要はありません。
Paidyはテストモードの決済に対応していません。
本番モードの挙動は本ページ「消費者の支払いフロー」で確認してください。
このリクエストでは、定期課金の支払い情報を確認することができます。
支払いが完了しているか、次回課金日がいつかなどを確認したい場合はこちらをご利用下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | string (UUID) | 支払いのID |
due_date | string (ISO-8601) | 支払いが実行される日付 時刻は zone_id で指定されたタイムゾーンのAM7:00 |
zone_id | string (IANA Timezone) | 支払いを実行する時刻が基準とするタイムゾーン |
amount | number | 課金金額 |
currency | string (ISO-4217) | 課金金額の通貨 |
amount_formatted | string | 補助単位があれば小数の値を含む課金金額 |
is_paid | boolean | 支払いが完了したかどうか |
is_last_payment | boolean | この支払が定期課金の最後の支払いかどうか 分割払いの場合のみ適用 |
created_on | string (ISO-8601) | この支払いの作成日時 |
キャンセルオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対してキャンセルを作成することができます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234}}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "pending",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
キャンセルオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | キステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels/11ef32cc-e895-655e-8e33-e36629277b4f \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
キャンセルオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対して行われたキャンセルの一覧を取得できます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
},
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
],
"has_more": false
}
キャンセルオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
キャンセルした時に付与したメタデータを編集することができます。
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32ce-c739-9e0a-9ada-37dba0724131/cancels/11ef32ce-ce90-3272-9ec3-c35d8985dfc2 \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234, "reason": "expired"}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32ce-c739-9e0a-9ada-37dba0724131",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"reason": "expired",
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
本ページは、Paidyに対してパラメータを使用する場合に、注意すべき点の補足説明です。
このページでは、以下のページが読まれていることを前提として説明します。
課金作成時に以下記述をすることで、他の決済手段を含まず、Paidyの手続きだけを消費者に行わせることができます。
また、役割の異なるパラメータが、意図せず適用されることを防げます。
実装方法 | フィールド | 値の例(Paidyのみ表示させたい場合) |
---|---|---|
ウィジェット (HTML / JavaScript) | data-payment-methods / paymentMethods | paidy |
リンクフォーム | paymentMethods[] | paidy |
この指定をしない場合は、利用可能なすべての決済手段が表示されます。
全てではなく、いくつか特定の決済手段を表示させたい場合は、それぞれの決済手段を指定してください。
定期課金では、事前に指定したサイクルで自動的に課金を行います。
2回目以降の課金は、課金日の午前7時※より順次課金を開始します。
※毎日の定期課金 および 定期課金開始日が定期課金作成日の1日後な場合に限り午前9時
定期課金を作成する方法については実装ガイドの各ページを参照してください。
ステータス | 状態 |
---|---|
待機中 | 定期課金を作成し、初回課金の待機中 |
継続中 | 現在稼働中の定期課金 |
一時停止 | 一時停止され再開可能な状態 または 定期課金失敗回数を超えた状態 |
リトライ待ち | 継続中の定期課金で課金を失敗し、再課金を待っている状態 または 一時停止後に再開し、再課金を待っている状態 |
永久停止 | 定期課金が完全に停止され再開不可な状態 |
作成失敗 | 定期課金作成のため初回課金を行うも決済失敗した状態 (定期課金として稼働していない状態) |
完了 | 指定した課金回数分の決済が終わった状態 または 分割払いが成功した状態 |
処理 | 説明 |
---|---|
一時停止・永久停止・停止予約 | 停止処理をするとその時点から継続的な課金を行わないようになる 設定によっては停止リクエストがあった時、次回課金実行日まで停止しないようにすることも可能 |
再開 | 一時停止になっている定期課金を再開する 再開後はリトライ日、もしくは次回課金日に実行される |
リトライ | 定期課金のサイクルでの課金が失敗した際に一定間隔で再度課金を実行する 間隔・回数はリクエストのパラメータまたは管理画面より設定が可能 |
支払い情報の更新 | クレジットカード等、消費者の支払い情報を変更する 詳細はこちら |
定期課金情報の更新 | 管理画面から次回課金日、次回課金金額、メタデータ、メールアドレスなどの編集が可能 |
仮売上 | 定期課金の初回課金を仮売上にする キャプチャされた後に定期課金が開始しサイクル毎に課金が行われる |
回数制限付き定期課金 | 回数を制限した定期課金を行い、回数分の課金が完了後終了する※ |
初回無料の定期課金 | 初回処理でセキュリティコード認証を行うことで、初回の金額が0円の定期課金を作成することが可能 |
分割払い | 各決済フォームで分割回数を指定して決済すると、定期課金として作成される APIで作成する場合は定期課金オブジェクトでフィールドを指定する必要あり |
定期課金の支払い失敗後、再度課金を行うことができます。
課金に失敗した日から指定した間隔日後に課金の再実行され、その後成功するまで設定された回数リトライを行います。
リトライを行う間隔は定期課金毎に任意で指定できます。
指定方法 | 処理 |
---|---|
パラメータなどで間隔を指定する | 指定した間隔でリトライ ※各実装方法でのページを参照してください |
指定せずデフォルトで間隔が設定される | 定期課金の周期÷リトライ回数 で計算された間隔でリトライ ※1 ※2 |
リトライを行う回数は 管理画面>一般設定>決済サービス>全体設定 から設定できます。
一時停止中の定期課金を再開すると、リトライ回数(課金失敗回数)のカウントはリセットされ、設定した回数リトライが行われます。
リトライが成功した場合は期間(サイクル)を参照して次回課金日が設定されます。
初回を含め、設定回数以上のリトライが実行された場合、失敗後一時停止します。
例:
課金間隔:毎月
リトライ回数:3回
→リトライ間隔・・・10日(30日÷3)
状態 | 挙動 |
---|---|
リトライするも失敗した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ失敗→停止 |
リトライし成功した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ成功 7/1:次回課金 |
リトライ日は、「課金失敗日からリトライ間隔後の日付」と「指定した次回課金日」を参照して決定されます。
課金が失敗してリトライ待ち
になった定期課金の次回課金日を変更しても、「課金失敗日からリトライ間隔後の日付」の方が未来の場合は次回課金日にリトライされないためご注意ください。
また、加盟店さまで作成済定期課金のリトライ間隔の変更は行えないため、リトライ間隔後より前に課金を実行させたい場合はサポートデスクへご連絡ください。
継続中
の定期課金を任意で一時停止して再開した場合は、リトライ待ち
であってもリトライ日が表示されず、次回課金日に課金を実行します。
定期課金に停止処理をすると、その時点から継続的な課金を行わないようになります。
停止する方法は下記です。
方法 | 設定(指定) |
---|---|
管理画面 | 「一時停止」「永久停止」ボタンを押下 停止予約を設定 ※ページ下部に詳細を記載 |
API | 定期課金:UPDATE でstatus :suspended に更新定期課金:CREATEで schedule_settings.termination_mode :on_next_payment を指定 |
設定した回数リトライが失敗 | 無し(自動で一時停止) ※前ページで記載 |
定期課金作成時、もしくは作成後管理画面(またはAPI)で操作することで、
停止リクエストがあった時に次回課金実行日に定期課金を停止させるかどうかを設定することができます。
※ここでの「停止リクエスト」は一時停止、永久停止の両方を指します
「定期課金を停止する場合」
定期課金の停止リクエストを受けた場合に停止するタイミングを設定できます。
選択肢 | 処理 |
---|---|
すぐに定期課金を停止 | 即時停止 |
次回課金日に定期課金を停止 | リトライ含む次回の課金実行日に、課金せず停止 |
「次回課金実行日の処理(リトライ日含む)」
リトライ含む次回の課金実行日の処理を設定できます。
前の項目で「次回課金日に定期課金を停止」を指定した場合に選択できるようになります。
選択肢 | 処理 |
---|---|
そのまま課金 | 停止リクエストがない場合は課金を継続 停止リクエストを受けた場合は、次回課金日に停止 |
定期課金を一時停止 | 次回課金実行日に一時停止 |
定期課金を永久停止 | 次回課金実行日に永久停止 |
一時停止している定期課金に限り、再開処理をすることができます。
再開方法については下記の表を確認してください。
方法 | 処理 |
---|---|
管理画面 | 管理画面>定期課金詳細 から「再開」ボタンを押す |
API | 定期課金:UPDATE でstatus :current に更新 |
再開する時、設定されていた次回課金日の状態によって挙動が異なります。
次回課金日の状態 | 処理 |
---|---|
再開日に対して次回課金日が未来 | 既に設定されている次回課金日に課金する |
再開日に対して次回課金日が過去 | 再開直後には課金されず、再開時から最も近い将来のサイクル日に次回課金日がセットされる |
再開日が次回課金日と同日 | 再開直後に即時課金される ※当日に既に課金が実行されていれば課金されない |
次回課金日が過去の場合の例:
毎月1日の毎月サイクルの定期課金
8/1:課金
8/15:一時停止(次回課金日は9/1の状態)
10/2:再開(直後には課金されない)
→次回課金日が自動で11/1にセットされる
前回課金の処理結果によって処理が分かれます。
再開時に過去の未払いの決済がある場合、元の課金スケジュールを後ろ倒しで支払い予定を追加します。
例:
毎月1日の毎月サイクル、5回の回数指定で、
8/15に停止し、10/2に再開した際の課金スケジュールは下記です。
未払いの9/1・10/1の分は後ろ倒し、1/1・2/1と支払い予定が追加されます(本来は12/1が最後の支払予定日)
停止しない | 停止して再開 |
---|---|
8/1 | 8/1 |
9/1 | -(停止中) |
10/1 | -(停止中) |
11/1 | 11/1 |
12/1(完了) | 12/1 |
– | 1/1 |
– | 2/1(完了) |
トランザクション履歴とは、実行済みの課金と返金のことです。
貸借のアクティビティにアクセスできるようになっています。
課金や返金の一覧よりもこの閲覧方式を用いることを推奨します。
フィールド | データ型 | 備考 |
---|---|---|
merchant_id | string (UUID) | 課金が作成された加盟店のユニークID |
merchant_name | string | 加盟店名 |
store_id | string (UUID) | 課金が作成された店舗のユニークID |
store_name | string | 店舗名 |
resource_id | string (UUID) | このエントリーが参照しているリソースのユニークIDtype がcharge であれば課金のID、refund であれば返金のID |
amount | number | 課金または返金の金額 |
currency | string (ISO-4217) | トランザクションの通貨 |
amount_formatted | string | 補助単位があればその小数の値を含む課金か返金の金額 |
type | string | charge またはrefund のいずれか |
status | string | pending , successful , failed , errored のいずれか |
payment_type | string | 決済処理の支払い方法 |
mode | string | liveまたはtest |
metadata | json | 課金に付与されたメタデータ |
bank_transfer_latest_deposit_date | string (ISO-8601) | 銀行振込の場合 振込日 |
bank_transfer_payment_status | string | 銀行振込の場合 決済のステータスunpaid(未入金), insufficient(不足), exact(丁度), exceeded (超過) のいずれか |
created_on | string (ISO-8601) | トランザクションの日時 |
定期課金オブジェクトに対する支払いGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){paymentId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments/{paymentId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments/11e89a0a-8cee-d660-b984-3fcaaed46e7c \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z"
}
トランザクションオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
curl --request GET \
--url https://api.univapay.com/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
from | string (ISO-8601) | 指定された日時以降でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
to | string (ISO-8601) | 指定された日時以前でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
search | string | 課金ID, 返金ID, メタデータの情報、カード名義人名、カード名義人メールアドレス、カード番号下4桁のいずれかでフィルタリングする |
type | string | charge ,refund のいずれか |
status | string | 状態でフィルタリングする 課金もしくは返金の状態のいずれか |
mode | string | 実行モードでフィルタリングするlive またはtest |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-f037-10ce-b891-9b43076af963",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:56.42805Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"cardholder_email_address": "test@test.com",
"brand": "visa",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-efeb-2efc-adc5-ff26c8964860",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:55.930755Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"cardholder_email_address": "demo@demo.com",
"brand": "master",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
<中略>
],
"has_more": true,
"total_hits": 99
}
消費者が自ら支払い方法を更新する方法はいくつか存在します。
新たに情報を登録して加盟店さまで既存の支払い情報と紐づけていただくか、既存の支払い情報を引き継いで更新する2つの場合に分かれます。
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | subscriptionid を利用したフォームを準備する※詳細はこちら |
ウィジェット・インラインフォーム | data-subscription-id を利用したフォームを準備する※詳細はこちら |
定期課金変更URL | 管理画面>定期課金>詳細 から、 カード情報変更フォームのURLを消費者に共有する |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
消費者が利用するフォーム | 加盟店さまの提供方法 |
---|---|
リンクフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
ウィジェット・インラインフォーム | カード登録のみのフォームを準備する ※メタデータやトークンIDなどで消費者を判別することが必須 |
支払い情報の確認・変更画面 | 別ページで設定、共有方法を記載 |
以下のページでは「支払い情報の確認・変更画面」についての利用方法を説明します。
支払い情報の確認・変更画面では、消費者が定期課金のカード情報変更や停止、リカーリングトークンの追加や変更が可能です。
決済時やカード登録時に入力したメールアドレスをキーにして、定期課金やリカーリングトークンが表示されます。
停止
になり、管理画面から閲覧できます。過去に行われた課金の情報も引き続き閲覧できます。詳細は下記のページで説明しています。
1.メール通知など、加盟店さまから案内された支払い情報の確認・変更画面URLをクリックする
※消費者へのURLの共有方法は、「消費者へのURLの共有方法」のページを参照してください。
2.メールアドレスを入力する(URLにメールアドレスを未指定の場合のみ)
3.指定のメールアドレス宛に届いた認証コードを入力し、ログインする
(認証コードの有効期限:5分)
4.各変更/停止処理を行う
5.処理ごとに通知メールが届く(通知設定がONの場合のみ)
※消費者の各処理が完了すると、処理ごとに加盟店さまに通知メールやウェブフックが送信されます。(通知メール設定およびウェブフックのトリガーがONの場合のみ)
支払い情報の確認・変更画面から実行可能な処理は、管理画面の 一般設定>一般>全体設定>支払い情報の確認・変更画面から設定できます。
設定項目 | 説明 | 消費者の操作 |
---|---|---|
消費者側で定期課金の表示 | 定期課金情報タブを表示 | – |
消費者側でお支払い方法の表示 | お支払方法タブを表示 | – |
消費者側で定期課金の停止 | 定期課金の停止を許可 | 定期課金情報>課金停止処理 |
消費者側でカードの名義・有効期限の変更 | リカーリングトークンのカード名義/有効期限更新を許可 ※定期課金情報タブからカード名義/有効期限を変更するには、定期課金のトークンがリカーリングである必要があります | 定期課金情報 or お支払方法>カード管理>名義・期限の変更 |
消費者側で新規カード登録 | リカーリングトークンの新規作成を許可 ※定期課金情報タブでは、リカーリングトークンを作成しながら選択した定期課金のカード情報を更新します | 定期課金情報 or お支払方法>カード管理>新規カード登録 |
消費者側でカードの削除 | リカーリングトークンの削除を許可 ※定期課金を利用中の場合は、削除できません | お支払方法>カード管理>カード削除 |
消費者側で他のカードの選択 | 登録済のリカーリングトークンの選択を許可 | 定期課金情報>カード管理>その他のカードを使う |
支払い情報の確認・変更画面のモードを本番/テストから選択できます。
すべての支払い情報の確認・変更画面に対して指定したモードが反映されます。
メールテンプレート内に${customer_refer_link}
のパラメータがある場合、支払い情報の確認・変更画面のURLが表示されます。
一般設定>一般>通知の「定期課金イベント発生時に通知」をONにしてください。
上記設定によって、定期課金関連の通知メールにURLが表示されます。
※メールテンプレートのデフォルト内容はこちらを参照してください
「定期課金イベント発生時に通知」の設定次第で、通知メールテンプレートの利用方法が異なります。
※都度課金と定期課金を併用している場合、「定期課金イベント発生時に通知」をONし、メールの文面を分けることを推奨します
定期課金イベント発生時に通知 | 利用方法 |
---|---|
ON | テンプレート「決済完了通知」「決済失敗」に${customer_refer_link} を追加して作成してください。※都度課金の場合は、リカーリングトークンがある場合のみURLにログインできます |
OFF | ページ下記説明を参照した上で作成してください。 |
前提として、定期課金関連のメールには二種類のテンプレートが存在します。
サブテンプレートの文面は、メインテンプレートの${subscription_payment_details:- }
として反映されます。
種類 | テンプレート名 |
---|---|
メインテンプレート | ・定期課金作成 ・定期課金決済 ・定期課金決済失敗 ・定期課金の一時停止 |
サブテンプレート | ・定期課金詳細 ・回数制限つき定期課金の詳細 |
用途に合わせてテンプレートにパラメータを追加してください。
作成するテンプレート | 利用方法 |
---|---|
メイン・サブ両方を独自に作成する | サブテンプレート内に${customer_refer_link} を、メインテンプレートに ${subscription_payment_details:- } を追加してください。 |
メインのみを独自に作成する | ${subscription_payment_details:- } を追加してください。${subscription_payment_details:- } を追加しない場合は、${customer_refer_link} を追加してください。 |
${customer_refer_link}
を追加可能なメールテンプレート下記URLに店舗IDを入力して消費者に共有することで、支払い情報の確認・変更画面へアクセスできます。
加盟店さま側でメールアドレスを指定したい場合は、メールアドレスも入力してください。
方法 | URL |
---|---|
メールアドレスを指定しない | https://customer.univapay.com/stores/{店舗ID} |
メールアドレスを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス} |
メールアドレスおよび表示させる定期課金IDを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス}&subscriptionId={定期課金ID} |
対象の定期課金を選択し「定期課金の管理画面」のメール送信ボタンを押すと、消費者のメールアドレス宛に「定期課金のカード情報変更の案内」の通知メールが送信されます。
このページは旧システム(https://cp.ccps.jp/の管理画面で利用できるサービス)を利用されている加盟店さまが対象です。
新システム(本ドキュメントで説明しているシステム)への移行対応についての案内を記載しています。
各ページでシステム移行の期限や、加盟店さまで必要な対応などについて記載しています。
2025年3月31日
こちらの期限はラッパー利用店舗も対象です。
※ラッパーとは
旧システムで実装されている決済送信先及び決済リクエストパラメータ変更の必要がなく、新システム側で決済が稼働できる機能。
※https://cp.ccps.jp/の管理画面でご利用できるサービスが対象で、対面QR決済サービスは対象外です。
下記決済サービスに関しては新システムでは取り扱いを行いません。
加盟店さまにメールで通知した案内文はこちらを確認して下さい。
※本文中のURLは一部差し替えを行っています
旧システムで利用されていた機能と類似した機能、仕様についての対比表です。
詳細については各リンク先のページ及び、利用開始までの流れを記載した初期設定のページを確認して下さい。
旧システム | 旧システムの仕様・機能 | 新システム | 新システムの仕様・機能 |
---|---|---|---|
決済番号 | 決済毎に自動で発番される数字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」 |
決済完了メールのメール設定 | ・オプション設定で商品毎に設定が可能 | 通知メールテンプレート | ・商品毎のメール設定は商品のメタデータを活用 ・商品にメタデータを付与することでカスタマイズ ・何も登録していない場合はデフォルトのメールを送信 |
リクエスト時のパラメータの比較表です。
主にクレジットカード決済に関連するものを記載しています。
詳細はパラメータについて説明している各ページ及び、利用開始までの流れを記載した初期設定のページを確認して下さい。
項目 | 旧システム | 新システム ウィジェット方式 インライン方式の場合 | 新システム API方式の場合 |
---|---|---|---|
店舗ID | sid | data-app-id ※アプリトークンで店舗を判断し認証 | Authorization: Bearer {secret}.{jwt} ※アプリトークンとシークレットで店舗を判断し認証 |
ジョブタイプ | job 仮売上: AUTH 実売上: SALES 有効性チェック: CHECK など | オーソリ&キャプチャ:data-capture セキュリティコード認証: data-cvv-authorize など | オーソリ&キャプチャ:capture セキュリティコード認証: cvv_authorize.enabled など |
サービス種別 | svid クレジット: 1 | data-payment-methods クレジット: card | payment_type クレジット: card |
処理種別 | ptype 1 =トークン決済(memberpay.aspx のみ)1 =ゲートウェイ決済( payment.aspx のみ PCI DSS準拠環境以外では禁止)2 =3Dセキュア認証をするゲートウェイ決済3 =リンク方式4 =リンク方式(3DS) | なし | なし |
トークンタイプ | なし | data-token-type ・ one_time (デフォルト)・ recurring ・ subscription ※ data-checkout と組み合わせる | type ・ one_time ・ recurring ・ subscription |
チェックアウトタイプ | なし | data-checkout トランザクショントークンを作成するだけ: token トランザクショントークンと課金の両方を作成する: payment ※ data-token-type と組み合わせる | なし ※リクエスト時 「 ~/tokens 」「~/charges 」で指定 |
店舗オーダー番号 (顧客ID) | sod | data-univapay-reference-id | univapay-reference-id |
トークンID | upcmemberid | なし | transaction_token_id |
商品金額 | siam1 | data-amount | amount |
通貨 | なし | data-currency | currency |
自動課金周期 | actp1 2 =毎週 3 =隔週4 =毎月 5 =隔月6 =3ヶ月 7 =6ヶ月8 =1年20 =日数指定21 =日付指定22 =開始日指定(月周期)23 =開始日指定(日周期)24 =翌月日付指定 | data-subscription-period ・ daily (毎日)・ weekly (毎週)・ biweekly (隔週)・ monthly (毎月)・ bimonthly (隔月)・ quarterly (3ヶ月)・ semiannually (6ヶ月)・ annually (毎年)・ P●D (〇日毎)・ P●M (〇ヶ月毎) | period ・ daily (毎日)・ weekly (毎週)・ biweekly (隔週)・ monthly (毎月)・ bimonthly (隔月)・ quarterly (3ヶ月)・ semiannually (6ヶ月)・ annually (毎年)cyclical_period ・P●D ,P●M (〇日、〇ヶ月など)(ISO-8601 Duration) |
自動課金日付 | acdc1 ※自動課金周期 に「 20 」「21 」「22 」「23 」「24 」指定時20 =X日周期21 =X日付22 =X日後開始23 =X日周期24 =翌月日付指定 | data-subscription-start ※開始日指定:yyyy-mm-dd形式の日付指定 | schedule_settings.start_on ※開始日指定:yyyy-mm-dd形式の日付指定 |
自動課金間隔 | acmc1 ※自動課金周期 に「 21 」「22 」「23 」「24 」指定時21 =(指定値)✕ ヶ月毎 22 =(指定値)✕ ヶ月毎23 =X日後開始 24 =(指定値)✕ ヶ月毎 | なし | なし |
自動課金額 | acam1 | data-amount ※初回課金金額 data-subscription-qty ※金額指定の回数制限を利用する場合 | amount ※初回課金金額subscriptiont_plan.fixed_cycle_amount ※金額指定の回数制限を利用する場合 |
自動課金回数 | acrm1 「 0 」指定・省略時=無制限 | data-subscription-plan ・ fixed_cycles =固定の回数の支払い・ fixed_cycle_amount =都度の課金額を固定 | subscription_plan.plan_type ・ fixed_cycles =固定の回数の支払い・ fixed_cycle_amount =都度の課金額を固定 |
自動課金リトライ回数 | acrt1 未指定時は3回 | なし ※3回(初回含まないため実質2回。管理画面で変更可) | なし ※3回(初回含まないため実質2回。管理画面で変更可) |
自動課金リトライ周期 | acrd1 (指定値)✕ 日 | data-subscription-retry-interval | schedule_settings.retry_interval |
支払い回数 | sc | data-allow-card-installments (プルダウンで消費者に支払い回数を表示させる) data-installment-qty ( data-installment-plan= “fixed_cycles” の場合) | installment_plan.fixed_cycles ( installment_plan.plan_type がfixed_cycles の場合) |
店舗復帰URLコード | sucd ※事前に当社コントロールパネルで登録必要 | data-auto-submit ※ <form action=”<任意のURL>”> に指定 | なし |
決済番号 | pid | charge_id | なし リクエスト時 「 ~/charges/{id}/~ 」で指定 |
自動課金番号 | acid | subscription_id | なし リクエスト時 「 ~subscriptions/{subscriptionId} 」で指定 |
メールアドレス | em | data-email | email |
商品コード | sicd1 | data-product-codes | なし |
項目 | 旧システム (キックバック) | 新システム (ウェブフック) |
---|---|---|
決済番号 | pid | id |
処理結果 | rst | status |
管理番号(モードの判断) | ap ※本番モード時は「決済番号」 ※テストモード時は「TestMode」 | mode ※テストモード時は「 test 」 |
エラーコード | ec ※成功時: ER000000000 | “error”: {“message””details”} |
店舗オーダー番号 | sod | univapay-reference-id |
決済金額合計 | ta | charged_amount |
ジョブタイプ | job | transaction_token_type |
自動課金周期 | actp | period |
自動課金日付 | acdc | startOn |
定期課金の支払い失敗後、再度課金を行うことができます。
課金に失敗した日から指定した間隔日後に課金の再実行され、その後成功するまで設定された回数リトライを行います。
リトライを行う間隔は定期課金毎に任意で指定できます。
指定方法 | 処理 |
---|---|
パラメータなどで間隔を指定する | 指定した間隔でリトライ ※各実装方法でのページを参照してください |
指定せずデフォルトで間隔が設定される | 定期課金の周期÷リトライ回数 で計算された間隔でリトライ ※1 ※2 |
リトライを行う回数は 管理画面>一般設定>決済サービス>全体設定 から設定できます。
一時停止中の定期課金を再開すると、リトライ回数(課金失敗回数)のカウントはリセットされ、設定した回数リトライが行われます。
リトライが成功した場合は期間(サイクル)を参照して次回課金日が設定されます。
初回を含め、設定回数以上のリトライが実行された場合、失敗後一時停止します。
例:
課金間隔:毎月
リトライ回数:3回
→リトライ間隔・・・10日(30日÷3)
状態 | 挙動 |
---|---|
リトライするも失敗した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ失敗→停止 |
リトライし成功した | 6/1:失敗 6/11:リトライ失敗 6/21:リトライ成功 7/1:次回課金 |
リトライ日は、「課金失敗日からリトライ間隔後の日付」と「指定した次回課金日」を参照して決定されます。
課金が失敗してリトライ待ち
になった定期課金の次回課金日を変更しても、「課金失敗日からリトライ間隔後の日付」の方が未来の場合は次回課金日にリトライされないためご注意ください。
また、加盟店さまで作成済定期課金のリトライ間隔の変更は行えないため、リトライ間隔後より前に課金を実行させたい場合はサポートデスクへご連絡ください。
継続中
の定期課金を任意で一時停止して再開した場合は、リトライ待ち
であってもリトライ日が表示されず、次回課金日に課金を実行します。
定期課金オブジェクトに対する支払いLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){subscriptionId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/subscriptions/{subscriptionId}/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/37ff5664-18c6-11e7-8221-ff4914d76afc/subscriptions/aaadee6a-18e3-11e7-a461-e3b078a7dc52/payments \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11e89a0a-8cee-d660-b984-3fcaaed46e7c",
"due_date": "2018-08-21",
"zone_id": "Asia/Tokyo",
"amount": 10000,
"currency": "JPY",
"amount_formatted": 10000,
"is_paid": false,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.961256Z",
"updated_on": "2018-08-07T06:24:33.961256Z"
},
{
"id": "11e89a0a-8cc5-2662-9460-2b14b1a601ba",
"due_date": "2018-08-07",
"zone_id": "Asia/Tokyo",
"amount": 1000,
"currency": "JPY",
"amount_formatted": 1000,
"is_paid": true,
"is_last_payment": false,
"created_on": "2018-08-07T06:24:33.646223Z",
"updated_on": "2018-08-07T06:24:33.88776Z"
}
],
"has_more": false
}
加盟店リソースはアカウントの所有者についての情報と、この加盟店で作成される店舗のデフォルト設定を表示します。
フィールド名 | データ型 | 備考 |
---|---|---|
id | UUID | 加盟店を識別するID。一般的に merchantId として使われます。 |
name | string | 加盟店の名称 |
string | 加盟店のメールアドレス | |
verified | boolean | 加盟店が審査済みかどうか |
created_on | string (ISO-8601) | 加盟店の作成日時 |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国。 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座への送金前に積み立てられた最低金額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで顧客にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す。 |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか。 trueの場合、別のメールアドレスで使用されているカードは拒否される。 |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | string (ISO-8601) amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類none – 使用できないbounded – トランザクショントークンを作成するときにusage_period パラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_window で指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド名 | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
決済、定期課金、リカーリングトークンの情報を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)の決済情報の生成に失敗した |
返金オブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド 赤字は必須 ※は条件付き必須 | データ型 | 備考 |
---|---|---|
amount | number | 課金金額以下の返金金額 |
currency | string (ISO-4217) | ISO 4217の通貨コードで指定 |
reason | string | 返金理由fraud , duplicate , customer_request のいずれか |
message | string | 返金の詳細理由 |
metadata | json | 自由に設定可能 詳細はメタデータを参照 |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{
"amount": 250,
"currency": "JPY",
"reason": "customer_request",
"message": "15 percent off",
"metadata": {
"coupon": "VIP007"
}
}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "pending",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
定期課金に停止処理をすると、その時点から継続的な課金を行わないようになります。
停止する方法は下記です。
方法 | 設定(指定) |
---|---|
管理画面 | 「一時停止」「永久停止」ボタンを押下 停止予約を設定 ※ページ下部に詳細を記載 |
API | 定期課金:UPDATE でstatus :suspended に更新定期課金:CREATEで schedule_settings.termination_mode :on_next_payment を指定 |
設定した回数リトライが失敗 | 無し(自動で一時停止) ※前ページで記載 |
定期課金作成時、もしくは作成後管理画面(またはAPI)で操作することで、
停止リクエストがあった時に次回課金実行日に定期課金を停止させるかどうかを設定することができます。
※ここでの「停止リクエスト」は一時停止、永久停止の両方を指します
「定期課金を停止する場合」
定期課金の停止リクエストを受けた場合に停止するタイミングを設定できます。
選択肢 | 処理 |
---|---|
すぐに定期課金を停止 | 即時停止 |
次回課金日に定期課金を停止 | リトライ含む次回の課金実行日に、課金せず停止 |
「次回課金実行日の処理(リトライ日含む)」
リトライ含む次回の課金実行日の処理を設定できます。
前の項目で「次回課金日に定期課金を停止」を指定した場合に選択できるようになります。
選択肢 | 処理 |
---|---|
そのまま課金 | 停止リクエストがない場合は課金を継続 停止リクエストを受けた場合は、次回課金日に停止 |
定期課金を一時停止 | 次回課金実行日に一時停止 |
定期課金を永久停止 | 次回課金実行日に永久停止 |
一時停止している定期課金に限り、再開処理をすることができます。
再開方法については下記の表を確認してください。
方法 | 処理 |
---|---|
管理画面 | 管理画面>定期課金詳細 から「再開」ボタンを押す |
API | 定期課金:UPDATE でstatus :current に更新 |
再開する時、設定されていた次回課金日の状態によって挙動が異なります。
次回課金日の状態 | 処理 |
---|---|
再開日に対して次回課金日が未来 | 既に設定されている次回課金日に課金する |
再開日に対して次回課金日が過去 | 再開直後には課金されず、再開時から最も近い将来のサイクル日に次回課金日がセットされる |
再開日が次回課金日と同日 | 再開直後に即時課金される ※当日に既に課金が実行されていれば課金されない |
次回課金日が過去の場合の例:
毎月1日の毎月サイクルの定期課金
8/1:課金
8/15:一時停止(次回課金日は9/1の状態)
10/2:再開(直後には課金されない)
→次回課金日が自動で11/1にセットされる
前回課金の処理結果によって処理が分かれます。
再開時に過去の未払いの決済がある場合、元の課金スケジュールを後ろ倒しで支払い予定を追加します。
例:
毎月1日の毎月サイクル、5回の回数指定で、
8/15に停止し、10/2に再開した際の課金スケジュールは下記です。
未払いの9/1・10/1の分は後ろ倒し、1/1・2/1と支払い予定が追加されます(本来は12/1が最後の支払予定日)
停止しない | 停止して再開 |
---|---|
8/1 | 8/1 |
9/1 | -(停止中) |
10/1 | -(停止中) |
11/1 | 11/1 |
12/1(完了) | 12/1 |
– | 1/1 |
– | 2/1(完了) |
加盟店オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url http://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"verification_data_id": "11edf541-54f3-2a58-9afe-b372c6f5fc0a",
"name": "管理画面ガイド",
"email": "merchant@test.com",
"notification_email": "merchant@test.com",
"verified": true,
"created_on": "2023-05-18T06:00:45.870218Z",
"configuration": {
"percent_fee": 3.400,
"flat_fees": [
{
"amount": 30,
"amount_formatted": 30,
"currency": "JPY"
}
],
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"transfer_schedule": {
"wait_period": "P7D",
"period": "monthly",
"full_period_required": null,
"day_of_week": null,
"week_of_month": null,
"day_of_month": null,
"weekly_closing_day": null,
"weekly_payout_day": null
},
"user_transactions_configuration": {
"enabled": true,
"notify_customer": true,
"notify_on_test": true,
"notify_on_recurring_token_creation": true,
"notify_on_recurring_token_cvv_failed": true,
"notify_on_webhook_failure": true,
"notify_on_webhook_disabled": true,
"notify_user_on_failed_transactions": true,
"notify_customer_on_failed_transactions": true,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": true,
"notify_on_authorizations": true,
"notify_on_cvv_authorizations": false,
"notify_on_cancels": true,
"customer_refer_link_enabled": true,
"notify_on_convenience_expiry": true
},
"recurring_token_configuration": {
"recurring_type": "infinite",
"charge_wait_period": "PT20S",
"card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": true,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": "P20D",
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": 5,
"limit_refund_by_sales": {
"enabled": true,
"period": "daily",
"rolling_window": false
}
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": 3.300,
"american_express": 3.500,
"mastercard": 3.300,
"maestro": null,
"discover": null,
"jcb": 3.500,
"diners_club": 3.300,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": true,
"allow_merchant_due_date_patch": true
},
"customer_management_configuration": {
"enabled": true,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": false,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": true
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": true
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"default_extension_period": "PT24H",
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_enabled": true
},
"platform_credentials_enabled": false,
"tagged_platform_credentials_enabled": false
},
"tms_merchant_data": null
}
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
返金オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | ステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
支払い情報の確認・変更画面では、消費者が定期課金のカード情報変更や停止、リカーリングトークンの追加や変更が可能です。
決済時やカード登録時に入力したメールアドレスをキーにして、定期課金やリカーリングトークンが表示されます。
停止
になり、管理画面から閲覧できます。過去に行われた課金の情報も引き続き閲覧できます。詳細は下記のページで説明しています。
店舗は、決済を分類したい場合や取引ごとの設定を分けたい場合などに用いられます。トランザクショントークンは、アプリケーショントークン経由でストアに紐づいています。
フィールド | データ型 | 備考 |
---|---|---|
id | UUID | 店舗を区別するUUID |
name | string | 店舗の表示名 |
string | 店舗のメールアドレス | |
verified | boolean | 店舗が審査済みかどうか |
created_on | string (ISO-8601) | 店舗が作成された時間(ミリ杪, UNIX時間) |
configuration.percent_fee | number | この店舗でのトランザクションごとの手数料率 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.flat_fees | number | この店舗の固定トランザクション費用 ※実際の精算上の金額が正確に反映されていない場合があります |
configuration.logo_url | string | ストアロゴのURL |
configuration.country | string | この店舗の拠点となる国 「外国の」カードと見なされるものに影響する |
configuration.language | string | デフォルトの言語 |
configuration.display_time_zone | string | デフォルトの表示タイムゾーン |
configuration.min_transfer_payout | string | 登録された銀行口座に振り込む前に蓄積された資金の最低額 |
configuration.maximum_charge_amounts | string | デフォルトの最大課金額 |
configuration.user_transactions_configuration.enabled | boolean | トランザクションで加盟店にメールを送信するかどうか |
configuration.user_transactions_configuration.notify_customer | boolean | トランザクションで消費者にメールを送信するかどうか |
configuration.card_configuration.enabled | boolean | カードが利用可能か |
configuration.card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
configuration.card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
configuration.card_configuration.forbidden_card_brands | array[string] | この店舗での使用が許可されていないカードブランドのリスト |
configuration.card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
configuration.card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか 外国のカードとは、その国が店舗の国と同じではないカード |
configuration.card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうか trueの場合、別のメールアドレスで使用されているカードは拒否される |
configuration.card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
configuration.card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
configuration.card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
configuration.card_configuration.card_limit.duration | string (ISO-8601) | amountに対する期間 |
configuration.qr_scan_configuration.enabled | boolean | QRコードが利用可能か |
configuration.qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
configuration.convenience_configuration.enabled | boolean | コンビニ決済が利用可能か |
configuration.recurring_token_configuration.recurring_type | string | 使用可能なリカーリングトークンの種類 none – 使用できない bounded – トランザクショントークンを作成するときにusage_periodパラメーターとして定義された期間に制限される |
configuration.recurring_token_configuration.charge_wait_period | string (ISO-8601) | リカーリングトークンを再利用できる間隔 |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、この店舗にCVV確認が必要かどうか |
configuration.recurring_token_configuration.card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、店舗のデフォルト通貨での最大金額 |
configuration.security_configuration.inspect_suspicious_login_after | string (ISO-8601) | 疑わしいログイン通知が加盟店に送信されるまでの期間 |
configuration.security_configuration.refund_percent_limit | number | 加盟店が行った合計課金額から返金可能な金額の割合 |
configuration.security_configuration.limit_charge_by_card_configuration.quantity_of_charges | number | duration_windowで指定された期間内に行うことができる課金の数 |
configuration.security_configuration.limit_charge_by_card_configuration.duration_window | string (ISO-8601) | 課金可能な期間 |
configuration.installments_configuration.enabled | boolean | 分割払いが有効かどうか |
configuration.installments_configuration.min_charge_amount | number | デフォルト通貨でのサイクルごとの最小課金額 |
configuration.installments_configuration.max_payout_period | string (ISO-8601) | 分割払いの最大期間 |
configuration.installments_configuration.failed_cycles_to_cancel | number | 分割払いが自動的にキャンセルされるまでの失敗した課金数 |
configuration.card_brand_percent_fees.visa | number | Visaカードの手数料率 |
configuration.card_brand_percent_fees.american_express | number | アメリカン・エキスプレスカードの手数料率 |
configuration.card_brand_percent_fees.mastercard | number | Mastercardの手数料率 |
configuration.card_brand_percent_fees.maestro | number | Maestroカードの手数料率 |
configuration.card_brand_percent_fees.discover | number | Discoverカードの手数料率 |
configuration.card_brand_percent_fees.jcb | number | JCBカードの手数料率 |
configuration.card_brand_percent_fees.diners_club | number | ダイナーズクラブカードの手数料率 |
configuration.card_brand_percent_fees.union_pay | number | UnionPayカードの手数料率 |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
商品機能は加盟店さまが販売している商品の、名称や金額・課金方式について登録することができます。
登録した商品は各決済フォームで選択・指定することでテンプレートのように使用することができます。
※ご利用にはオプション契約が必要になります。
まず管理画面で商品を作成します。
作成方法、各項目についてはこちらを確認して下さい。
次に各決済フォームで登録した商品の情報を指定します。
決済方式 | 利用方法 |
---|---|
リンクフォーム | ・管理画面>リンクフォーム の作成画面で「商品」を有効 かつ 任意の商品を追加して保存 ・作成時に指定した商品コードをパラメータに追加 詳細はこちら |
ウィジェット・インラインフォーム | 作成時に指定した商品コードをパラメータに追加 詳細はこちら |
API | 非対応 |
この機能では、一度の決済で複数の商品を処理できます。
ただ、同時に決済できる商品の種類には利用する決済フォームごとに制限があります。
決済方式 | 可能な利用方法 |
---|---|
リンクフォーム | 都度課金商品同士の複数追加 都度課金商品と定期課金商品(1つまで)の複数追加 定期課金商品同士の複数追加 ※開発中 |
ウィジェット・インラインフォーム | 都度課金商品同士の複数追加 |
,
」(カンマ)で区切って下さい。app-id
,checkout
を指定する必要があります。amount
や定期課金の場合 period
等cvv-authorize
の指定が必要です。capture
を併用して指定してください。1.メール通知など、加盟店さまから案内された支払い情報の確認・変更画面URLをクリックする
※消費者へのURLの共有方法は、「消費者へのURLの共有方法」のページを参照してください。
2.メールアドレスを入力する(URLにメールアドレスを未指定の場合のみ)
3.指定のメールアドレス宛に届いた認証コードを入力し、ログインする
(認証コードの有効期限:5分)
4.各変更/停止処理を行う
5.処理ごとに通知メールが届く(通知設定がONの場合のみ)
※消費者の各処理が完了すると、処理ごとに加盟店さまに通知メールやウェブフックが送信されます。(通知メール設定およびウェブフックのトリガーがONの場合のみ)
返金オブジェクトのLISTリクエストには以下が必要です。(括弧内は入力箇所)
課金 / 返金などをまとめて表示させたい場合はトランザクション:Listを推奨します。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c3-3cfe-3bc0-abed-0bb96f792078/refunds \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007"
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
},
{
"id": "11ef32c9-f49b-a6ea-9f24-17662f077450",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"reason": "customer_request",
"message": "return",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:12:15.763927Z",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗"
}
],
"has_more": false,
"total_hits": 2
}
店舗オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"configuration": {
"percent_fee": null,
"flat_fees": null,
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"user_transactions_configuration": {
"enabled": null,
"notify_customer": null,
"notify_on_test": null,
"notify_on_recurring_token_creation": null,
"notify_on_recurring_token_cvv_failed": null,
"notify_on_webhook_failure": null,
"notify_on_webhook_disabled": null,
"notify_user_on_failed_transactions": null,
"notify_customer_on_failed_transactions": null,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": null,
"notify_on_authorizations": null,
"notify_on_cvv_authorizations": null,
"notify_on_cancels": null,
"customer_refer_link_enabled": null,
"notify_on_convenience_expiry": null
},
"recurring_token_configuration": {
"recurring_type": null,
"charge_wait_period": null,
"card_charge_cvv_confirmation": {
"enabled": null,
"threshold": null
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": null,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": null,
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": null,
"limit_refund_by_sales": null
},
"checkout_configuration": {
"ec_email": {},
"ec_products": {}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": null,
"american_express": null,
"mastercard": null,
"maestro": null,
"discover": null,
"jcb": null,
"diners_club": null,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": null,
"allow_merchant_due_date_patch": null
},
"customer_management_configuration": {
"enabled": null,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": null,
"prepaid_enabled": null,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": null,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": null,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": null
},
"qr_scan_configuration": {
"enabled": null,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"expiration_time_shift": {}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": null
},
"online_configuration": {},
"bank_transfer_configuration": {
"expiration_time_shift": {}
},
"platform_credentials_enabled": null,
"tagged_platform_credentials_enabled": null
},
"tms_store_data": null
}
店舗オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
パラメータでsearchを用い、店舗IDを指定することで特定の店舗をフィルタリングして表示することも可能です。
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
search | string | 店舗名でフィルタリングする |
curl --request GET \
--url http://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11eec3c2-c117-9386-809b-3fb44d6462d4",
"name": "管理画面ガイド_TEST店舗Ⅳ",
"created_on": "2024-02-05T01:06:12.557138Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee6d59-0aa7-3562-bbe0-af183c595b00",
"name": "管理画面ガイド_TEST店舗Ⅲ",
"created_on": "2023-10-18T01:52:49.32173Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee4bb9-8282-c9aa-8ac7-3f876b49d88b",
"name": "管理画面ガイド_TEST店舗Ⅱ",
"created_on": "2023-09-05T06:57:42.566226Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"merchant_name": "管理画面ガイド"
}
],
"has_more": false
}
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 当システムが生成した顧客を識別するUUID |
店舗オブジェクトに対するカスタマーUUIDリクエストには以下が必要です。(括弧内は入力箇所)
加盟店が顧客を識別するIDを利用している際、当システム側で顧客を識別するUUIDを生成することができます。
{id}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{id}/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 加盟店システムで発番する顧客を識別するID |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
--data "{"customer_id": "1234abcd"}"
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"customer_id": "03ad9882-a1ca-4064-a905-3682477bec10"
}
テンプレートでは、決済メールテンプレートの作成・編集ができます。
テンプレートを作成しない場合は、決済システム側のデフォルトの決済完了メールが送信されます。
別ページに例を記載していますが、その他メールの内容についてはテストモードで決済をすることで確認できます。
決済完了
決済が成功した時に送信されます。仮売上のキャプチャ、返金を行ったときもこのメールが送信されます。
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます。
件名
${store} ${transaction_type}のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${transaction_type}が行われましたのでご確認ください。
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[${transaction_type}金額 ] ${amount}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
決済失敗
決済が失敗したときに送信されます。コンビニ決済の入金期限が切れたときもこのメールを送信されます
件名
${store} 課金失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の課金が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[課金金額 ] ${amount}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリング作成
クレジットカード決済のリカーリングトークンの作成(支払い情報の登録)が成功した時に送信されます
通常課金や定期課金で「カード登録(リカーリングトークン作成)」をONにした時にも送信されます
件名
${store} お支払い情報登録のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリングトークンのCVV認証失敗
カード登録(定期課金の初回カード登録も含む)のみ行う処理で、CVV認証(セキュリティコード認証)が失敗した時に送信されます
件名
${store} お支払い情報登録失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報登録が失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法] ${payment_type}(${payment_brand})
[日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に成功した時に送信されます
件名
${store} 仮売上のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に成功しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に失敗した時に送信されます
件名
${store} 仮売上失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
[エラーコード ]${error_code}
[エラー内容 ]${error_message}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリ済課金のキャンセル
仮売上をキャンセルした時に送信されます
件名
${store} 課金キャンセルのお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、課金がキャンセルされましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[キャンセルID ] ${cancel_id}
[キャンセル金額] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金作成
初回の定期課金作成が成功した時に送信されます
件名
${store} 定期課金作成のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済
定期課金の2回目以降の決済が成功した時に送信されます
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます
件名
${store} 定期課金の${transaction_type}成功のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が行われましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済失敗
初回課金金額がある定期課金の作成 および 定期課金の2回目以降の決済が失敗した時に送信されます
件名
${store} 定期課金の${transaction_type}失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
※初回の決済に失敗した場合は、もう一度店舗のフォームから決済処理を行ってください。
[エラーコード]${error_code:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金一時停止
定期課金の一時停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の一時停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
${subscription_payment_details:- }
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金永久停止
定期課金の永久停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の永久停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更の案内
※開発中のため現在利用不可
管理画面の定期課金詳細にあるボタン(開発中)から、支払い情報の確認・変更画面を案内したときに消費者に送信されます
件名
${store} 定期課金のカード情報変更のご案内
本文
=========================================================
このメールは定期課金にお支払い情報が登録されているメールアドレス宛に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
いつも${store}をご利用いただき誠にありがとうございます。
定期課金のお支払い情報更新手続きは下記URLから行ってください。
——————————————————————————————-
${customer_refer_link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更完了
定期課金に登録されているカード情報が変更された時に送信されます
件名
${store} 定期課金の${payment_type}情報更新のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の${payment_type}情報が更新されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
[定期課金ID] ${subscription_id}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金の詳細
回数無制限の定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
回数制限付き定期課金の詳細
回数制限付き定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
分割払いの詳細
分割払いの情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[分割回数]${subscription_total_cycles_count}回
決済フォーム支払い発行
オプションでリンクフォームのメール送信機能を利用するときに送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご注文ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLから決済画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[金額 ] ${amount}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
決済フォームカード登録発行
リンクフォームのメール送信機能を利用するとき、課金を行わなずカード登録のみ行うリンクフォームの場合はこのメールが送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご連絡ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLからカード登録画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
振込期限切れ(督促なし)
銀行振込の振込期限が切れたときに送信されます
件名
${store} お振込期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限を過ぎましたので 無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
振込期限切れ(督促有り)
銀行振込の振込期限が切れた時、再度振込期限を指定して案内する設定の場合に送信されます
件名
${store} お振込のご確認
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が過ぎておりますが、
本日時点でご入金が確認できておりません。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[最終期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 申込完了
銀行振込の申込が行われたときに送信されます
件名
${store} 銀行振込 銀行振込のお申込を受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにお振込をお願いいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[振込期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 キャンセル
銀行振込の申込を加盟店さまが取り消した時に送信されます
件名
${store} 銀行振込 お申込がキャンセルされました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みがキャンセルとなりましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[キャンセル日] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了
銀行振込で消費者が入金したときに送信されます
件名
${store} お振込を確認しました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 不足入金
銀行振込で消費者の入金金額が不足していたときに送信されます
件名
${store} お振込金額の不足について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込金額が不足しております。
お手数ではございますが、内容をご確認いただき、
差額分のお振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了(超過)
銀行振込で消費者の入金金額が超過していたときに送信されます
件名
${store} お振込を確認しました(金額超過)
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[超過金額 ] ${exceeded_amount}
※上記金額が本来お振込いただく金額より超過で入金されています。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 振込期限の通知
振込期限日が近づくとこのメールを送信します
一般設定で送信するかどうか、何日前に送信するかを設定できます
件名
${store} お振込期限について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が近づいております。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[振込期日 ] ${date}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済のご案内
コンビニ決済の申込が行われたときに送信されます
件名
${store} コンビニ決済のお申し込みを受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにご入金をお願いいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期日 ] ${date}
[(各コンビニ情報の名称)] ${konbini_payment_details}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の取り消し
コンビニ決済の申込を加盟店側で取り消したときに送信されます
件名
${store} お支払いのキャンセルについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、キャンセルされましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済 期限切れ
コンビニ決済の入金期限が切れたときに送信されます
件名
${store} お支払期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お支払期限を過ぎましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ支払い
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期限 ] ${date}
※入金された場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の詳細
各コンビニエンスストアごとの、消費者が入金するための情報が含まれています。このテンプレートは「コンビニ決済のご案内」に含まれ、選択したコンビニエンスストアのテンプレート情報が入ります。
パラメータを利用することで、消費者が行った処理ごとに結果の値を動的に反映させることができます。
テンプレートごとに利用できるパラメータは異なるため、各テンプレートの作成画面から確認してください。
パラメータ | 説明 |
---|---|
${date} | 処理日時 ※下記テンプレートのみ入金期限日時を表示 ・銀行振込(申込完了 / 振込期限切れ(督促有り) / 振込期限の通知) ・コンビニ決済のご案内 |
${amount} | 金額 ※定期課金の場合は1回あたりの課金金額、分割の場合は総額を表示 |
${payment_type} | 支払方法 ※カード、オンライン決済など |
${payment_brand} | 支払ブランド ※Visa、MasterCard、PayPayオンラインなど |
${transaction_type} | 課金 or 返金 |
${store} | 店舗名 |
${charge_id} | 課金ID |
${card_holder_name} | カード名義 |
${email_address} | 顧客メールアドレス |
${descriptor} | 利用明細に記載される名称 ※テストモードの場合は機能せず、パラメータをそのまま表示 |
${contact_email} | 連絡先メールアドレス |
${contact_phone} | 連絡先電話番号 |
${charge_metadata} | 課金時に付与されたメタデータ |
${token_metadata} | トークン作成時に付与されたメタデータ |
${subscription_id} | 定期課金ID |
${subscription_period} | 定期課金のサイクル |
${subscription_next_date} | 定期課金の次回課金日 |
${subscription_initial_amount} | 定期課金の初回課金額 |
${subscription_amount} | 回数無制限の定期課金:1回あたりの課金金額 回数制限付き定期課金・分割払い:支払いの総額 |
${subscription_payment_details} | 定期課金の詳細 ・定期課金種類 ・課金回数/分割回数 |
${customer_refer_link} | カード情報変更/停止URL |
${link} | 決済フォームor支払いに必要な情報のリンク |
${customer_name} | 顧客名 |
${bank_accout_number} | 口座番号 |
${bank_branch_code} | 支店番号 |
${bank_branch_name} | 支店名 |
${bank_account_type} | 口座の種類 |
${bank_account_holder_name} | 振込先口座名 |
${bank_name} | 振込先銀行名 |
${deposit_amount} | 入金額 |
${deposit_needed} | 不足金額 |
${exeed_amount} | 超過入金額 |
${konbini_payment_details} | コンビニ支払い情報詳細 |
${konbini_transaction_id} | コンビニ支払い番号など |
${error_code} | エラーコード |
${error_message} | エラー内容 |
パラメータによっては、メタデータなど1つの項目に複数の値が存在したり、処理の種類によりパラメータに値が入らない場合があります。
こういった場合にパラメータ内でより細かい指定をすることで、パラメータや複数メタデータをそのままメール本文に反映するのを防ぐことができます。
${parameter:-(デフォルト値)}
を使用して下さい${charge_metadata.(キー)}
,${token_metadata.(キー)}
の形式で指定してください。パラメータ | メールに反映される情報 |
---|---|
${subscription_next_date:-無し} | 次回以降に支払いが残っている場合:2024/08/01 今回の支払いが最後だった場合:無し |
${charge_metadata.univapay-product-names} または ${token_metadata.univapay-product-names} | 商品名 |
${charge_metadata.univapay-phone-number} または ${token_metadata.univapay-phone-number} | 電話番号 |
${token_metadata.(キー)}
の利用が必須のパターン下記処理の場合は${charge_metadata.(キー)}
を指定してもメタデータが表示されません。
※商品機能をご利用にはオプション契約が必要になります。
商品ごとにメタデータを付与している場合、${charge_metadata.キー:-(空白)}
とすることで、指定したメタデータの値のみメール文面に反映させるような使い方ができます。
商品を利用した場合のみ表示したいメタデータの値が表示され、商品を利用しない決済の場合は空白になります。
①商品にメタデータを付与
商品ごとにメールで表示させたい文章をメタデータとして追加します。
②通知メールテンプレートを編集
商品メタデータのキーをproduct-text1
とする場合、
メール通知テンプレート内のタグを ${charge_metadata.product-text1:-}
とすることで、メールの各箇所に商品別のメール文章のみを表記することができます。
③通知メールでの反映を確認
商品ごとに異なる文章が表示され、商品を指定しない決済の時はメールに何も表示されないことが確認できれば問題ありません。
支払い情報の確認・変更画面から実行可能な処理は、管理画面の 一般設定>一般>全体設定>支払い情報の確認・変更画面から設定できます。
設定項目 | 説明 | 消費者の操作 |
---|---|---|
消費者側で定期課金の表示 | 定期課金情報タブを表示 | – |
消費者側でお支払い方法の表示 | お支払方法タブを表示 | – |
消費者側で定期課金の停止 | 定期課金の停止を許可 | 定期課金情報>課金停止処理 |
消費者側でカードの名義・有効期限の変更 | リカーリングトークンのカード名義/有効期限更新を許可 ※定期課金情報タブからカード名義/有効期限を変更するには、定期課金のトークンがリカーリングである必要があります | 定期課金情報 or お支払方法>カード管理>名義・期限の変更 |
消費者側で新規カード登録 | リカーリングトークンの新規作成を許可 ※定期課金情報タブでは、リカーリングトークンを作成しながら選択した定期課金のカード情報を更新します | 定期課金情報 or お支払方法>カード管理>新規カード登録 |
消費者側でカードの削除 | リカーリングトークンの削除を許可 ※定期課金を利用中の場合は、削除できません | お支払方法>カード管理>カード削除 |
消費者側で他のカードの選択 | 登録済のリカーリングトークンの選択を許可 | 定期課金情報>カード管理>その他のカードを使う |
支払い情報の確認・変更画面のモードを本番/テストから選択できます。
すべての支払い情報の確認・変更画面に対して指定したモードが反映されます。
返金オブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/refunds \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | 返金(Refund)に紐づくメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/refunds/11ef32c8-c721-823a-ba45-77212da778fa \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"metadata": {"customer_id":5555}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32c8-c721-823a-ba45-77212da778fa",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"charge_id": "11ef32c3-3cfe-3bc0-abed-0bb96f792078",
"status": "successful",
"amount": 250,
"currency": "JPY",
"amount_formatted": 250,
"reason": "customer_request",
"message": "15 percent off",
"error": null,
"metadata": {
"coupon": "VIP007",
"customer_id": 5555
},
"mode": "test",
"created_on": "2024-06-25T07:58:58.748326Z"
}
リンクフォーム / ウィジェットが表示されると、パラメータで指定されたアプリケーショントークンに関連した店舗の決済設定を取得する為に自動的にAPIにリクエストを行います。
決済設定は、リンクフォーム / ウィジェットを動作する為に必要な様々な設定情報の集合です。
フィールド | データ型 | 備考 |
---|---|---|
mode | string | ウィジェットに設定されたアプリケーショントークンのモード |
name | string | ストア名 |
logo_image | string | ストアのロゴ画像のURL |
recurring_token_privilege | string | このストアのリカーリングトークンの権限。none (なし), bounded (制限付き), infinite (無制限) のいずれか。 |
card_configuration.enabled | boolean | カードが利用可能か |
card_configuration.debit_enabled | boolean | デビットカードが利用可能か |
card_configuration.prepaid_enabled | boolean | プリペイドカードが利用可能か |
card_configuration.forbidden_card_brands | array[string] | このストアでの使用が許可されていないカードブランドのリスト |
card_configuration.allowed_countries_by_ip | array[string] | IPアドレスが課金を許可されていない国のリスト |
card_configuration.foreign_cards_allowed | boolean | 外国のカードを許可するかどうか。 外国のカードとは、その国がストアの国と同じではないカードを指す |
card_configuration.fail_on_new_email | boolean | 以前に特定のメールアドレスで使用されたカードを許可するかどうかtrue の場合、別のメールアドレスで使用されているカードは拒否される |
card_configuration.allow_empty_cvv | boolean | カード払いのCVVチェックを有効にするかどうか |
card_configuration.card_limit.amount | number | 定義された期間、カードごとに利用を制限する金額 |
card_configuration.card_limit.currency | string (ISO-4217) | amountが定義されている通貨 |
card_configuration.card_limit.duration | string (ISO-8601) | 定義された期間、カードごとに利用を制限する金額 |
qr_scan_configuration.enabled | boolean | QRコードが支払方法として利用可能かどうか |
qr_scan_configuration.forbidden_qr_scan_gateways | array[string] | QRコード決済の処理に使用されない決済ゲートウェイのリスト |
convenience_configuration.enabled | boolean | コンビニがペイメント方法として利用可能かどうか |
theme.colors.main_background | string (HexColor) | 入力欄背景。入力フォームが表示されるエリアの背景色。デフォルトは #fafafa |
theme.colors.secondary_background | string (HexColor) | ロゴとタイトルが含まれるエリアの背景色。デフォルトは #ee7a00 |
theme.colors.main_color | string (HexColor) | ヘッダーと下部のボタンの背景色。デフォルトは #fafafa |
theme.colors.primary_text | string (HexColor) | タイトル(デフォルトはストア名)の文字色。デフォルトは #fafafa |
theme.colors.secondary_text | string (HexColor) | (指定がある場合は)ウィジェットのタイトル下部に表示される説明文の文字色。デフォルトは #222222 |
theme.colors.base_text | string (HexColor) | 上記で指定されない他のテキストの文字色。デフォルトは #000000 |
recurring_card_charge_cvv_confirmation.enabled | boolean | リカーリングトークンを使用するときに、このストアにCVV確認が必要かどうか |
recurring_card_charge_cvv_confirmation.threshold | array[MoneyAmount] | CVV確認せずに課金可能な、ストアのデフォルト通貨での最大金額 |
supported_brands | array[SupportedBrand] | 利用可能な決済ブランド |
フィールド | データ型 | 備考 |
---|---|---|
amount | number | 小数点以下の金額 |
currency | string (ISO-4217) | ISO-4217形式の通貨 |
フィールド | データ型 | 備考 |
---|---|---|
brand | string | 対応しているブラントpayment_type により、次のいずれかcard: visa, mastercard, american_express, jcb, diners_club, unionpay, discover, maestro qr_merchant : alipay_merchant_qr, alipay_connect_mpm, pay_pay_merchant, we_chat_mpm online : alipay_online, alipay_plus_online, pay_pay_online, we_chat_online,dbarai_online bank_transfer : aozora_bank paidy : paidy |
payment_type | string | 次のいずれか card , qr_merchant , online , bank_transfer , paidy |
support_auth_capture | boolean | 仮売上のキャプチャが許可されているか |
requires_full_name | boolean | 名前を必須にしているか |
support_dynamic_descriptor | boolean | ダイナミックディスクリプタ―が利用可能か |
requires_cvv | boolean | セキュリティコードが必須か |
countries_allowed | array[string] | 許可されている国 |
supported_currencies | array[string] | 許可された通貨 |
cvv_auth | boolean | セキュリティコード認証を行うか |
dynamic_info | boolean | 分割払いが利用可能か |
本サービスで発生する各種イベントの結果は「ウェブフック」として、それぞれの指定先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(オンライン)の三単合一における「税関申告」が完了 | 税関申告完了 | – |
メールテンプレート内に${customer_refer_link}
のパラメータがある場合、支払い情報の確認・変更画面のURLが表示されます。
一般設定>一般>通知の「定期課金イベント発生時に通知」をONにしてください。
上記設定によって、定期課金関連の通知メールにURLが表示されます。
※メールテンプレートのデフォルト内容はこちらを参照してください
「定期課金イベント発生時に通知」の設定次第で、通知メールテンプレートの利用方法が異なります。
※都度課金と定期課金を併用している場合、「定期課金イベント発生時に通知」をONし、メールの文面を分けることを推奨します
定期課金イベント発生時に通知 | 利用方法 |
---|---|
ON | テンプレート「決済完了通知」「決済失敗」に${customer_refer_link} を追加して作成してください。※都度課金の場合は、リカーリングトークンがある場合のみURLにログインできます |
OFF | ページ下記説明を参照した上で作成してください。 |
前提として、定期課金関連のメールには二種類のテンプレートが存在します。
サブテンプレートの文面は、メインテンプレートの${subscription_payment_details:- }
として反映されます。
種類 | テンプレート名 |
---|---|
メインテンプレート | ・定期課金作成 ・定期課金決済 ・定期課金決済失敗 ・定期課金の一時停止 |
サブテンプレート | ・定期課金詳細 ・回数制限つき定期課金の詳細 |
用途に合わせてテンプレートにパラメータを追加してください。
作成するテンプレート | 利用方法 |
---|---|
メイン・サブ両方を独自に作成する | サブテンプレート内に${customer_refer_link} を、メインテンプレートに ${subscription_payment_details:- } を追加してください。 |
メインのみを独自に作成する | ${subscription_payment_details:- } を追加してください。${subscription_payment_details:- } を追加しない場合は、${customer_refer_link} を追加してください。 |
${customer_refer_link}
を追加可能なメールテンプレート下記URLに店舗IDを入力して消費者に共有することで、支払い情報の確認・変更画面へアクセスできます。
加盟店さま側でメールアドレスを指定したい場合は、メールアドレスも入力してください。
方法 | URL |
---|---|
メールアドレスを指定しない | https://customer.univapay.com/stores/{店舗ID} |
メールアドレスを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス} |
メールアドレスおよび表示させる定期課金IDを指定する | https://customer.univapay.com/stores/{店舗ID}?emailAddress={メールアドレス}&subscriptionId={定期課金ID} |
対象の定期課金を選択し「定期課金の管理画面」のメール送信ボタンを押すと、消費者のメールアドレス宛に「定期課金のカード情報変更の案内」の通知メールが送信されます。
キャンセルオブジェクトに対するCREATEリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対してキャンセルを作成することができます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234}}'
下記はBodyの記述例でリクエストした場合の例です。
201
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "pending",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
決済設定オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
このリクエストはウィジェットを開いた際に自動的に送られ、店舗の支払いのための設定を確認することができます。
リンクフォーム / ウィジェットを開かなくても、アプリトークン / シークレット を指定して下記リクエストを送ることで確認可能です。
{jwt}
部分)curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"mode": "test",
"recurring_token_privilege": "infinite",
"name": "管理画面ガイド_TEST店舗",
"card_configuration": {
"enabled": true,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": true,
"prepaid_authorization_enabled": true,
"only_direct_currency": false,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"allow_direct_token_creation": true,
"three_ds_required": false,
"three_ds_address_required": true
},
"subscription_configuration": {
"enabled": true
},
"installments_configuration": {
"enabled": true,
"card_processor": {
"revolving": true,
"fixed_cycle": true
},
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y",
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": true,
"fixed_cycle": true,
"fixed_cycle_amount": true,
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y"
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration": "PT720H",
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": true
},
"paidy_public_key": "pk_test_9bta9fm2cbvpcscddhr7qrnkkb",
"logo_image": null,
"theme": {
"colors": {
"main_background": "#FFFFFF",
"secondary_background": "#F5F8FC",
"main_color": "#4C5F85",
"main_text": "#FFFFFF",
"primary_text": "#4C5F85",
"secondary_text": "#4C5F85",
"base_text": "#4C5F85"
}
},
"recurring_card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"match_amount": "disabled",
"expiration": "PT168H",
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"virtual_bank_accounts_threshold": 5,
"virtual_bank_accounts_fetch_count": 10,
"default_extension_period": "PT24H",
"maximum_extension_period": "PT720H",
"automatic_extension_enabled": false,
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_period": "PT72H",
"remind_notification_enabled": true
},
"supported_brands": [
{
"payment_type": "konbini",
"brand": "sunkus",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_plus_online",
"online_brand": "alipay_plus_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "yamazaki_daily_store",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "family_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "mini_stop",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "pay_easy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_online",
"online_brand": "alipay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "circle_k",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "mastercard",
"card_brand": "mastercard",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seven_eleven",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seico_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "d_barai_online",
"online_brand": "d_barai_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "daily_yamazaki",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "lawson",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "jcb",
"card_brand": "jcb",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "card",
"brand": "visa",
"card_brand": "visa",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "paidy",
"brand": "paidy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "diners_club",
"card_brand": "diners_club",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "american_express",
"card_brand": "american_express",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "pay_pay_online",
"online_brand": "pay_pay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "bank_transfer",
"brand": "aozora_bank",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "we_chat_online",
"online_brand": "we_chat_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
}
]
}
キャンセルオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
polling | boolean | キステータスが pending (初期ステータス)から別のステータスに変更されるまで、課金のステータスを内部でポーリングするようにAPIに指示する |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels/11ef32cc-e895-655e-8e33-e36629277b4f \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
}
決済完了
決済が成功した時に送信されます。仮売上のキャプチャ、返金を行ったときもこのメールが送信されます。
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます。
件名
${store} ${transaction_type}のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${transaction_type}が行われましたのでご確認ください。
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[${transaction_type}金額 ] ${amount}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
決済失敗
決済が失敗したときに送信されます。コンビニ決済の入金期限が切れたときもこのメールを送信されます
件名
${store} 課金失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の課金が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[課金金額 ] ${amount}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリング作成
クレジットカード決済のリカーリングトークンの作成(支払い情報の登録)が成功した時に送信されます
通常課金や定期課金で「カード登録(リカーリングトークン作成)」をONにした時にも送信されます
件名
${store} お支払い情報登録のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
リカーリングトークンのCVV認証失敗
カード登録(定期課金の初回カード登録も含む)のみ行う処理で、CVV認証(セキュリティコード認証)が失敗した時に送信されます
件名
${store} お支払い情報登録失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}情報登録が失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法] ${payment_type}(${payment_brand})
[日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に成功した時に送信されます
件名
${store} 仮売上のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に成功しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリの実行
仮売上に失敗した時に送信されます
件名
${store} 仮売上失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、仮売上に失敗しましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[メールアドレス] ${email_address}
[課金ID ] ${charge_id}
[課金金額 ] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
[エラーコード ]${error_code}
[エラー内容 ]${error_message}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
オーソリ済課金のキャンセル
仮売上をキャンセルした時に送信されます
件名
${store} 課金キャンセルのお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、課金がキャンセルされましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[キャンセルID ] ${cancel_id}
[キャンセル金額] ${amount}
[日時 ] ${date}
[請求名 ] ${descriptor}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金作成
初回の定期課金作成が成功した時に送信されます
件名
${store} 定期課金作成のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金が登録されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済
定期課金の2回目以降の決済が成功した時に送信されます
${transaction_type}の部分が処理によって「課金」もしくは「返金」と表示されます
件名
${store} 定期課金の${transaction_type}成功のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が行われましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金決済失敗
初回課金金額がある定期課金の作成 および 定期課金の2回目以降の決済が失敗した時に送信されます
件名
${store} 定期課金の${transaction_type}失敗のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、${payment_type}の${transaction_type}が失敗いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[課金ID ] ${charge_id}
[課金日時 ] ${date}
[定期課金ID ] ${subscription_id}
[課金金額 ] ${amount}
[次回課金金額] ${subscription_next_payment_amount:- }
[次回課金日 ] ${subscription_next_date:-次回課金なし}
[課金サイクル]${subscription_period}
${subscription_payment_details:- }
※初回の決済に失敗した場合は、もう一度店舗のフォームから決済処理を行ってください。
[エラーコード]${error_code:- }
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金一時停止
定期課金の一時停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の一時停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
${subscription_payment_details:- }
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金永久停止
定期課金の永久停止をした時に送信されます
件名
${store} 定期課金停止のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の永久停止処理が行われましたのでご確認ください。
-------------------------------------------------------------------------------------------
[支払方法 ] ${payment_type}(${payment_brand})
[停止処理日 ] ${date}
[請求名 ] ${descriptor}
[定期課金ID ] ${subscription_id}
-------------------------------------------------------------------------------------------
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更の案内
※開発中のため現在利用不可
管理画面の定期課金詳細にあるボタン(開発中)から、支払い情報の確認・変更画面を案内したときに消費者に送信されます
件名
${store} 定期課金のカード情報変更のご案内
本文
=========================================================
このメールは定期課金にお支払い情報が登録されているメールアドレス宛に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
いつも${store}をご利用いただき誠にありがとうございます。
定期課金のお支払い情報更新手続きは下記URLから行ってください。
——————————————————————————————-
${customer_refer_link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金のカード情報変更完了
定期課金に登録されているカード情報が変更された時に送信されます
件名
${store} 定期課金の${payment_type}情報更新のお知らせ
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
ご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、定期課金の${payment_type}情報が更新されましたのでご確認ください。
——————————————————————————————-
[支払方法 ] ${payment_type}(${payment_brand})
[名義 ] ${card_holder_name}
[更新日 ] ${date}
[定期課金ID] ${subscription_id}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:- }
[メールアドレス] ${contact_email:- }
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
定期課金の詳細
回数無制限の定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
回数制限付き定期課金の詳細
回数制限付き定期課金の情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[課金回数]${subscription_cycles_count}回目
——————————————————————————————-
定期課金のお支払い情報更新手続きは下記URLから行えます。
${customer_refer_link:- }
※ご利用店舗様によってはURLから更新できない場合がございます。
詳しくはご利用店舗様へお問合せくださいませ。
分割払いの詳細
分割払いの情報が含まれています
このテンプレートは定期課金関連のテンプレートに${subscription_payment_details}を入力すると反映させられます
[定期課金種類]${subscription_type}
[分割回数]${subscription_total_cycles_count}回
決済フォーム支払い発行
オプションでリンクフォームのメール送信機能を利用するときに送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご注文ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLから決済画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[金額 ] ${amount}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
決済フォームカード登録発行
リンクフォームのメール送信機能を利用するとき、課金を行わなずカード登録のみ行うリンクフォームの場合はこのメールが送信されます
件名
決済リンクよりお支払いをお願いします${store}
本文
=========================================================
ご連絡ありがとうございます。
${store}でございます。
内容をご確認の上、以下のURLからカード登録画面へお進みください。
——————————————————————————————-
[URL期限 ] ${date}
[決済リンク]${link}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はお問い合わせ先情報へお願いいたします。
振込期限切れ(督促なし)
銀行振込の振込期限が切れたときに送信されます
件名
${store} お振込期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限を過ぎましたので 無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
振込期限切れ(督促有り)
銀行振込の振込期限が切れた時、再度振込期限を指定して案内する設定の場合に送信されます
件名
${store} お振込のご確認
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が過ぎておりますが、
本日時点でご入金が確認できておりません。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[最終期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 申込完了
銀行振込の申込が行われたときに送信されます
件名
${store} 銀行振込 銀行振込のお申込を受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにお振込をお願いいたします。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
[振込期日 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 キャンセル
銀行振込の申込を加盟店さまが取り消した時に送信されます
件名
${store} 銀行振込 お申込がキャンセルされました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みがキャンセルとなりましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[キャンセル日] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了
銀行振込で消費者が入金したときに送信されます
件名
${store} お振込を確認しました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 不足入金
銀行振込で消費者の入金金額が不足していたときに送信されます
件名
${store} お振込金額の不足について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込金額が不足しております。
お手数ではございますが、内容をご確認いただき、
差額分のお振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[差額 ] ${deposit_needed}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 入金完了(超過)
銀行振込で消費者の入金金額が超過していたときに送信されます
件名
${store} お振込を確認しました(金額超過)
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記の通り、口座へのお振込を確認いたしましたのでご確認ください。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[入金額 ] ${deposit_amount}
[入金日時 ] ${date}
[超過金額 ] ${exceeded_amount}
※上記金額が本来お振込いただく金額より超過で入金されています。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
銀行振込 振込期限の通知
振込期限日が近づくとこのメールを送信します
一般設定で送信するかどうか、何日前に送信するかを設定できます
件名
${store} お振込期限について
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お振込期限が近づいております。
お手数ではございますが、内容をご確認の上お振込をお願いいたします。
なお、本通知と行き違いでお振込みいただいている場合は、
何卒ご容赦くださいますようお願い申し上げます。
——————————————————————————————-
[支払方法 ] 銀行振込
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金額 ] ${deposit_amount}
[差額 ] ${deposit_needed}
[振込期日 ] ${date}
[銀行名 ] ${bank_name}
[支店番号 ] ${bank_branch_code}
[支店名 ] ${bank_branch_name}
[口座種別 ] 普通
[口座番号 ] ${bank_account_number}
[口座名義 ] ${bank_account_holder_name}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済のご案内
コンビニ決済の申込が行われたときに送信されます
件名
${store} コンビニ決済のお申し込みを受け付けました
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
内容をご確認の上、期日までにご入金をお願いいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期日 ] ${date}
[(各コンビニ情報の名称)] ${konbini_payment_details}
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の取り消し
コンビニ決済の申込を加盟店側で取り消したときに送信されます
件名
${store} お支払いのキャンセルについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、キャンセルされましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ決済
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
※入金がある場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済 期限切れ
コンビニ決済の入金期限が切れたときに送信されます
件名
${store} お支払期限切れについて
本文
=========================================================
このメールは決済されたメールアドレス宛に自動的に送信しております。
決済情報をご確認のうえ、大切に保管してください。
=========================================================
この度は、${store}をご利用いただき誠にありがとうございます。
下記お申込みに関しまして、お支払期限を過ぎましたので
無効となりました事をお知らせいたします。
——————————————————————————————-
[支払方法 ] コンビニ支払い
[コンビニ名] ${payment_brand}
[課金ID ] ${charge_id}
[金額 ] ${amount}
[入金期限 ] ${date}
※入金された場合は、下記までお問い合わせください。
——————————————————————————————-
${store} お問い合わせ先情報
[電話番号 ] ${contact_phone_local:-メール対応のみ}
[メールアドレス] ${contact_email}
※このメールは送信専用のため、このアドレスへご連絡いただいても返信できかねます。
ご連絡はご利用の商品/サービス提供者様へお願いいたします。
コンビニ決済の詳細
各コンビニエンスストアごとの、消費者が入金するための情報が含まれています。このテンプレートは「コンビニ決済のご案内」に含まれ、選択したコンビニエンスストアのテンプレート情報が入ります。
レスポンスで返却されるフィールドおよび値の詳細は、以下を参照してください。
その他data
内のフィールドおよび値は、イベントごとのリソースタイプによって異なります。こちらから確認して下さい。
フィールド | データ型 | 備考 |
---|---|---|
id | 半角英数(UUID) | ウェブフックを識別するためのUUID |
merchant_id | 半角英数(UUID) | ウェブフックが帰属する「加盟店」のUUID |
store_id | 半角英数(UUID) | ウェブフックが帰属する「店舗」のUUID |
triggers | 配列(テキスト) | ウェブフック送信契機となるイベント (イベント名の一覧を参照) 複数指定可能 |
url | 半角英数(URLとして有効なもの) | ウェブフックの送信先 |
auth_token | 半角英数 | ウェブフック実行時にヘッダーに含める認証用の値 authorizationというフィールド名を利用 |
active | 真偽 | 作成時の有効性true で有効、false で無効 |
created_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの作成日 |
updated_on | ISO-8601 YYYY-MM-DD T hh:mm:ss | ウェブフックの更新日 |
{
"id": "11ef1288-37b0-2f15-a097-d3a0d4243d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "successful",
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
{
"id": "11ef1288-37b0-2f15-a097-d3a0d7843d4c",
"event": "charge_finished",
"data": {
"id": "11ef1288-399b-eb84-a215-038628c5c460",
"store_id": "11ecda54-12g0-1c78-bd0f-73aa270d700f",
"transaction_token_id": "11ef1118-3766-4fdc-baed-b72c5ac3e0ba",
"transaction_token_type": "one_time",
"subscription_id": null,
"requested_amount": 100,
"requested_currency": "JPY",
"requested_amount_formatted": 100,
"charged_amount": 100,
"charged_currency": "JPY",
"charged_amount_formatted": 100,
"fee_amount": null,
"fee_currency": null,
"fee_amount_formatted": null,
"only_direct_currency": true,
"capture_at": null,
"descriptor": null,
"descriptor_phone_number": null,
"status": "failed",
"error": {
"code": 309,
"message": "Test charge failed purposely",
"details": "Test charge failed purposely"
},
"metadata": {},
"mode": "test",
"created_on": "2024-05-15T06:56:12.852465Z",
"redirect": {}
},
"created_on": "2024-05-15T06:56:13.140163783Z",
"webhook_id": "11ee8cf5-2be5-67d8-bc18-7b7c584c5735",
"successful": true,
"fired_on": "2024-05-15T06:56:13.092717474Z"
}
キャンセルオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)awaiting
もしくは authorized
状態の課金に対して行われたキャンセルの一覧を取得できます。
{storeId}
部分){chargeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32c2-eecd-ed24-abb8-cf4e336a1340/cancels \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11ef32cc-e895-655e-8e33-e36629277b4f",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:28:32.859366Z"
},
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32c2-eecd-ed24-abb8-cf4e336a1340",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
],
"has_more": false
}
パラメータを利用することで、消費者が行った処理ごとに結果の値を動的に反映させることができます。
テンプレートごとに利用できるパラメータは異なるため、各テンプレートの作成画面から確認してください。
パラメータ | 説明 |
---|---|
${date} | 処理日時 ※下記テンプレートのみ入金期限日時を表示 ・銀行振込(申込完了 / 振込期限切れ(督促有り) / 振込期限の通知) ・コンビニ決済のご案内 |
${amount} | 金額 ※定期課金の場合は1回あたりの課金金額、分割の場合は総額を表示 |
${payment_type} | 支払方法 ※カード、オンライン決済など |
${payment_brand} | 支払ブランド ※Visa、MasterCard、PayPayオンラインなど |
${transaction_type} | 課金 or 返金 |
${store} | 店舗名 |
${charge_id} | 課金ID |
${card_holder_name} | カード名義 |
${email_address} | 顧客メールアドレス |
${descriptor} | 利用明細に記載される名称 ※テストモードの場合は機能せず、パラメータをそのまま表示 |
${contact_email} | 連絡先メールアドレス |
${contact_phone} | 連絡先電話番号 |
${charge_metadata} | 課金時に付与されたメタデータ |
${token_metadata} | トークン作成時に付与されたメタデータ |
${subscription_id} | 定期課金ID |
${subscription_period} | 定期課金のサイクル |
${subscription_next_date} | 定期課金の次回課金日 |
${subscription_initial_amount} | 定期課金の初回課金額 |
${subscription_amount} | 回数無制限の定期課金:1回あたりの課金金額 回数制限付き定期課金・分割払い:支払いの総額 |
${subscription_payment_details} | 定期課金の詳細 ・定期課金種類 ・課金回数/分割回数 |
${customer_refer_link} | カード情報変更/停止URL |
${link} | 決済フォームor支払いに必要な情報のリンク |
${customer_name} | 顧客名 |
${bank_accout_number} | 口座番号 |
${bank_branch_code} | 支店番号 |
${bank_branch_name} | 支店名 |
${bank_account_type} | 口座の種類 |
${bank_account_holder_name} | 振込先口座名 |
${bank_name} | 振込先銀行名 |
${deposit_amount} | 入金額 |
${deposit_needed} | 不足金額 |
${exeed_amount} | 超過入金額 |
${konbini_payment_details} | コンビニ支払い情報詳細 |
${konbini_transaction_id} | コンビニ支払い番号など |
${error_code} | エラーコード |
${error_message} | エラー内容 |
パラメータによっては、メタデータなど1つの項目に複数の値が存在したり、処理の種類によりパラメータに値が入らない場合があります。
こういった場合にパラメータ内でより細かい指定をすることで、パラメータや複数メタデータをそのままメール本文に反映するのを防ぐことができます。
${parameter:-(デフォルト値)}
を使用して下さい${charge_metadata.(キー)}
,${token_metadata.(キー)}
の形式で指定してください。パラメータ | メールに反映される情報 |
---|---|
${subscription_next_date:-無し} | 次回以降に支払いが残っている場合:2024/08/01 今回の支払いが最後だった場合:無し |
${charge_metadata.univapay-product-names} または ${token_metadata.univapay-product-names} | 商品名 |
${charge_metadata.univapay-phone-number} または ${token_metadata.univapay-phone-number} | 電話番号 |
${token_metadata.(キー)}
の利用が必須のパターン下記処理の場合は${charge_metadata.(キー)}
を指定してもメタデータが表示されません。
※商品機能をご利用にはオプション契約が必要になります。
商品ごとにメタデータを付与している場合、${charge_metadata.キー:-(空白)}
とすることで、指定したメタデータの値のみメール文面に反映させるような使い方ができます。
商品を利用した場合のみ表示したいメタデータの値が表示され、商品を利用しない決済の場合は空白になります。
①商品にメタデータを付与
商品ごとにメールで表示させたい文章をメタデータとして追加します。
②通知メールテンプレートを編集
商品メタデータのキーをproduct-text1
とする場合、
メール通知テンプレート内のタグを ${charge_metadata.product-text1:-}
とすることで、メールの各箇所に商品別のメール文章のみを表記することができます。
③通知メールでの反映を確認
商品ごとに異なる文章が表示され、商品を指定しない決済の時はメールに何も表示されないことが確認できれば問題ありません。
キャンセルオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
キャンセルした時に付与したメタデータを編集することができます。
{storeId}
部分){chargeId}
部分){id}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/stores/{storeId}/charges/{chargeId}/cancels/{id} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド名 | データ型 | 備考 |
---|---|---|
metadata | json | キャンセルに紐付けるメタデータ |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/charges/11ef32ce-c739-9e0a-9ada-37dba0724131/cancels/11ef32ce-ce90-3272-9ec3-c35d8985dfc2 \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
--data '{"metadata": {"order_id": 1234, "reason": "expired"}}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef32ce-ce90-3272-9ec3-c35d8985dfc2",
"charge_id": "11ef32ce-c739-9e0a-9ada-37dba0724131",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"status": "successful",
"error": null,
"metadata": {
"reason": "expired",
"order_id": 1234
},
"mode": "test",
"created_on": "2024-06-25T08:42:08.198036Z"
}
ウェブフックオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
ウェブフックIDを指定しない場合、クエリパラメータでフィルタリングすることで条件に当てはまるウェブフックの一覧を取得します。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{webhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": true,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-05-22T08:15:49.488255Z"
}
ウェブフックオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
通知失敗などによって停止したウェブフックを再開処理する場合はこのリクエストをご利用ください。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{wenbhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
active | boolean | ウェブフックのステータスtrue もしくはfalse |
url | string | ウェブフック通知先のURL |
triggers | string | イベントのトリガー 詳細はこちら |
auth_token | string | Authorizationヘッダー |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"active": "false"}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": false,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-06-25T09:41:56.235574Z"
}
本サービスで発生するエラーは、「APIリクエストエラー」と「ペイメントエラー」に分けられます。
APIリクエストエラーは、何らかの理由でAPIの呼び出しが正しく行えなかったことを表します。
ペイメントエラーは、API呼び出しが正常に行えたが、カード会社やセンター等、外部のシステムでの処理が失敗した場合に発生します。
多くの場合、以下のJSONの形式で詳細なエラー情報が提供されます。
項目 | 意味 | 記法 | 代表例 |
---|---|---|---|
status | レスポンスの種別 | 半角英 | error |
code | エラーコード | 半角英 アッパースネークケース (UPPER_SNAKE_CASE) | 表を参照 |
errors | エラー詳細をネスト | ||
field | エラー原因となったパラメータのフィールド名 (errorsにネストされたエラー詳細) | ローワースネークケース (lower_snake_case) | |
reason | ネストされたエラーの詳細 (errorsにネストされたエラー詳細) | アッパースネークケース (UPPER_SNAKE_CASE) または英文で上限や下限の提示 |
このエラーは APIリクエストが正常に受け付けられなかったことを意味し、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。
HTTP ステータス | 内容 |
---|---|
400 Bad Requests | リクエストの内容に問題があります 詳細はボディのエラー情報に記載 |
401 Unauthorized | 認証ができませんでした Authorization ヘッダが無いか、内容に問題あり |
403 Forbidden | リクエストを実行する為の権限なし |
404 Not Found | 指定されたパス、もしくはリソースIDが存在しない |
429 Too Many Requests | レート制限の上限に達した |
500 Internal Server Error | 本サービスのシステム内部で予期しないエラーが発生 この場合、処理の一部は実行されている可能性があります |
HTTP/1.1 429 Too Many Requests
...
Content-Length: 0
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "NON_UNIQUE_ACTIVE_TOKEN"
errors: []
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "VALIDATION_ERROR"
errors: [{
field: "card_number"
reason: "INVALID_CARD_NUMBER"
}]
}
HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...
{
status: "error",
code: "CHARGE_AMOUNT_TOO_LOW"
errors: [{
reason: "Charge amount must exceed 100"
}]
}
JSON形式の詳細なエラー情報が提供される場合、エラーコードは以下のような内容を意味します。
HTTPステータス | エラーコード | 内容 |
---|---|---|
400 | ALREADY_CAPTURED | 対象の課金は既にキャプチャ済みか、オーソリが完了していません。 |
400 | AUTH_NOT_SUPPORTED | オーソリに対応したゲートウェイが設定されていません。 |
400 | CANCEL_NOT_ALLOWED | この支払い方法はキャンセルに対応していません。もしくは対象の課金のステータスはキャンセルできない状態です。 詳細はキャンセルを参照してください。 |
400 | CANNOT_CHANGE_CANCELED_SUBSCRIPTION | キャンセルされた定期課金は変更することはできません。 |
400 | CANNOT_CHANGE_TOKEN | この状態の定期課金のトランザクショントークンは変更できません。トランザクショントークンの変更可能な条件は定期課金の更新を参照してください。 |
400 | CANNOT_REFUND_UNSUCCESSFUL_CHARGE | successful 以外の状態の課金は返金できません。 |
400 | CAPTURE_AMOUNT_TOO_LARGE | キャプチャの金額がオーソリ時の金額より大きいです。 |
400 | CARD_BRAND_NOT_SUPPORTED | 指定されたカードブランドに対応したゲートウェイが設定されていません。 |
400 | CARD_COUNTRY_NOT_SUPPORTED | 指定されたカード発行国に対応したゲートウェイが設定されていません。 |
400 | CARD_PROCESSING_DISABLED | 支払い方法でカードが無効になっています。 |
400 | CHARGE_TOO_QUICK | 制限つきのリカーリングトークンまたは同一カードに対して、30秒以内※に同一金額で複数の課金を作成しようとしました。 ※APIからリクエストを行っている加盟店さまは、本エラーの発生時間を変更できます。詳細は冪等なリクエストを参照してください。 |
400 | CONVENIENCE_PROCESSING_DISABLED | 支払い方法でコンビニ決済が無効になっています。 |
400 | CURRENCY_MUST_MATCH_CHARGE | 返金時の通貨は課金時の通貨と同じである必要があります。 |
400 | CVV_REQUIRED | CVV の提供が必要です。 |
400 | CVV_AUTHORIZATION_NOT_COMPLETED | CVV(セキュリティーコード)認証に失敗しました。 |
400 | FILE_INVALID_TYPE | アップロードされたファイルの MIME タイプが正しくありません。 |
400 | FILE_MAX_SIZE_EXCEEDED | アップロードされたファイルのサイズが大きすぎます。 |
400 | FORBIDDEN_IP | リクエスト元のIPアドレスから割り出された国が、設定された許可する国に含まれていません。 |
400 | INSTALLMENT_MAX_PAYOUT_PERIOD_EXCEEDED | 分割払いの支払期間が、設定された最大の支払期間を超過しています。 |
400 | INSTALLMENT_PAYMENT_TYPE_NOT_ALLOWED_FOR_PLAN | 分割払いの支払い方法として許可されていない支払い方法です。 |
400 | INSTALLMENT_INVALID_CYCLES_COUNT | 利用できない分割回数です。 |
400 | INSTALLMENT_INVALID_PLAN | サポートされていない分割支払いプランです。 |
400 | INVALID_PLATFORM | プラットフォームの指定が正しくありません。 |
400 | INVALID_TOKEN_TYPE | トランザクショントークンの種類が正しくありません。 |
400 | INVALID_QR_SCAN_GATEWAY | QRコード決済のゲートウェイが設定されていないか有効ではありません。 |
400 | LAST_NAME_REQUIRED | カード名義にスペースで区切られた苗字が必要です。 |
400 | LIVE_MODE_NOT_ENABLED_WHEN_UNVERIFIED | 本番モード(live )を使用するにはアカウントの審査の完了が必要です。 |
400 | NO_DIRECT_CURRENCY_GATEWAY | 通貨の変換をせずに利用可能なゲートウェイが設定されていません。 |
400 | NO_GATEWAYS_AVAILABLE | 利用可能なゲートウェイが見つかりません。 |
400 | NO_TEST_CARD_IN_LIVE_MODE | 本番モード(live )でテストカードは使用できません。 |
400 | NON_SUBSCRIPTION_PAYMENT | 課金の作成にワンタイムトークンもしくはリカーリングトークンを指定してください。 |
400 | NOT_ONE_TIME_TOKEN | ワンタムトークン以外はサポートされていません。 |
400 | NOT_SUBSCRIPTION_TOKEN | 定期課金トークンもしくはリカーリングトークンを指定してください。 |
400 | PARTIAL_CAPTURE_NOT_SUPPORTED | 部分的なキャプチャはサポートされていません。 |
400 | PAYMENT_EXPIRATION_EXCEEDS_PERIOD | 支払い期限日時がサイクルを超過しています。 |
400 | QR_PROCESSING_DISABLED | 支払い方法でQRコードが無効になっています。 |
400 | RECURRING_TOKEN_DISABLED | トランザクショントークンが無効になっているか、アカウントにリカーリングトークンを使用する権限がありません。 |
400 | RECURRING_USAGE_LIMIT_REQUIRED | usage_limit パラメータが必要です。 |
400 | RECURRING_USAGE_REQUIRES_CVV | CVV の提供が必要です。 |
400 | REFUND_EXCEEDS_CHARGE_AMOUNT | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えた場合 ※全額返金成功の課金に再度返金処理をした場合 |
400 | REFUND_NOT_ALLOWED | 返金に対応していない支払い方法、もしくは返金が許可されませんでした。 |
400 | REFUND_EXCEEDS_SALES | 返金の金額が上限を越えたため返金できません。 |
400 | REFUND_NOT_WITHIN_BOUNDS | 返金金額が課金金額を超過しています。 ※複数の一部返金の合計金額が課金金額を超えていて、かつ一部返金の1回分の返金金額が課金金額を超えた場合 |
400 | RESOURCE_LIMIT_REACHED | リソース制限の上限に達しました。 |
400 | SUBSCRIPTION_ALREADY_ENDED | 定期課金は既に終了しています。 |
400 | TOKEN_FOR_WRONG_STORE | トランザクショントークンのストアが定期課金のストアと異なります。 |
400 | TRANSACTION_ALREADY_PROCESSED | 使用済みのトランザクショントークンは指定できません。 |
400 | TRANSACTION_TOKEN_EXPIRED | トランザクショントークンの有効期限が切れました。 |
400 | USAGE_LIMIT_NOT_APPLICABLE | usage_limit は指定できません。 |
400 | VALIDATION_ERROR | リクエスト内容のパラメータにバリデーションエラーがあります。詳細は errors を参照してください。 |
400 | CHARGE_AMOUNT_TOO_HIGH | 課金金額が課金最大額より超過しています。 |
401 | AUTH_HEADER_MISSING | Authorization ヘッダが指定されていません。 |
401 | EXPIRED_LOGIN_TOKEN | ログイントークンの有効期限が切れました。 |
401 | INVALID_APP_TOKEN | アプリケーショントークンの指定が正しくありません。 |
401 | INVALID_CREDENTIALS | 認証情報が正しくありません。 |
401 | INVALID_DOMAIN | リクエストされた Origin ヘッダのドメインは、指定されたアプリケーショントークンのドメインに登録されていません。 |
401 | INVALID_LOGIN_TOKEN | ログイントークンが無効です。 |
401 | DIRECT_CARD_TOKEN_CREATION_DISABLED | PCIDSSに準拠していないためカード情報を送信できません。 |
403 | CARD_LOCKED | このカードは一定期間内の失敗回数がしきい値を超えた為、一時的にロックされています。 30分以内に5回以上失敗で、2時間制限をかけます。 |
403 | INVALID_PERMISSIONS | アプリケーショントークンの種類が正しくないか、アカウントの権限が不足しています。 |
403 | INSTALLMENT_PROCESSOR_INITIAL_AMOUNTS_NOT_SUPPORTED | このゲートウェイでは初回金額の指定はサポートされていません。 |
403 | OUTDATED_APP_TOKEN | アプリケーショントークンのバージョンが古いです。新しくアプリケーショントークンを作成しなおしてください。 |
403 | TEST_CARD_CANNOT_BE_BANNED | テストカードは禁止できません。 |
409 | IDEMPOTENCY_KEY_CONFLICT | 冪等性が保証されたリクエストの際に、指定された冪等性キーが以前に異なるAPIやメソッドで使用されています。 |
409 | NON_UNIQUE_ACTIVE_TOKEN | アクティブなトランザクショントークンが既に存在します。 |
409 | WEBHOOK_URL_EXISTS | 指定されたURLは既に登録されています。 |
500 | COULD_NOT_REFRESH_AUTH | ログイントークンの更新に失敗しました。サポートへお問い合わせください。 |
500 | DB_ERROR | 内部データベースエラー。サポートへお問い合わせください。 |
500 | FILE_UPLOAD_ERROR | ファイルのアップロードに失敗しました、サポートへお問い合わせください。 |
500 | IMPROPER_AUTH | オーソリの状態が正しくありません。サポートへお問い合わせください。 |
500 | TIMEOUT | 内部処理でタイムアウトが発生しました。サポートへお問い合わせください。 |
500 | UNABLE_TO_GET_IDEMPOTENT_RESULT | 冪等性キーに該当するキャッシュは見つかった為、リクエストされた内容は処理しませんでしたが、以前の処理結果のキャッシュの取得に失敗しました。 |
500 | UNKNOWN_ERROR | 予期しないエラーです。サポートへお問い合わせください。 |
503 | SERVICE_UNAVAILABLE_TRY_AGAIN | サービスが一時的に利用できません。時間を置いて再試行してください。 |
504 | NO_GATEWAY_AVAILABLE_TO_PROCESS_THE_REQUEST | このリクエストは接続先システムで対応していせん。サポートへお問い合わせください。 |
課金(Charge)や返金(Refund)などのリソースは、リソースの作成、つまりリクエストの受付に成功した場合でも、実際にゲートウェイでの処理に失敗した場合等にエラーが発生する場合があります。この場合、課金や返金の状態は failed
になり、error
フィールドに以下のデータが設定されます。
code
(number) – 課金が失敗またはエラーになった理由を表すエラーコードmessage
(string) – 課金が失敗した理由detail
(string) – 課金が失敗した詳細理由エラーコードは、以下の通りです。
コード | 内容 |
---|---|
301 | カード番号のエラーです。 |
302 | 不正な有効期限(月)です。 |
303 | 不正な有効期限(年)です。 |
304 | 有効期限切れです。 |
305 | セキュリティーコードに関するエラーです。 |
306 | カードが拒否されました(認証審査エラー) 失敗理由についてはカード発行会社へお問い合わせください。 |
307 | 不正なカードです。 |
308 | このカードはカード会社から承認が下りていません。詳細は消費者よりカード会社へお問い合わせください。 |
309 | 一般エラーが発生しました。詳細情報は管理画面で確認できます。 |
310 | 消費者データが不正です(無効なリクエストデータ)。 加盟店のリクエストに誤りがある可能性があります。 |
311 | 短期間に同一カードでの課金が多すぎます。しばらく待ってから再試行してください。 |
312 | この課金はキャンセルできません。 |
313 | オーソリの期限が切れました(課金のキャプチャ時)。 |
314 | このカードは盗難されたものとして報告されたか、発行会社によって無効化されました。加盟店は利用者のこのカードを差し押さえてください。 |
315 | カード発行会社へお問い合わせください。 |
316 | 名義人の姓は必須です。 |
317 | 部分的なキャプチャはサポートされていません。 |
318 | 部分的な返金はサポートされていません。 |
319 | 不正行為の疑いがあります(セキュリティ制限)。 |
320 | 銀行側のシステムでエラーが発生しました。 |
321 | ダイナミックディスクリプタはサポートされていません。 |
322 | バーコード/QRコードが無効です。 |
323 | バーコード/QRコードの有効期限が切れています。 |
324 | このバーコード/QRコードは既に処理済みです。 |
325 | このバーコード/QRコードは現在処理中です。 |
326 | リスクプロファイルが高いため拒否されました。 |
327 | 決済期限(タイムアウトは5分)が切れています。 |
328 | 復帰に失敗しました。手動による介入が必要です。 |
329 | 返金に失敗しました。 |
330 | 残高が不足しています。 |
331 | メタデータフィールドの値が無効または不足しています。 |
332 | 国境を越えた取引は許可されていません:身分証明書がありません。 |
333 | 国境を越えた取引は許可されていません:電話番号がありません。 |
334 | 国境を越えた取引は許可されていません:承認されていない支払方法です。 |
335 | 国境を越えた取引は許可されていません:名前がありません。 |
336 | この支払方法の決済制限を超えました。 |
337 | この加盟店の決済制限を超えました。 |
338 | 決済情報が見つかりません。 |
339 | 決済情報が重複しています。 |
340 | この消費者のリテールQRアカウントはゲートウェイによって拒否されました。 |
341 | この加盟店には、このゲートウェイに必要な情報が不足しています。 |
342 | 国境を越えた取引は許可されていません: 承認されていない通貨です。 |
343 | ゲートウェイでサーバーエラー(接続先システムエラー)が発生したため、支払いを処理できませんでした。しばらく待ってから再試行してください。 |
344 | 選択した支払方法は、ゲートウェイにより一時的に利用できません。 |
345 | 支払いは既にキャンセルされています。 |
346 | システムが遅延したため、支払い処理に時間がかかりキャンセルされました。しばらく待ってから再試行してください。 |
355 | 指定された支払い区分(分割回数など)が非対応のカードです。 |
コード | 内容 |
---|---|
500 | リクエストを実行したところ、前処理エラーが発生しました。正しい入力が行われたことを確認し、詳細はエラーメッセージを参照してください。 |
501 | 内部エラーが発生しました。サポート担当者にご連絡ください。 |
502 | リクエストに対してレスポンスがタイムアウトとなりました。お時間おいて再度お手続きお願い致します。 |
税関申告リソースは、失敗するとエラー情報を返すことがあります。税関申告エラーには、以下の情報が含まれます。
code
(number) – エラーコードを照合するために使用できる一意のキーmessage
(string) – エラーの簡単な説明detail
(string) – より詳細なエラーメッセジがった場合の詳細コードの定義は以下の表のとおりです。
コード | 内容 |
---|---|
601 | 本サービスでシステムリリースされたエラーが発生しましたが、具体的な情報はdetail をご覧ください。 |
602 | ペイメントプロセッサーが送信されたリクエストを拒否しました。具体的な情報はdetail をご覧ください。 |
603 | 提出されたお客様の身元確認は、税関当局によって拒否されました。 |
604 | 必要なお客様のID情報が加盟店から提出されていなかった。 |
トランザクションオブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId}/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
curl --request GET \
--url https://api.univapay.com/transaction_history \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストURLに追加できるクエリパラメータは以下です。
全てがand条件で検索され、リストが作成されます。
フィールド | データ型 | 備考 |
---|---|---|
from | string (ISO-8601) | 指定された日時以降でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
to | string (ISO-8601) | 指定された日時以前でフィルタリングする 例:2024年1月23日の場合 2024-01-23T00:00:00Z |
search | string | 課金ID, 返金ID, メタデータの情報、カード名義人名、カード名義人メールアドレス、カード番号下4桁のいずれかでフィルタリングする |
type | string | charge ,refund のいずれか |
status | string | 状態でフィルタリングする 課金もしくは返金の状態のいずれか |
mode | string | 実行モードでフィルタリングするlive またはtest |
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/transaction_history?from=2024-06-01T00:00:00Z&to=2024-06-25T00:00:00Z \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-f037-10ce-b891-9b43076af963",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:56.42805Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "taro yamada",
"cardholder_email_address": "test@test.com",
"brand": "visa",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
{
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"resource_id": "11ef327b-efeb-2efc-adc5-ff26c8964860",
"charge_id": null,
"amount": 100,
"currency": "JPY",
"amount_formatted": 100,
"type": "charge",
"status": "successful",
"metadata": {},
"created_on": "2024-06-24T22:48:55.930755Z",
"mode": "test",
"merchant_name": "管理画面ガイド",
"store_name": "管理画面ガイド_TEST店舗",
"payment_type": "card",
"user_data": {
"type": "charge",
"cardholder_name": "hanako yamada",
"cardholder_email_address": "demo@demo.com",
"brand": "master",
"gateway": "test",
"service_provider": "test",
"refunds": []
},
"bank_transfer_payment_status": null,
"bank_transfer_latest_deposit_date": null
},
<中略>
],
"has_more": true,
"total_hits": 99
}
加盟店オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url http://api.univapay.com/me \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"verification_data_id": "11edf541-54f3-2a58-9afe-b372c6f5fc0a",
"name": "管理画面ガイド",
"email": "merchant@test.com",
"notification_email": "merchant@test.com",
"verified": true,
"created_on": "2023-05-18T06:00:45.870218Z",
"configuration": {
"percent_fee": 3.400,
"flat_fees": [
{
"amount": 30,
"amount_formatted": 30,
"currency": "JPY"
}
],
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"transfer_schedule": {
"wait_period": "P7D",
"period": "monthly",
"full_period_required": null,
"day_of_week": null,
"week_of_month": null,
"day_of_month": null,
"weekly_closing_day": null,
"weekly_payout_day": null
},
"user_transactions_configuration": {
"enabled": true,
"notify_customer": true,
"notify_on_test": true,
"notify_on_recurring_token_creation": true,
"notify_on_recurring_token_cvv_failed": true,
"notify_on_webhook_failure": true,
"notify_on_webhook_disabled": true,
"notify_user_on_failed_transactions": true,
"notify_customer_on_failed_transactions": true,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": true,
"notify_on_authorizations": true,
"notify_on_cvv_authorizations": false,
"notify_on_cancels": true,
"customer_refer_link_enabled": true,
"notify_on_convenience_expiry": true
},
"recurring_token_configuration": {
"recurring_type": "infinite",
"charge_wait_period": "PT20S",
"card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": true,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": "P20D",
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": 5,
"limit_refund_by_sales": {
"enabled": true,
"period": "daily",
"rolling_window": false
}
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": 3.300,
"american_express": 3.500,
"mastercard": 3.300,
"maestro": null,
"discover": null,
"jcb": 3.500,
"diners_club": 3.300,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": true,
"allow_merchant_due_date_patch": true
},
"customer_management_configuration": {
"enabled": true,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": false,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": true
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": true
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"default_extension_period": "PT24H",
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_enabled": true
},
"platform_credentials_enabled": false,
"tagged_platform_credentials_enabled": false
},
"tms_merchant_data": null
}
店舗オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
{storeId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores/{storeId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"configuration": {
"percent_fee": null,
"flat_fees": null,
"logo_url": null,
"country": null,
"language": null,
"display_time_zone": null,
"min_transfer_payout": null,
"minimum_charge_amounts": null,
"maximum_charge_amounts": null,
"user_transactions_configuration": {
"enabled": null,
"notify_customer": null,
"notify_on_test": null,
"notify_on_recurring_token_creation": null,
"notify_on_recurring_token_cvv_failed": null,
"notify_on_webhook_failure": null,
"notify_on_webhook_disabled": null,
"notify_user_on_failed_transactions": null,
"notify_customer_on_failed_transactions": null,
"notify_user_on_convenience_instructions": null,
"notify_on_subscriptions": null,
"notify_on_authorizations": null,
"notify_on_cvv_authorizations": null,
"notify_on_cancels": null,
"customer_refer_link_enabled": null,
"notify_on_convenience_expiry": null
},
"recurring_token_configuration": {
"recurring_type": null,
"charge_wait_period": null,
"card_charge_cvv_confirmation": {
"enabled": null,
"threshold": null
}
},
"security_configuration": {
"card_charge_cooldown": null,
"subscription_cooldown": null,
"idempotent_card_charge_cooldown": null,
"idempotent_subscription_cooldown": null,
"restrict_ip_after_failed_charge": {
"enabled": null,
"count": null,
"cooldown": null
},
"inspect_suspicious_login_after": null,
"refund_percent_limit": null,
"limit_charge_by_card_configuration": null,
"confirmation_required": null,
"min_refund_threshold": null,
"limit_refund_by_sales": null
},
"checkout_configuration": {
"ec_email": {},
"ec_products": {}
},
"installments_configuration": {
"enabled": null,
"card_processor": {
"revolving": null,
"fixed_cycle": null
},
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null,
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": null,
"fixed_cycle": null,
"fixed_cycle_amount": null,
"supported_payment_types": null,
"min_charge_amount": null,
"max_payout_period": null
},
"card_brand_percent_fees": {
"visa": null,
"american_express": null,
"mastercard": null,
"maestro": null,
"discover": null,
"jcb": null,
"diners_club": null,
"union_pay": null,
"private_label": null
},
"subscription_configuration": {
"enabled": null,
"failed_charges_to_cancel": null,
"suspend_on_cancel": null,
"allow_merchant_amount_patch": null,
"allow_merchant_due_date_patch": null
},
"customer_management_configuration": {
"enabled": null,
"default_roles": null,
"default_mode": null
},
"descriptor_provided_configuration": null,
"card_configuration": {
"enabled": null,
"debit_enabled": null,
"prepaid_enabled": null,
"debit_authorization_enabled": null,
"prepaid_authorization_enabled": null,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": null,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"only_direct_currency": null,
"three_ds_required": null,
"three_ds_address_required": null,
"allow_direct_token_creation": null
},
"qr_scan_configuration": {
"enabled": null,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"expiration_time_shift": {}
},
"paidy_configuration": {
"enabled": null
},
"qr_merchant_configuration": {
"enabled": null
},
"online_configuration": {},
"bank_transfer_configuration": {
"expiration_time_shift": {}
},
"platform_credentials_enabled": null,
"tagged_platform_credentials_enabled": null
},
"tms_store_data": null
}
店舗オブジェクトに対するLISTリクエストには以下が必要です。(括弧内は入力箇所)
パラメータでsearchを用い、店舗IDを指定することで特定の店舗をフィルタリングして表示することも可能です。
{secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
search | string | 店舗名でフィルタリングする |
curl --request GET \
--url http://api.univapay.com/stores \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"items": [
{
"id": "11eec3c2-c117-9386-809b-3fb44d6462d4",
"name": "管理画面ガイド_TEST店舗Ⅳ",
"created_on": "2024-02-05T01:06:12.557138Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee6d59-0aa7-3562-bbe0-af183c595b00",
"name": "管理画面ガイド_TEST店舗Ⅲ",
"created_on": "2023-10-18T01:52:49.32173Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11ee4bb9-8282-c9aa-8ac7-3f876b49d88b",
"name": "管理画面ガイド_TEST店舗Ⅱ",
"created_on": "2023-09-05T06:57:42.566226Z",
"merchant_name": "管理画面ガイド"
},
{
"id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"name": "管理画面ガイド_TEST店舗",
"created_on": "2023-05-18T06:03:53.125782Z",
"merchant_name": "管理画面ガイド"
}
],
"has_more": false
}
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 当システムが生成した顧客を識別するUUID |
店舗オブジェクトに対するカスタマーUUIDリクエストには以下が必要です。(括弧内は入力箇所)
加盟店が顧客を識別するIDを利用している際、当システム側で顧客を識別するUUIDを生成することができます。
{id}
部分){secret}
部分){jwt}
部分)curl --request POST \
--url https://api.univapay.com/stores/{id}/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
リクエストURLに追加できるクエリパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
customer_id | string | 加盟店システムで発番する顧客を識別するID |
curl --request POST \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/create_customer_id \
--header 'Authorization: Bearer {secret}.{jwt}'
--data "{"customer_id": "1234abcd"}"
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"customer_id": "03ad9882-a1ca-4064-a905-3682477bec10"
}
決済設定オブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
このリクエストはウィジェットを開いた際に自動的に送られ、店舗の支払いのための設定を確認することができます。
リンクフォーム / ウィジェットを開かなくても、アプリトークン / シークレット を指定して下記リクエストを送ることで確認可能です。
{jwt}
部分)curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
curl --request GET \
--url https://api.univapay.com/checkout_info \
--header 'Authorization: Bearer {jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"mode": "test",
"recurring_token_privilege": "infinite",
"name": "管理画面ガイド_TEST店舗",
"card_configuration": {
"enabled": true,
"debit_enabled": true,
"prepaid_enabled": true,
"debit_authorization_enabled": true,
"prepaid_authorization_enabled": true,
"only_direct_currency": false,
"forbidden_card_brands": null,
"allowed_countries_by_ip": null,
"foreign_cards_allowed": true,
"fail_on_new_email": null,
"card_limit": null,
"allow_empty_cvv": false,
"allow_direct_token_creation": true,
"three_ds_required": false,
"three_ds_address_required": true
},
"subscription_configuration": {
"enabled": true
},
"installments_configuration": {
"enabled": true,
"card_processor": {
"revolving": true,
"fixed_cycle": true
},
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y",
"only_with_processor": true
},
"subscription_plan_configuration": {
"enabled": true,
"fixed_cycle": true,
"fixed_cycle_amount": true,
"supported_payment_types": [
"card",
"konbini",
"apple_pay",
"paidy",
"bank_transfer"
],
"min_charge_amount": null,
"max_payout_period": "P100Y"
},
"checkout_configuration": {
"ec_email": {
"enabled": true
},
"ec_products": {
"enabled": true
}
},
"qr_scan_configuration": {
"enabled": true,
"forbidden_qr_scan_gateways": null
},
"convenience_configuration": {
"enabled": true,
"expiration": "PT720H",
"expiration_time_shift": {
"value": "13:00:00+09:00",
"enabled": false
}
},
"paidy_configuration": {
"enabled": true
},
"paidy_public_key": "pk_test_9bta9fm2cbvpcscddhr7qrnkkb",
"logo_image": null,
"theme": {
"colors": {
"main_background": "#FFFFFF",
"secondary_background": "#F5F8FC",
"main_color": "#4C5F85",
"main_text": "#FFFFFF",
"primary_text": "#4C5F85",
"secondary_text": "#4C5F85",
"base_text": "#4C5F85"
}
},
"recurring_card_charge_cvv_confirmation": {
"enabled": true,
"threshold": [
{
"amount": 10000,
"amount_formatted": 10000,
"currency": "JPY"
}
]
},
"online_configuration": {
"enabled": false
},
"bank_transfer_configuration": {
"enabled": true,
"match_amount": "disabled",
"expiration": "PT168H",
"expiration_time_shift": {
"value": "11:00:00+09:00",
"enabled": true
},
"virtual_bank_accounts_threshold": 5,
"virtual_bank_accounts_fetch_count": 10,
"default_extension_period": "PT24H",
"maximum_extension_period": "PT720H",
"automatic_extension_enabled": false,
"charge_request_notification_enabled": true,
"charge_request_canceled_notification_enabled": true,
"charge_expired_notification_enabled": true,
"deposit_received_notification_enabled": true,
"deposit_insufficient_notification_enabled": true,
"deposit_exceeded_notification_enabled": true,
"extension_notification_enabled": true,
"remind_notification_period": "PT72H",
"remind_notification_enabled": true
},
"supported_brands": [
{
"payment_type": "konbini",
"brand": "sunkus",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_plus_online",
"online_brand": "alipay_plus_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "yamazaki_daily_store",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "family_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "mini_stop",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "pay_easy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "alipay_online",
"online_brand": "alipay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "circle_k",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "mastercard",
"card_brand": "mastercard",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seven_eleven",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "seico_mart",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "d_barai_online",
"online_brand": "d_barai_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "daily_yamazaki",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "konbini",
"brand": "lawson",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "jcb",
"card_brand": "jcb",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "card",
"brand": "visa",
"card_brand": "visa",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": true
},
{
"payment_type": "paidy",
"brand": "paidy",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "diners_club",
"card_brand": "diners_club",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "card",
"brand": "american_express",
"card_brand": "american_express",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": true,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": true,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "pay_pay_online",
"online_brand": "pay_pay_online",
"dynamic_info": false,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "bank_transfer",
"brand": "aozora_bank",
"dynamic_info": false,
"support_auth_capture": false,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
},
{
"payment_type": "online",
"brand": "we_chat_online",
"online_brand": "we_chat_online",
"dynamic_info": true,
"support_auth_capture": true,
"requires_full_name": false,
"requires_cvv": false,
"countries_allowed": null,
"supported_currencies": [
"JPY"
],
"cvv_auth": false,
"installment_capable": false
}
]
}
ウェブフックオブジェクトに対するGETリクエストには以下が必要です。(括弧内は入力箇所)
ウェブフックIDを指定しない場合、クエリパラメータでフィルタリングすることで条件に当てはまるウェブフックの一覧を取得します。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request GET \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{webhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
curl --request GET \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}'
下記は記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": true,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-05-22T08:15:49.488255Z"
}
ウェブフックオブジェクトに対するUPDATEリクエストには以下が必要です。(括弧内は入力箇所)
通知失敗などによって停止したウェブフックを再開処理する場合はこのリクエストをご利用ください。
店舗を指定したウェブフック情報を取得する場合 merchants/{merchantId}
は省略可能です。
{merchantId}
部分){storeId}
部分){webhookId}
部分){secret}
部分){jwt}
部分)curl --request PATCH \
--url https://api.univapay.com/merchants/{merchantId}/stores/{storeId}/webhooks/{wenbhookId} \
--header 'Authorization: Bearer {secret}.{jwt}'
--header 'Content-type: application/json'
リクエストのbodyに含めることができるパラメータは以下です。
フィールド | データ型 | 備考 |
---|---|---|
active | boolean | ウェブフックのステータスtrue もしくはfalse |
url | string | ウェブフック通知先のURL |
triggers | string | イベントのトリガー 詳細はこちら |
auth_token | string | Authorizationヘッダー |
curl --request PATCH \
--url https://api.univapay.com/stores/11edf541-c42d-653c-8c3d-dfe0a55f95c0/webhooks/11ef1809-ad25-f160-9093-4f3cee241eb0 \
--header 'Authorization: Bearer {secret}.{jwt}' \
--header 'content-type: application/json' \
--data '{"active": "false"}'
下記はBodyの記述例でリクエストした場合の例です。
200
Content-Type: application/json
{
"id": "11ef1809-ad25-f160-9093-4f3cee241eb0",
"platform_id": "11e7a7eb-0ef8-b0c6-bd54-f7a2646e6c47",
"merchant_id": "11edf541-548f-ad70-8bc2-d34ca468c664",
"store_id": "11edf541-c42d-653c-8c3d-dfe0a55f95c0",
"triggers": [
"charge_finished",
"refund_finished"
],
"url": "https://webhook.URL/",
"active": false,
"created_on": "2024-05-22T07:05:31.049021Z",
"updated_on": "2024-06-25T09:41:56.235574Z"
}