はじめに
API エンドポイント
- https://air.veritrans.co.jp/vtdirect
各APIのパス
- /v1/veritrans.min.js
- /v1/charges
- /v1/recharges
- /v1/creditcard/list
- /v1/creditcard/destroy
- /v1/capture
- /v1/search
- /v1/status
- /v1/void
- /v1/mpi_charges
- /v1/tokens
- /v1/cvs
用語集
- マーチャント
- Air-Directをご利用される事業者様を指します。
- マーチャントサイト
- 事業者様が運営されるAir-Direct利用サイトのことを指します。
- MAP
- 当社が提供する、マーチャント様向けの取引管理サイトのことを指します。
Air-Directで実施した決済はMAPにて取引検索を行うことで確認ができます。
- API
- Air-Directが提供するWeb APIを指します。
Air-Directの各機能は別々のURIに分かれており、利用したい機能のURIに対して、HTTPヘッダに認証情報、BODY部にパラメータをJSONシリアライズした文字列を指定し、GETやPOSTメソッドで送信することで処理が行われます。
処理結果もJSONで応答されますので、マーチャントサイトにて簡単に処理することが可能です。
- APIライブラリ
- Air-DirectのAPIにリクエストを送信するためのプログラムライブラリです。
API自体は容易な仕様になっておりますので、APIライブラリを利用せず、マーチャント様で独自に実装いただくことも可能です。
- Client Key
- Tokens APIを利用する際、要求パラメータに含める必要のある認証キー。HTMLやJavaScript上に記述して利用します。
- Server Key
- Tokens APIを除く、各APIを利用するための認証キー。HTTPヘッダにAuthorizationヘッダとして指定して利用します。重要な認証キーであるため、マーチャントサイトのサーバにのみ保存し、外部に漏らさないよう注意してください。
- veritrans.min.js (veritrans.js)
- カード情報をAir-Directに送信し、Token Idを取得するためのJavaScriptプログラムです。
マーチャントサイトのカード情報入力画面にて読み込み、関数にカード情報を渡すことで、ブラウザからAir-Directに直接カード情報が送信されます。
詳しい利用方法についてはveritrans.min.jsを参照ください。
- トークン、Token Id
- Tokens APIにカード情報を送信することで払い出される、英数ハイフンで構成された文字列です。
ランダムな36桁の文字と、クレジットカード番号の上6桁、下4桁で構成されます。Token Idはおよそ1分間有効であり、送信されたカード情報を識別するために必要なパラメータとなります。Charges APIでのみ利用しますが、一度送信すると失効し、再利用できません。
- Order Id
- Air-Directで決済を行うためには、マーチャントサイトで採番された一意の文字列をOrder Idとして、APIに送信する必要があります。
Order Idは後述のCapture API等で、Air-Directに登録された注文を識別するために必要なパラメータとなりますので、マーチャントサイト様のデータベースにて保存しておく必要があります。 多くの場合、マーチャントサイト側注文データベースのキー値をOrder Idとして利用できます。
- Tokens API
- Air-Directに一時的にカード情報を保持するためのAPIです。登録されたカード情報を識別するためのToken Idを応答します。
- Charges API
- クレジットカードでの与信または与信同時売上を実施するためのAPIです。
払い出されたToken Id、採番したOrder Id、決済金額の3つが最低限必要なパラメータとなります。
Token Idには有効期限がありますので、veritrans.min.jsにてブラウザがToken Idを取得したら即座にマーチャントサイトに送信し、Charges APIで決済を実施してください。
また、カード情報を再入力せず決済を行えるようにするためには、Charges APIにてオプションパラメータを指定し、マーチャントサイト側会員の紐づけを行う必要があります。
- ReCharges API
- 過去の決済情報を利用し、再取引を行うことでカード情報を再入力せず決済を実施するためのAPIです。
後述のRegister Idを指定することで実施でき、カード情報を再度入力する必要がありません。
MAPから取引検索を行い、再取引を実行することでも同様の決済を行うことが可能です。
- Customer Id
- ReCharges APIを利用する際、Charges APIにてCustomer Idをパラメータとして指定できます。
これにより、Customer Idをキーに登録済みのカード情報をCreditcard/list APIにて取り出すことが可能となります。 多くの場合、マーチャントサイト側会員データベースのキー値をCustomer Idとして利用できます。
Air-DirectはCustomer Idと、再取引のための過去の決済情報を1対多の関係で保管しますので、マーチャントサイトで枝番の管理を行う必要はありません。
- Register Id
- Charges APIにてregisterパラメータを指定し、決済に成功した際に払い出されるRegister IdをReCharges APIのパラメータとして指定する必要があります。
Creditcard/list APIにて、指定したCustomer Idに紐づくRegister Idおよびクレジットカードブランド等の情報を取得できますので、必ずしもマーチャントサイト側データベースにてRegister Idを保持する必要はありません。
認証処理
Server Key
Acceptヘッダ、Content-Typeヘッダに加えて、以下のようにAuthorization HTTPヘッダを追加してください。
| ヘッダ名 | 値 |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| Authorization | Basic {Server KeyをBase64エンコードした文字列} |
Client Key
詳しくはveritrans.min.jsまたはTokens APIを参照してください。
エラー処理
応答結果を判定するための情報を以下に記載します。
Http Status Code
APIライブラリでは、Http Status Codeが200でなかった場合、例外をスローします。
code
status
message
どのような処理に成功したか、または何が原因で失敗したか、といった情報が含まれます。
errors
messagesに含まれるものと内容は同じですが、パラメータ不備が複数あった場合等は、errorsにString配列で失敗原因が一つずつ格納されます。
タイムアウトについて
応答パターン
| code | 意味 |
|---|---|
Q000 |
処理が成功した場合。 |
Q001 |
送信パラメータに不備があった場合や、検証ができなかった場合。また、決済が失敗した場合。 |
Q002 |
veritrans.min.jsを利用してTokens APIにカード情報を送信する際、Client Keyが空だった場合。 |
Q099 |
Air-Directにて想定外のエラーが発生した場合。 |
| status | 意味 |
|---|---|
success |
codeがQ000の場合 |
failure |
codeがQ001の場合 |
fatal |
codeがQ099の場合 |
| transaction_type (カード決済) |
意味 |
|---|---|
init |
エラー発生時 |
a |
与信 |
ax |
与信(期限切れ) |
ac |
与信売上 |
pa |
売上 |
va,rad,rae |
与信→取消 |
vac,racd,race |
与信売上→取消 |
vpa,rpad,rpae |
売上→取消 |
| transaction_type (コンビニ決済) |
意味 |
|---|---|
authorize |
申込完了(失敗含む) |
cancel_authorize |
キャンセル済み |
fix_capture |
入金済み |
failureエラーサンプル
failureエラーが発生した場合の応答JSONのサンプルです。
{
"data": {
"order_id": "TEST0005",
"gross_amount": 1980,
"card_number": "4111XXXXXXXXXX11",
"with_capture": false
},
"mstatus": "failure",
"vresult_code": "NH18000000000000",
"code": "Q001",
"status": "failure",
"message": "[Order already succeeded]",
"errors": [
"Order already succeeded"
]
}
fatalエラーサンプル
fatalエラーが発生した場合の応答JSONです。
{
"code": "Q099",
"status": "fatal",
"message": "Fatal error, please contact veriTrans"
}
veritrans.min.js
通常はマーチャントサイトに用意したカード情報入力画面にて、入力された情報をveritrans.min.jsのメソッドを利用し、ブラウザから直接Tokens APIに送信します。
読み込み
<script src="https://air.veritrans.co.jp/vtdirect/v1/veritrans.min.js">
カード情報送信
// Client Keyをセット
Veritrans.client_key = "Client Key";
function _error(d) {
var message = d.message;
// 失敗時のナビゲーションを行うコードを記述
}
function _success(d) {
var token_id = d.data.token_id;
// 取得したToken Idをマーチャントサイトに送信するコードを記述
}
function _cardSet() {
return {
"card_number": "カード番号", // 入力されたカード番号をセット
"card_exp_month": "有効期限(MM)", // 入力された有効期限(月)をセット
"card_exp_year": "有効期限(YYYY)", // 入力された有効期限(年)をセット
"card_cvv": "セキュリティコード" // 入力されたセキュリティコードをセット
}
}
// ボタンが押下されたらカード情報を送信するコードを記述
$("button.submit").bind("click", function () {
Veritrans.tokenGet(_cardSet, _success, _error);
});
クレジットカード決済 (/charges)
Token Idにはおよそ1分間の有効期限があるため、ブラウザからToken Idがマーチャントサイトに送信されたら、即座に本APIを利用してカード決済を実施する必要があります。
Uri
https://air.veritrans.co.jp/vtdirect/v1/charges
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * token_id | Tokens APIによって払い出されたTokenIdを指定する。 |
|---|---|
| * order_id | 決済ごとにユニークな番号を指定する。利用可能文字は半角英数とハイフン、アンダースコアで100桁以内であること。 |
| * gross_amount | 決済金額を1~99999999で指定する。 |
| with_capture | 同時売上するかどうかをBooleanで指定する。指定しなかった場合は与信のみ実施する。trueを指定した場合は与信と同時に売上も行う。 |
| register | マーチャントサイト側会員に本決済の取引を紐づけるかどうかをBooleanで指定する。指定しなかった場合は紐づけしない。Trueを指定した場合は、本決済の取引IDをAir-Directに記録する。(決済が失敗した場合は記録しない) |
| customer_id | マーチャントサイト側会員の識別ID(マーチャントが採番したもの)を指定する。RegisterにTrueを指定すれば、Customer Idを指定しなくてもRegister Idは払い出されるが、その場合はマーチャントで払い出されたRegister Idを保管する必要がある。 |
| test_mode | 決済をダミー取引とするかどうかをBooleanで指定する。指定しなかった場 合は本取引となり、ダミー取引とならない。テスト時はtrueを指定すること。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\ChargesParameter();
$input->order_id = "TEST0003";
$input->token_id = "1c0cc4c0-9973-40db-bf81-8caf5349037d-411111-1111";
$input->gross_amount = 1980;
$charges = new \VtDirect\Client\Charges($setting);
$response = $charges->ChargeWithToken($input);
Ruby code
setting = VtDirect::Setting.new
setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000'
input = VtDirect::Request::ChargesParameter.new
api = VtDirect::Charges.new setting
input.order_id = 'TEST0030'
input.token_id = 'c4a94573-3b03-4289-be1a-bb4d8dbcce04-411111-1111'
input.gross_amount = 1980
response = api.charge_with_token input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
ChargeRequest input = new ChargeRequest();
Charges api = new Charges(clientConfiguration);
input.setGrossAmount(1980);
input.setOrderId("TEST0050");
input.setTokenId("3d499de5-b009-47b2-a331-2d9b2a00b288-411111-1111");
ChargeResponse response = api.ChargeWithToken(input);
リクエストサンプル1
{
"token_id": "7caebe94-b39c-4468-aad0-4da4e42648a8-411111-1111",
"order_id": "TEST0001",
"gross_amount": 1980
}
リクエストサンプル2
2回目以降の決済のためにマーチャントサイト側会員と決済を紐づけるためには、以下のようなJSONをリクエスト本文に記述する。
{
"token_id": "64761c74-3b1c-4d73-b6e9-18d0bf721db7-411111-1111",
"order_id": "TEST0002",
"register": true,
"customer_id": "C0001",
"gross_amount": 1980
}
成功時のレスポンスの内容
register無効時
{
"data": {
"order_id": "TEST0004",
"gross_amount": 1980,
"card_number": "4111XXXXXXXXXX11",
"with_capture": false
},
"mstatus": "success",
"vresult_code": "A001H00100000000",
"transaction_type": "a",
"pending": "0",
"acquirer_code": "05",
"trad_url": "https://www.example.com/abcde;fghij;klmno",
"code": "Q000",
"status": "success",
"message": "Success do charge transaction"
}
register有効時
{
"data": {
"order_id": "TEST0005",
"gross_amount": 1980,
"card_number": "4111XXXXXXXXXX11",
"with_capture": false
},
"mstatus": "success",
"vresult_code": "A001H00100000000",
"transaction_type": "a",
"pending": "0",
"acquirer_code": "05",
"trad_url": "https://www.example.com/abcde;fghij;klmno",
"register_id": "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014",
"customer_id": "C0001",
"code": "Q000",
"status": "success",
"message": "Success do charge transaction"
}
※customer_idにはcharge要求時に指定した文字列が入る。
カード決済処理エラー
Charges APIやReCharges APIでは以下の記載内容を参考に、応答結果により画面遷移等の制御を実装してください。
mstatus
与信または与信同時売上に成功した場合のみ、successとなります。
| mstatus | 意味 |
|---|---|
| success | 正常終了 |
| failure | 異常終了 |
| pending | 保留 |
vresult_code
mstatusがsuccessにならなかった場合の主なエラーコードとその原因を以下に記載します。
必要に応じてナビゲーションを表示するよう実装してください。
| vresult_code上4桁 | 原因 |
|---|---|
| AG33 | カード使用不可。 |
| AG39 | 取引判定保留(有人判定)です。 |
| AG41 | セキュリティコード誤りです。 |
| AG44 | 1口座利用回数または金額オーバーです。 |
| AG45 | 1日限度額オーバーです。 |
| AG46 | クレジットカードが無効です。 |
| AG47 | 事故カードです。 |
| AG48 | 無効カードです。 |
| AG49 | 会員番号エラーです。 |
| AG51 | 金額エラーです。 |
| AG61 | 支払い区分エラーです。 |
| AG64 | 有効期限エラーです。 |
| AG70 | 当該要求拒否です。 |
| AG71 | 当該自社対象業務エラーです。 |
| AG72 | 接続要求自社受付拒否です。 |
| ACD6 | 元取引が存在しません。 |
失敗時のレスポンスの内容
Token有効期限切れ
{
"code": "Q001",
"status": "failure",
"message": "[Token was expired]",
"errors": [
"Token was expired"
]
}
OrderID重複時
{
"data": {
"order_id": "TEST0005",
"gross_amount": 1980,
"card_number": "4111XXXXXXXXXX11",
"with_capture": false
},
"mstatus": "failure",
"vresult_code": "NH18000000000000",
"code": "Q001",
"status": "failure",
"message": "[Order already succeeded]",
"errors": [
"Order already succeeded"
]
}
カードエラー
{
"data": {
"order_id": "TEST0007",
"gross_amount": 1980,
"card_number": "4111XXXXXXXXXX11",
"with_capture": false
},
"mstatus": "failure",
"vresult_code": "AG72000000000000",
"transaction_type": "init",
"pending": "",
"acquirer_code": "05",
"code": "Q001",
"status": "failure",
"message": "[Card Error]",
"errors": [
"Card Error"
]
}
クレジットカード再取引決済 (/recharges)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * order_id | 決済ごとにユニークな番号を指定する。利用可能文字は半角英数とハイフン、アンダースコアで100桁以内であること。 |
|---|---|
| * register_id | Chargesにて、registerパラメータをtrueとして決済した場合に払い出されるIDを指定する。 |
| * gross_amount | 決済金額を1~99999999で指定する。 |
| with_capture | 同時売上するかどうかをBooleanで指定する。指定しなかった場合は与信の み実施する。trueを指定した場合は与信と同時に売上も行う。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\ReChargesParameter();
$input->register_id = "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014";
$input->order_id = "TEST0009";
$input->gross_amount = 1980;
$charges = new \VtDirect\Client\ReCharges($setting);
$response = $charges->ReChargeWithRegisterId($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::ReChargesParameter.new input.order_id = 'TEST0032' input.gross_amount = 1980 input.register_id = 'bd7067e7-275e-47d4-b7e1-8986ee897caf1384337330' api = VtDirect::ReCharges.new setting response = api.re_charge_with_register_id input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
ReChargeRequest input = new ReChargeRequest();
input.setOrderId("TEST0052");
input.setGrossAmount(1980);
input.setRegisterId("8e5456ed-966a-44fb-bb69-d4b0a377bed21384413841");
ReCharges api = new ReCharges(clientConfiguration);
ReChargeResponse response = api.ReChargeWithRegisterId(input);
リクエストサンプル
{
"order_id": "TEST0007",
"register_id": "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014",
"gross_amount": 1980
}
成功時のレスポンスの内容
{
"data": {
"order_id": "TEST0007",
"gross_amount": 1980,
"with_capture": false
},
"mstatus": "success",
"vresult_code": "A001000000000000",
"transaction_type": "a",
"pending": "0",
"acquirer_code": "05",
"register_id": "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014",
"customer_id": "C0001",
"trad_url": "https://www.example.com/abcde;fghij;klmno",
"code": "Q000",
"status": "success",
"message": "Success do recharge transaction"
}
カード決済処理エラー
また、400日を経過した取引データは削除されるため、Charges/ReCharges APIで決済に成功した取引が古い場合は、決済に失敗する場合があります。
応答結果がエラーであった場合の制御はCharges API同様に実装してください。
失敗時のレスポンスの内容
OrderID重複時
{
"data": {
"order_id": "TEST0007",
"gross_amount": 1980,
"with_capture": false
},
"mstatus": "failure",
"vresult_code": "NH18000000000000",
"code": "Q001",
"status": "failure",
"message": "[Order already succeeded]",
"errors": [
"Order already succeeded"
]
}
指定されたRegisterIDで登録が見つからなかった場合
{
"code": "Q001",
"status": "failure",
"message": "[No such credit card bind]",
"errors": [
"No such credit card bind"
]
}
カード情報管理 (/creditcard)
カード情報一覧取得 (Creditcard/list)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * customer_id | マーチャントサイト側会員の識別IDを指定。 |
|---|
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\CreditCardListParameter();
$input->customer_id = "C0001";
$api = new \VtDirect\Client\CreditCardList($setting);
$response = $api->ListCreditCardBind($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::CreditCardListParameter.new input.customer_id = 'C0002' api = VtDirect::CreditCardList.new setting response = api.list_credit_card_bind input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
CreditCardListRequest input = new CreditCardListRequest();
input.setCustomerId("C0006");
CreditCardList api = new CreditCardList(clientConfiguration);
CreditCardListResponse response = api.ListCreditCardBind(input);
リクエストサンプル
{
"customer_id": "C0001"
}
成功時のレスポンスの内容
{
"cards": [
{
"register_id": "414264f0-87da-4bba-8da8-25df92fd35dc1384314166",
"brand": "MASTER",
"last4": "4444",
"original_order_id": "TEST0010",
"last_updated": "2013-11-13 12:40:08",
"customer_id": "C0001"
},
{
"register_id": "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014",
"brand": "VISA",
"last4": "1111",
"original_order_id": "TEST0009",
"last_updated": "2013-11-13 11:40:16",
"customer_id": "C0001"
}
],
"customer_id": "C0001",
"code": "Q000",
"status": "success",
"message": "Success do query credit card list"
}
カード情報削除 (Creditcard/destroy)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * register_id | register有効時にAir-Directから払い出された識別ID。 |
|---|
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\CreditCardDestroyParameter();
$input->register_id = "3a582e5c-4d68-47c5-861e-74bb1b50a05d1384309014";
$api = new \VtDirect\Client\CreditCardDestroy($setting);
$response = $api->DestroyCreditCardBind($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::CreditCardDestroyParameter.new input.register_id = 'bd7067e7-275e-47d4-b7e1-8986ee897caf1384337330' api = VtDirect::CreditCardDestroy.new setting response = api.destroy_credit_card_bind input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
CreditCardDestroyRequest input = new CreditCardDestroyRequest();
input.setRegisterId("8e5456ed-966a-44fb-bb69-d4b0a377bed21384413841");
CreditCardDestroy api = new CreditCardDestroy(clientConfiguration);
CreditCardDestroyResponse response = api.DestroyCreditCardBind(input);
リクエストサンプル
{
"register_id": "414264f0-87da-4bba-8da8-25df92fd35dc1384314166"
}
成功時のレスポンスの内容
{
"customer_id": "C0001",
"register_id": "414264f0-87da-4bba-8da8-25df92fd35dc1384314166",
"code": "Q000",
"status": "success",
"message": "Success do destroy credit card bind"
}
失敗時のレスポンスの内容
登録されていないregister_idを指定した場合
{
"register_id": "414264f0-87da-4bba-8da8-25df92fd35dc1384314166",
"code": "Q001",
"status": "failure",
"message": "[No such credit card bind]",
"errors": [
"No such credit card bind"
]
}
売上処理 (/capture)
与信取得時の金額で売上が行われます。
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * order_id | Charges APIにて与信を行った際に指定したOrder Idを指定する。 |
|---|---|
| amount | 売上金額を与信時の金額以下の数値で指定する。未指定時は与信金額が売上金額となる。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\CaptureParameter();
$input->order_id = "TEST0005";
$api = new \VtDirect\Client\Capture($setting);
$response = $api->CaptureOrder($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::CaptureParameter.new input.order_id = 'TEST0040' api = VtDirect::Capture.new setting response = api.capture_order input
Java code
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
CaptureRequest input = new CaptureRequest();
input.setOrderId("TEST0050");
Capture api = new Capture(clientConfiguration);
CaptureResponse response = api.CaptureOrder(input);
リクエストサンプル
{
"order_id": "TEST0001"
}
成功時のレスポンスの内容
正常時
{
"data": {
"order_id": "TEST0001",
"transaction_status": "capture"
},
"vresult_code": "A001000000000000",
"code": "Q000",
"status": "success",
"message": "Success do capture transaction"
}
失敗時のレスポンスの内容
2回Captureしようとした場合
{
"vresult_code": "NH18000000000000",
"code": "Q001",
"status": "failure",
"message": "[This order is already captured]",
"errors": [
"This order is already captured"
]
}
キャンセル済みの注文をCaptureしようとした場合
{
"vresult_code": "NH02000000000000",
"code": "Q001",
"status": "failure",
"message": "[Order invalid]",
"errors": [
"Order invalid"
]
}
存在しない注文をCaptureしようとした場合
{
"code": "Q001",
"status": "failure",
"message": "[Order not found]",
"errors": [
"Order not found"
]
}
決済トランザクション情報取得 (/search)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文
本人認証結果取得時はRequest Idのみ指定、それ以外の場合はOrder Idのみ指定する| order_id | 決済トランザクション情報を取得する対象の注文のOrder Idを指定する。 |
|---|---|
| request_id | 本人認証結果を取得するためのキー項目であるRequest Idを指定する。 |
| test_mode | ダミー取引を検索する場合はTrueを指定する。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\SearchParameter();
$input->order_id = "TEST0011";
$api = new \VtDirect\Client\Search($setting);
$response = $api->GetOrderTransactionInfo($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::SearchParameter.new input.order_id = 'TEST0011' api = VtDirect::Search.new settings response = api.get_order_transaction_info input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
SearchRequest input = new SearchRequest();
input.setOrderId("TEST1011");
Search api = new Search(clientConfiguration);
SearchResponse response = api.getOrderTransactionInformation(input);
リクエストサンプル
"https://air.veritrans.co.jp/vtdirect/v1/search?order_id=TEST0011"
成功時のレスポンスの内容
正常時
{
"order_info": {
"order_id": "TEST0011",
"service_type_code": "mpi",
"last_success_command": "Capture",
"success_detail_transaction_type": "pa",
"proper_order_info": {},
"memo1": "memo",
"free_key": "keyinfo",
"transaction_info_array": [
{
"amount": 100,
"command": "Authorize",
"mstatus": "success",
"vresult_code": "G001H00100000000",
"transaction_datetime": "2014-12-16 12:06:21.048",
"properTransactionInfo": {
"transaction_kind": "mpi",
"transaction_type": "auth",
"corporation_id": "05",
"res_3d_message_version": "1.0.2"
}
},
{
"amount": 100,
"command": "Verify",
"mstatus": "success",
"vresult_code": "G011A00100000000",
"transaction_datetime": "2014-12-16 12:06:46.74",
"properTransactionInfo": {
"transaction_kind": "mpi",
"transaction_type": "vd",
"res_3d_cavv": "OTg3NjU0MzIxMDk4NzY1NDMyMT\u003d\u003d",
"res_3d_cavv_algorithm": "2",
"res_3d_eci": "05",
"res_3d_message_version": "1.0.2",
"res_3d_transaction_id": "MDEyMzQ1Njc4OT\u003dxMjM0NTY3ODk\u003d",
"res_3d_transaction_status": "Y"
}
},
{
"amount": 100,
"command": "Verify",
"mstatus": "success",
"vresult_code": "G011A00100000000",
"transaction_datetime": "2014-12-16 12:06:46.932",
"properTransactionInfo": {
"transaction_kind": "card",
"res_auth_code": "000000",
"res_center_error_code": " "
}
},
{
"amount": 100,
"command": "Capture",
"mstatus": "success",
"vresult_code": "A001000000000000",
"transaction_datetime": "2014-12-18 14:46:10.94",
"properTransactionInfo": {
"transaction_kind": "card",
"res_auth_code": "000000",
"res_center_error_code": " "
}
}
]
},
"vresult_code": "N001000000000000",
"mstatus": "success",
"code": "Q000",
"status": "success",
"message": "Search request was successful"
}
失敗時のレスポンスの内容
存在しないオーダーIDを指定した場合
{
"vresult_code": "N001000000000000",
"mstatus": "success",
"code": "Q001",
"status": "failure",
"message": "[such an order was not found]",
"errors": ["such an order was not found"]
}
決済状況取得 (/status)
より多くの情報を取得できる決済トランザクション情報取得APIがありますので、通常は /search をご利用ください。
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * order_id | 決済トランザクション情報を取得する対象の注文のOrder Idを指定する。 |
|---|
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\StatusParameter();
$input->order_id = "TEST0011";
$api = new \VtDirect\Client\Status($setting);
$response = $api->GetOrderStatus($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::StatusParameter.new input.order_id = 'TEST0031' api = VtDirect::Status.new setting response = api.get_order_status input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
StatusRequest input = new StatusRequest();
String orderId = "TEST0052";
input.setOrderId(orderId);
Status api = new Status(clientConfiguration);
StatusResponse response = api.GetOrderStatus(input);
リクエストサンプル
{
"order_id": "TEST0011"
}
成功時のレスポンスの内容
正常時
{
"data": {
"order_id": "TEST0011",
"service_type_code": "card",
"order_status": "end",
"last_success_transaction_type": "Authorize",
"success_detail_transaction_type": "a",
"amount": 1980,
"transaction_type": "a",
"gateway_request_date": "2013-11-13 15:41:37",
"gateway_response_date": "2013-11-13 15:41:37",
"pending": "0",
"auth_code": "000000",
"action_code": "000"
},
"vresult_code": "N001000000000000",
"code": "Q000",
"status": "success",
"message": "Success search card order transaction"
}
失敗時のレスポンスの内容
存在しないオーダーIDを指定した場合
{
"vresult_code": "N001000000000000",
"code": "Q001",
"status": "failure",
"message": "[such an order was not found]",
"errors": [
"such an order was not found"
]
}
決済のキャンセル (/void)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * order_id | キャンセルを行う注文のOrder Idを指定する。 |
|---|---|
| amount | カード売上の一部キャンセル金額を指定する。売上金額以下の数値を指定する必要がある。未指定時は全額取消となる。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\CancelParameter();
$input->order_id = "TEST0011";
$api = new \VtDirect\Client\Cancel($setting);
$response = $api->CancelOrder($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::VoidParameter.new input.order_id = 'TEST0040' api = VtDirect::Void.new setting response = api.void_order input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
VoidRequest input = new VoidRequest();
String orderId = "TEST0052";
input.setOrderId(orderId);
Void api = new Void(clientConfiguration);
VoidResponse response = api.VoidOrder(input);
リクエストサンプル
{
"order_id": "TEST0002"
}
成功時のレスポンスの内容
正常時
{
"data": {
"order_id": "TEST0002",
"transaction_status": "cancel"
},
"vresult_code": "A001000000000000",
"code": "Q000",
"status": "success",
"message": "Success do void transaction"
}
失敗時のレスポンスの内容
キャンセル済みの注文をキャンセル
{
"vresult_code": "NH18000000000000",
"code": "Q001",
"status": "failure",
"message": "[This order is already cancelled]",
"errors": [
"This order is already cancelled"
]
}
本人認証決済 (/mpi_charges)
下記APIの応答結果にて、statusがsuccessだった場合はresponse_contentsを印字し、ブラウザを本人認証フローにリダイレクトさせてください。
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * order_id | 決済ごとにユニークな番号を指定する。利用可能文字は半角英数とハイフン、アンダースコアで100桁以内であること。 |
|---|---|
| * token_id | Tokens APIによって払い出されたTokenIdを指定する。 |
| * gross_amount | 決済金額を1~99999999で指定する。 |
| * service_option_type | 次のどれかを指定する。 "mpi-complete":完全認証 "mpi-company":通常認証(カード会社リスク負担) |
| push_uri | 本人認証結果Push通知の送信先マーチャントサイトURLを指定する。半角256桁以内であること。 |
| * redirection_uri | ブラウザの戻り先マーチャントサイトURLを指定する。半角256桁以内であること。 |
| * http_user_agent | ブラウザのHTTP User-Agentヘッダを指定する。 |
| * http_accept | ブラウザのHTTP Acceptヘッダを指定する。 |
| with_capture | 同時売上するかどうかをBooleanで指定する。指定しなかった場合は与信のみ実施する。trueを指定した場合は与信と同時に売上も行う。 |
| test_mode | 決済をダミー取引とするかどうかをBooleanで指定する。指定しなかった場 合は本取引となり、ダミー取引とならない。テスト時はtrueを指定すること。 |
| memo1 | 取引に関するメモ情報を指定する。100文字以内であること。 |
| free_key | 取引に関するキー情報(マーチャント様にて別途管理しているID等)を指定する。半角英数で2560桁以内であること。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new VtDirect\Client\Request\MpiChargesParameter();
$input->token_id = "abcdef12-1234-abcd-ef12-abcdef1234ab-411111-1111";
$input->order_id = "TEST1005";
$input->gross_amount = 1980;
$input->service_option_type = "mpi-complete";
$input->push_uri = "https://example.com/push_receive";
$input->redirection_uri = "https://example.com/complete";
$input->http_user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
$input->http_accept = "text/html, application/xhtml+xml, */*";
$api = new VtDirect\Client\MpiCharges($setting);
$response = $api->MpiChargeWithToken($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' input = VtDirect::Request::MpiChargesParameter.new input.token_id = 'abcdef12-1234-abcd-ef12-abcdef1234ab-411111-1111' input.order_id = 'TEST1005' input.gross_amount = 1980 input.service_option_type = 'mpi-complete' input.push_uri = 'https://example.com/push_receive' input.redirection_uri = 'https://example.com/complete' input.http_user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' input.http_accept = 'text/html, application/xhtml+xml, */*' api = VtDirect::MpiCharges.new setting response = api.mpi_charge_with_token input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
MpiChargeRequest input = new MpiChargeRequest();
input.setTokenId("abcdef12-1234-abcd-ef12-abcdef1234ab-411111-1111");
input.setOrderId("TEST1005");
input.setGrossAmount(1980);
input.setServiceOptionType("mpi-complete");
input.setPushUri("https://example.com/push_receive");
input.setRedirectionUri("https://example.com/complete");
input.setHttpAccept("text/html, application/xhtml+xml, */*");
input.setHttpUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko");
MpiCharges api = new MpiCharges(clientConfiguration);
MpiChargeResponse response = api.mpiChargeWithToken(input);
リクエストサンプル
{
"token_id": "abcdef12-1234-abcd-ef12-abcdef1234ab-411111-1111",
"order_id": "TEST1006",
"gross_amount": 1980,
"service_option_type": "mpi-complete",
"push_uri": "https://example.com/push_receive",
"redirection_uri": "https://example.com/complete",
"http_user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
"http_accept": "text/html, application/xhtml+xml, */*"
}
成功時のレスポンスの内容
{
"data": {
"order_id": "TEST1006",
"gross_amount": 1980,
"with_capture": false,
"service_option_type": "mpi-complete",
"response_contents": "\u003c!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 ....(省略",
"res_corporation_id": "05",
"res_brand_id": "5"
},
"mstatus": "success",
"vresult_code": "G001H00100000000",
"code": "Q000",
"status": "success",
"message": "mpi authorize request was successful"
}
失敗時のレスポンスの内容
本人認証実行不可(イシュアまたは会員が未参加)
{
"mstatus": "failure",
"vresult_code": "GE02000000000000",
"code": "Q001",
"status": "failure",
"message": "[Cannot perform the authentication]",
"errors": [
"Cannot perform the authentication"
]
}
トークン発行 (/tokens)
通常はveritrans.min.jsにより、ブラウザから本APIにカード情報が送信されますので、マーチャントサイト側プログラムから本APIを利用することはありません。
Uri
リクエストパラメータ
リクエスト本文 *…必須
| * card_cvv | セキュリティコードを指定する。3~4ケタ数字。 |
|---|---|
| * card_exp_month | カード有効期限の月を指定する。2桁数字。 |
| * card_exp_year | カード有効期限の年を指定する。4桁数字。 |
| * card_number | カード番号を指定する。 |
| * client_key | Client Keyを指定する。 |
| callback | veritrans.min.jsから本APIが呼び出された場合は自動的に値がセットされ、応答形式がJSONPになります。callbackを指定しない場合は、JSONでの応答となります。 |
PHP code
$setting = new \VtDirect\Client\Setting(); $input = new \VtDirect\Client\Request\TokensParameter(); $input->card_number = "4111111111111111"; $input->card_exp_month = "12"; $input->card_exp_year = "2018"; $input->card_cvv = "1234"; $input->client_key = "bbbbbbbb-2222-cccc-3333-eeeeeeeeeeee"; $tokens = new \VtDirect\Client\Tokens($setting); $response = $tokens->GetToken($input);
Ruby code
setting = VtDirect::Setting.new
tokens = VtDirect::Tokens.new setting
response = tokens.get_token(
'bbbbbbbb-2222-cccc-3333-eeeeeeeeeeee',
'4111111111111111', '2018', '12', '123')
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
TokenRequest input = new TokenRequest();
input.setClientKey("bbbbbbbb-2222-cccc-3333-eeeeeeeeeeee");
input.setCardNumber("4111111111111111");
input.setCardExpireYear("2018");
input.setCardExpireMonth("12");
input.setCardCvv("123");
Tokens tokens = new Tokens(clientConfiguration);
TokenResponse response = tokens.GetToken(input);
※上記コードはマーチャントサイト側での実装サンプルですが、Tokens APIは原則としてveritrans.min.jsから利用されるAPIとなります。
リクエストサンプル
"https://air.veritrans.co.jp/vtdirect/v1/tokens?card_number=4111111111111111&card_exp_month=08&card_exp_year=2015&card_cvv=123&client_key=bbbbbbbb-2222-cccc-3333-eeeeeeeeeeee&callback=json1"
成功時のレスポンスの内容
{
"data": {
"token_id": "8ebec161-b054-4d31-83a1-4b58de696f89-411111-1111"
},
"code": "Q000",
"status": "success",
"message": "Success request new token"
}
※正常にTokenIdが払い出された場合は、token_idの最後にカード番号の上6桁と下4桁が付与されます。
失敗時のレスポンスの内容
client_keyが正しくない
{
"code": "Q001",
"status": "failure",
"message": "[Cannot find merchant]",
"errors": [
"Cannot find merchant"
]
}
card_numberの書式が正しくない
{
"code": "Q001",
"status": "failure",
"message": "[Invalid card number]",
"errors": [
"Invalid card number"
]
}
コンビニ決済 (/cvs)
Uri
リクエストパラメータ
リクエストヘッダ
| Accept | application/json |
|---|---|
| Content-Type | application/json |
| Authorization | Basic {base64encoded_server_key} {base64encoded_server_key}には、Base64エンコードしたServer Keyを指定する。 |
リクエスト本文 *…必須
| * option_type | セブンイレブンを利用する場合は"sej"を指定し、ローソン・ファミリーマート・ミニストップ・セイコーマートのどれかを利用する場合は"econ"を指定する。 |
|---|---|
| * order_id | 決済ごとにユニークな番号を指定する。利用可能文字は半角英数とハイフン、アンダースコアで100桁以内であること。 |
| * gross_amount | 決済金額を1~300000で指定する。 |
| * tel | 顧客電話番号を半角数字10~11桁で指定する。ハイフンは不可。固定値としないこと。 |
| * name1 | 顧客姓を全角20バイトで指定する。利用可能な文字は以下の通り。 長音符 ー 同の字点 々 一の字点 ヽ ヾ ゝ ゞ ノノ字点 〃 しめ 〆 数字・アルファベット、平仮名、カタカナ、第一水準漢字、第二水準漢字 |
| * name2 | 顧客名を全角20バイトで指定する。利用可能な文字はname1パラメータと同様。 |
| pay_limit | 支払有効期限を半角数字8桁、yyyymmddの形式で指定する。 option_typeパラメータに"sej"を指定した場合は当日~150日後を指定可能。 "econ"を指定した場合は当日~60日後を指定可能。 未指定の場合は既定値が利用される。 |
| test_mode | 決済をダミー取引とするかどうかをBooleanで指定する。指定しなかった場 合は本取引となり、ダミー取引とならない。テスト時はtrueを指定すること。 |
PHP code
$setting = new \VtDirect\Client\Setting();
$setting->SetServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
$input = new \VtDirect\Client\Request\CvsParameter();
$input->order_id = "TEST0014";
$input->gross_amount = 1980;
$input->name1 = 'テスト';
$input->name2 = 'タロウ';
$input->option_type = "sej";
$input->tel = '09000000000'; //固定値不可
$api = new \VtDirect\Client\Cvs($setting);
$response = $api->PaymentAtCvs($input);
Ruby code
setting = VtDirect::Setting.new setting.server_key = 'aaaaaaaa-1111-ffff-bbbb-000000000000' setting.ca_cert_path = 'D:\\cacert.pem' input = VtDirect::Request::CvsParameter.new input.order_id = 'TEST0041' input.gross_amount = 1980 input.name1 = 'テスト' input.name2 = 'タロウ' input.option_type = 'sej' input.tel = '09000000000' api = VtDirect::Cvs.new setting response = api.payment_at_cvs input
Java code
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setServerKey("aaaaaaaa-1111-ffff-bbbb-000000000000");
CvsRequest input = new CvsRequest();
input.setOrderId("TEST0053");
input.setGrossAmount(1980);
input.setName1("テスト");
input.setName2("タロウ");
input.setOptionType("sej");
input.setTel("09000000000");
Cvs api = new Cvs(clientConfiguration);
CvsResponse response = api.PaymentAtCvs(input);
リクエストサンプル
{
"order_id": "TEST0013",
"tel": "0900000000",
"name1": "テスト",
"name2": "タロウ",
"gross_amount": 1980,
"option_type": "sej"
}
入金通知
通知先URLはサービス設定より確認ください。
| パラメータ | 詳細 |
|---|---|
| numberOfNotify | 通知数 1回の入金完了情報に含まれる通知件数は最大1000件 1001件以上は次回通知となる |
| pushTime | 通知した日時(YYYYMMDDhhmmss) |
| pushId | 通知が送信されるたびに採番されるID 最大8文字 |
| 通知件数分下記の項番を繰り返す。尚、フィールド名の後ろに4ケタの連番(0000~0999)を付与する。 | |
| orderId | 注文申込時に指定されたOrder Id 最大100文字 |
| cvsType | 支払を行ったコンビニの識別文字列 "sej":セブン-イレブン "econ-lw":ローソン "econ-fm":ファミリーマート "econ-mini":ミニストップ "econ-other":セイコーマート ※option_typeとして"econ"を指定したダミー取引の場合は"econ-lw"固定となる。 |
| receiptNo | 受付番号文字列 半角英数記号で最大32文字 |
| receiptDate | 支払完了日(YYYYMMDDhhmmss) |
| rcvAmount | 入金金額 数値で最大6桁 |
| dummy | ダミー取引の場合は"1" |
HTTPS での結果通知受信を希望される場合は、ECサイト側設置サーバにてSSL 通信環境をご用意ください。SSL 証明書は認証局発行のものをご使用ください。
※自己署名(Self-Sign)のSSL 証明書はご利用できませんので、ご注意ください。
成功時のレスポンスの内容
{
"data": {
"order_id": "TEST0013",
"gross_amount": 1980
},
"mstatus": "success",
"vresult_code": "D001H00100000000",
"url": "https://payment.sej.co.jp/od/hi.asp?HARAIKOMIXXXXXXXXXXXXX0000010001",
"receipt_no": "2000000010001",
"trad_url": "https://www.example.com/abcde;fghij;klmno",
"code": "Q000",
"status": "success",
"message": "Success do cvs authorize transaction"
}
APIライブラリ
PHP
Air-Direct-php
PHP 5.4以降対応。PHPのcURLモジュールにてSSL通信が可能である必要があります。
Ruby
Air-Direct-ruby
Ruby 2.0以降対応。依存するRubyGemをBundlerでインストールする必要があります。
Java
Air-Direct-java
JDK1.7対応。依存するライブラリをMavenでインストールする必要があります。一部のクラスにGroovyを利用しています。
エラーコード一覧
カード決済
| vresult_code上4桁 | 原因 |
|---|---|
| NH18 | 既に決済済みのOrder Idを指定してchargeを要求した場合 |
| NH02 | 指定されたOrder Idの注文が既にキャンセルされているなど、取引の状態に問題がある場合 また、ダミー取引でテスト用として正しくないパラメータが指定された場合や、本番申込中の状態で本取引を実施した場合 |
| AG** | カード与信に失敗した場合 |
| NH04 | 取引が重複 |
| NH40 | order idが他のサービスで使用済み |
| AC25 | カード番号パラメータの書式が誤り |
| AC27 | カード番号パラメータの値がディジットエラー |
| AC30 | カード有効期限パラメータの書式が誤り |
| NH05 | 取引が処理中 |
| NC06 | 無効なパラメータ |
| AE10 | トランザクションが保留 |
| ACD3 | 取引は期限切れ |
| ACD4 | 元取引は成功の状態ではない |
コンビニ決済
| vresult_code上4桁 | 原因 |
|---|---|
| DC47, NH11 | 利用できないoption_typeパラメータを指定された場合 |
| NC04, NC06 | 無効なパラメータが指定された場合 |
| DC05 | 支払期限が有効期間外の場合 |
| DC07 | 顧客名(カナ)に正しくない書式で指定された場合 |
| DC08 | 支払期限に正しくない書式で指定された場合 |
| DE05, DG37 | テスト取引の決済条件が正しくない場合 |
| DH15 | ベリトランスゲートウェイ内でエラーが発生し、取引に失敗した場合 |
| NH18 | 既に成功している |
| NH02 | 取引が無効の場合 また、ダミー取引でテスト用として正しくないパラメータが指定された場合や、本番申込中の状態で本取引を実施した場合 |
| NH04 | 取引が重複 |
| NH40 | Order Idが他のサービスで使用済み |
| NH05 | 取引が処理中 |
| DC06 | 無効なパラメータ |
| DC09 | 無効なパラメータ |
| DC10 | オーダー決済状態が適切ではない |
| DC48 | 無効なパラメータ |
| DC49 | 無効なパラメータ |
| DG19 | レシート発券中のためキャンセルに失敗 |
| DH15 | 取引に失敗 |
売上処理
| vresult_code上4桁 | 原因 |
|---|---|
| NH18 | 指定されたOrder Idの注文が既に計上されていた場合 |
| NH02 | 指定されたOrder Idの注文が既にキャンセルされていた場合 |
| NH05 | 取引が処理中 |
| AC38 | パラメータで指定した金額が超過 |
| NH40 | 取引IDが他のサービスで使用済み |
決済のキャンセル
| vresult_code上4桁 | 原因 |
|---|---|
| NH18 | 指定されたOrder Idの注文が既にキャンセルされていた場合 |
| NH02 | 取引が無効 |
| NH05 | 取引が処理中 |
| AC38 | パラメータで指定した金額が超過 |
| DG19 | レシート発券中のためキャンセルに失敗 |
| DC10 | オーダー決済状態が適切ではない |
本人認証
| vresult_code上4桁 | 原因 |
|---|---|
| GC** | パラメータ不備 |
| GE** | 本人認証が実行できない、または失敗 ※[本人認証について] を参照してください。 |
- Prev:< [稼働確認]を見る
- Next:[本人認証]を見る >