認証APIv1からv2へのAPI移行
このページはActiveServer API v1からAPI v2へ移行するためのガイドです。ActiveServer API v1とはGPayments社が以前公開しましたActiveServerのAPI仕様です。
ActiveServerインハウス(オンプレミス)をご導入いただいてるお客様に対して、API v1のサポート期限は2020年Q4(欧米カレンダー)までと予定されております。詳細については改めてお知らせいたします。なお、ActiveServerホスティング・サービス(SaaS)はAPI v2のみ対応しますので、ホスティング・サービスをご利用いただくお客様はAPI v2でご導入いただきます。
主な変更¶
/api/v2/auth/
認証APIのエントリーポイントを追加しました。- ActiveServerはカード番号(PAN)を保持しないようになりました。ActiveServerはPANの上6桁と下4桁のみ、プレーンテキストでデータベースに保存します。よって、万が一、サイバー攻撃に遭う際の情報漏洩を最小限に抑えることができます。また、PCI審査の要件項目を減らすことも期待されております。なお、管理UI上、取引PANの検索機能は上6桁と下4桁のみマッチングするようになります。
- 暗号化PANは保存されないため、API v2を使用する場合は加盟店ごとの暗号化キーは不要になります。API v1においては引き続き必須です。
- 弊社の3DSリクエスター・サンプル・コードは、API v1ならびにAPI v2へ対応できるように更新されました。
ActiveServer変更¶
ActiveServerバージョンv1.3.0以降、API v2を通じて認証を実行しますと、ActiveServerは暗号化されたカード番号(PAN)を保存しないようになります。代わりに、トランケート形式(PANを部分的に切り捨てる形式)で、暗号化せずにプレーンテキストでデータベースに保存します。PANの上6桁と下4桁のみが保存され、全桁のPANは復元できなくなります。例えば、4123456789876543
のPANは412345XXXXXX6543
のようにデータベースに保存されます。また、管理UI上も同様、412345XXXXXX6543
と表示されます。
その結果、加盟店ごとの暗号化キーは不要となり、将来、この機能は削除される予定です。
なお、全桁のPANを保持しなくなるため、PAN全桁での取引検索はできなくなります。ですが、PANの残り桁での検索することは可能です。その場合、検索したいPANの全桁を検索欄に入力しますと、検索結果は上6桁と下4桁のみ一致する取引が返されます。仮にそれ以外の桁が違っても、その取引は検索結果に返されます。その場合、他の絞り込み条件(Transaction ID
、Date/Time
、Purchase amount
、Currency
、など)を使用し、お探しの取引を特定することを推奨します。API v2で実行された取引は引き続きPAN全桁での検索が可能です。
上記の変更により、API v2をご導入いただきますと以下のメリットが期待されております:
- パフォーマンスの向上:全取引にPANを暗号化する処理が省かれる
- セキュリティーの向上:万が一、サイバー攻撃に遭う際の情報漏洩を最小限にできる
- PCI受審期間の短縮化、または受審コストの削減:PCI受審時のカード会員データ環境(英:Cardholder Data Environment)のスコープを縮小できる
Important
上記の変更はAPI v2を使用する場合のみ適応されます。API v1に関する変更は下記をお読みください。
API v1への影響、およびAPI v2へのマイグレーション計画¶
API v1によって実行された取引は上記の変更に影響されません。現在統合済みのAPI v1システムは引き続き稼働可能です。その間、API v2へのマイグレーションの計画をご検討いただくようお願い申し上げます。API v1のサポート期限は2020年Q4(欧米カレンダー)までと予定されております。
以前API v1で実行された取引認証は引き続き、全桁のPANを暗号化し、加盟店ごとの暗号化キーと共にデータベースに保存されます。また、API v2へのマイグレーションをスムーズに行えるよう、弊社はAPI v2マイグレーション・ツールをリリースする予定です。このツールは以下の機能が予定されております:
- API v1によって実行された取引をAPI v2形式へ変換します。
- 暗号化キーストアをクリアします。
- API v1を無効化します。
弊社はお客様になるべく早くAPI v2へ移行することを推奨します。
APIの変更 - BRW認証API v2へのマイグレーション¶
API v2のBRW APIに関する主な変更は、カード会員情報は/api/v2/auth/brw
(Execute Authentication
)のAPIによって送信されるようになります。API v1においては、カード会員情報は/api/v2/auth/brw/init
(Initialise Authentication
)のAPIによって送信されていました。
API v2において、/api/v2/auth/brw/init
(Initialise Authentication
)は単に認証前のブラウザー情報収集、および3DS Method(ACSから追加のブラウザー情報収集処理)の実行(適用される場合のみ)を行います。
下記はリクエストのJSONメッセージ変更:
- 赤ハイライト - このフィールドは削除されました。
- 緑ハイライト - このフィールドは追加されました。
- ハイライトなし - このフィールドはAPI v1と同様です。
フィールド変更に関する詳細は認証APIドキュメントをご参照ください。
Initialise Authentication
の変更¶
{messageCategory}
パラメーターはリクエストメッセージURLからExecute Authentication (/api/v2/auth/brw)
リクエストの本文へ移行されました。- 下記、削除された取引情報フィールドは
Execute authentication
のAPIへ移行されました。 authUrl
フィールドはレスポンス・メッセージに追加され、Execute authentication
リクエストの送信先となります。- エラーコードのフィールドは成功した取引認証のレスポンス・メッセージから削除されました。
リクエスト本文¶
以下は/api/v1/auth/brw/init/{messageCategory}
と/api/v2/auth/brw/init
のリクエスト本文の相違点を記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | { - "acctID": "ActiveServer 3DS Test Account 000000001", - "acctInfo": { - "chAccAgeInd": "03", - "chAccChange": "20160712", - "chAccChangeInd": "04", - "chAccDate": "20140328", - "chAccPwChange": "20170328", - "chAccPwChangeInd": "02", - "nbPurchaseAccount": "11", - "paymentAccAge": "20160917", - "paymentAccInd": "04", - "provisionAttemptsDay": "3", - "shipAddressUsage": "20160714", - "shipAddressUsageInd": "04", - "shipNameIndicator": "02", - "suspiciousAccActivity": "01", - "txnActivityDay": "1", - "txnActivityYear": "21" - }, "acctNumber": "7654310438720050", - "acctType": "03", - "authenticationInd": "01", - "authenticationInfo": { - "threeDSReqAuthData": "validlogin at UL TS BV", - "threeDSReqAuthMethod": "02", - "threeDSReqAuthTimestamp": "201711071307" - }, - "cardExpiryDate": 1910, - "cardHolderInfo": { - "billAddrCity": "Bill City Name", - "billAddrCountry": 840, - "billAddrLine1": "Bill Address Line 1", - "billAddrLine2": "Bill Address Line 2", - "billAddrLine3": "Bill Address Line 3", - "billAddrPostCode": "Bill Post Code", - "billAddrState": "CO", - "cardholderName": "Cardholder Name", - "email": "example@example.com", - "homePhone": { - "cc": "123", - "subscriber": "123456789" - }, - "mobilePhone": { - "cc": "123", - "subscriber": "123456789" - }, - "shipAddrCity": "Ship City Name", - "shipAddrCountry": "840", - "shipAddrLine1": "Ship Address Line 1", - "shipAddrLine2": "Ship Address Line 2", - "shipAddrLine3": "Ship Address Line 3", - "shipAddrPostCode": "Ship Post Code", - "shipAddrState": "CO", - "workPhone": { - "cc": "123", - "subscriber": "123456789" - } - }, - "challengeInd": "02", "eventCallbackUrl": "https://example.requestor.com/3ds-notify", "merchantId": "1234567890123456789012345678901234", - "merchantName": "string", - "merchantRiskIndicator": { - "deliveryEmailAddress": "deliver@email.com", - "deliveryTimeframe": "01", - "giftCardAmount": "337", - "giftCardCount": "02", - "giftCardCurr": "840", - "preOrderDate": "20170519", - "preOrderPurchaseInd": "02", - "reorderItemsInd": "01", - "shipIndicator": "02" - }, - "payTokenInd": true, - "priorTransID": "59ae264e-b0f4-43c7-870e-4d14bd52806e", - "purchaseAmount": "12345", - "purchaseCurrency": "978", - "purchaseDate": "20180122153045", - "purchaseInstalData": "024", - "recurringExpiry": "20180131", - "recurringFrequency": "2", "threeDSRequestorTransID": "2409a5df-b777-4ebc-ad59-2a61091187f1", - "transType": "03" } |
レスポンス¶
以下は/api/v1/auth/brw/init/{messageCategory}
と/api/v2/auth/brw/init
のレスポンス本文の相違点を記します。
1 2 3 4 5 6 7 8 9 10 11 | { - "errorCode": "1005", - "errorComponent": "A", - "errorDescription": "Data element not in the required format. Not numeric or wrong length.", - "errorDetail": "billAddrCountry,billAddrPostCode,dsURL", - "errorMessageType": "AReq", + "authUrl": "https://demo.3dsserver.com/api/v2/auth/brw?t=dbb270aa890028817afe58fda659526e", "monUrl": "https://demo.3dsserver.com/brw/init/mon?t=6afa6072-9412-446b-9673-2f98b3ee98a2", "threeDSServerCallbackUrl": "https://demo.3dsserver.com/brw/callback?transId=6afa6072-9412-446b-9673-2f98b3ee98a2", "threeDSServerTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2" } |
Important
API v2において、Execute Authentication
処理はActiveServerが作成した動的(ダイナミック)URL(authUrl
)を使用することが必須となります。3DSリクエスターはこのURLを使用します。以前API v1のみ対応したデモ用3DSリクエスター・サンプル・コードはハードコードされたURLがありますが、そのURLは使用しません。
Execute Authentication
の変更¶
Execute Authentication (/api/v2/auth/brw)
のエントリーポイントは、Initialise authentication
レスポンス内のauthUrl
へ変更されました。Initialise Authentication
から削除されたカード会員情報と取引情報のパラメーターはリクエスト本文へ移行されました。threeDSRequestorTransID
とthreeDSServerTransID
のフィールドは不要になったため、削除されました。acctNumber
フィールドが追加されました。browserInfo
フィールドが追加されました。このフィールドはブラウザー情報収集処理によって収集された情報です。詳細は3DS Requestor changesをご参照ください。- API v1にありました
Initialise Authentication {messageCategory}
パラメーターはAPI v1 URLから削除され、レスポンス本文へ移行されました。 addrMatch
オプション・フィールドはcardHolderInfo
JSONオブジェクトに追加されました。請求先住所はお届け先住所と同じの場合はY
を設定、同じでない場合はN
を設定します。請求先住所とお届け先住所は必須情報です。threeDSRequestorTransID
フィールドは不要になったため、削除されました。- エラーコードのフィールドは成功した取引認証のレスポンス・メッセージから削除されました。
リクエスト本文¶
以下は/api/v1/auth/brw
と/api/v2/auth/brw
のリクエスト本文の相違点を記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | { + "acctID": "ActiveServer 3DS Test Account 000000001", + "acctInfo": { + "chAccAgeInd": "03", + "chAccChange": "20160712", + "chAccChangeInd": "04", + "chAccDate": "20140328", + "chAccPwChange": "20170328", + "chAccPwChangeInd": "02", + "nbPurchaseAccount": "11", + "paymentAccAge": "20160917", + "paymentAccInd": "04", + "provisionAttemptsDay": "3", + "shipAddressUsage": "20160714", + "shipAddressUsageInd": "04", + "shipNameIndicator": "02", + "suspiciousAccActivity": "01", + "txnActivityDay": "1", + "txnActivityYear": "21" + }, + "acctNumber": "7654310438720050", + "acctType": "03", + "authenticationInd": "01", + "authenticationInfo": { + "threeDSReqAuthData": "validlogin at UL TS BV", + "threeDSReqAuthMethod": "02", + "threeDSReqAuthTimestamp": "201711071307" + }, + "browserInfo": "Base64 encoded browser informaction", --New field added from V2 + "cardExpiryDate": "1910", + "cardHolderInfo": { + "addrMatch": "N", + "billAddrCity": "Bill City Name", + "billAddrCountry": 840, + "billAddrLine1": "Bill Address Line 1", + "billAddrLine2": "Bill Address Line 2", + "billAddrLine3": "Bill Address Line 3", + "billAddrPostCode": "Bill Post Code", + "billAddrState": "CO", + "cardholderName": "Cardholder Name", + "email": "example@example.com", + "homePhone": { + "cc": "123", + "subscriber": "123456789" + }, + "mobilePhone": { + "cc": "123", + "subscriber": "123456789" + }, + "shipAddrCity": "Sh"ip" City Name", + "shipAddrCountry": 840, + "shipAddrLine1": "Ship Address Line 1", + "shipAddrLine2": "Ship Address Line 2", + "shipAddrLine3": "Ship Address Line 3", + "shipAddrPostCode": "Ship Post Code", + "shipAddrState": "CO", + "workPhone": { + "cc": "123", + "subscriber": "123456789" + } + }, + "challengeInd": "02", + "merchantName": "Test Merchant", + "merchantRiskIndicator": { + "deliveryEmailAddress": "deliver@email.com", + "deliveryTimeframe": "01", + "giftCardAmount": "337", + "giftCardCount": "02", + "giftCardCurr": "840", + "preOrderDate": "20170519", + "preOrderPurchaseInd": "02", + "reorderItemsInd": "01", + "shipIndicator": "02" + }, + "messageCategory": "pa", + "payTokenInd": true, + "priorTransID": "59ae264e-b0f4-43c7-870e-4d14bd52806e", + "purchaseAmount": "12345", + "purchaseCurrency": "978", + "purchaseDate": "20180122153045", + "purchaseInstalData": "024", + "recurringExpiry": "20180131", + "recurringFrequency": "2", - "threeDSRequestorTransID": "2409a5df-b777-4ebc-ad59-2a61091187f1", "threeDSServerTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2", + "transType": "03" } |
レスポンス¶
以下は/api/v1/auth/brw
と/api/v2/auth/brw
のレスポンス本文の相違点を記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "acsChallengeMandated": "Y", "acsReferenceNumber": "3DS_GP_ACS_201_13579", "acsTransID": "375d90ad-3873-498b-9133-380cbbc8d99d", "authenticationType": "02", "authenticationValue": "MTIzNDU2Nzg5MDA5ODc2NTQzMjE=", "cardholderInfo": "For example, Additional authentication is needed for this transaction, please contact (Issuer Name) at xxx-xxx-xxxx. \n Length: Maximum 128 characters\n Optional", "challengeUrl": "https://demo.acs.com/challenge", "dsReferenceNumber": "string", "dsTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2", "eci": "02", - "errorCode": "1005", - "errorComponent": "A", - "errorDescription": "Data element not in the required format. Not numeric or wrong length.", - "errorDetail": "billAddrCountry,billAddrPostCode,dsURL", - "errorMessageType": "AReq", "messageVersion": "string", "threeDSServerTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2", "transStatus": "Y", "transStatusReason": 11 } |
Result
の変更¶
authenticationType
とinteractionCounter
フィールドを追加しました。これはカード会員へのチャレンジに関して情報をもっと提供するためです。acsReferenceNumber
とdsReferenceNumber
フィールドは削除されました。これはExecute Authentication
処理にすでに提供されているからです。- エラーコードのフィールドは成功した取引認証のレスポンス・メッセージから削除されました。
リクエスト¶
リクエスト本文への変更はありません。
レスポンス¶
以下は/api/v1/auth/brw/result
と/api/v2/auth/brw/result
のレスポンス本文の相違点を記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { - "acsReferenceNumber": "3DS_GP_ACS_201_13579", "acsTransID": "375d90ad-3873-498b-9133-380cbbc8d99d", + "authenticationType": "02", "authenticationValue": "MTIzNDU2Nzg5MDA5ODc2NTQzMjE=", - "dsReferenceNumber": "string", "dsTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2", "eci": "02", + "interactionCounter": "02", - "errorCode": "1005", - "errorComponent": "A", - "errorDescription": "Data element not in the required format. Not numeric or wrong length.", - "errorDetail": "billAddrCountry,billAddrPostCode,dsURL", - "errorMessageType": "AReq", "messageVersion": "string", "threeDSServerTransID": "6afa6072-9412-446b-9673-2f98b3ee98a2", "transStatus": "Y", "transStatusReason": 11 } |
APIの変更 - APP認証API v2へのマイグレーション¶
/api/v1/auth/app/{messageCategory}
のパスは/api/v2/auth/app
へ変更されました。{messageCategory}
フィールドはURLからリクエスト本文へ移行されました。addrMatch
オプション・フィールドはcardHolderInfo
JSONオブジェクトに追加されました。請求先住所はお届け先住所と同じの場合はY
を設定、同じでない場合はN
を設定します。請求先住所とお届け先住所は必須情報です。interactionCounter
フィールドは/api/v2/auth/app/result
のレスポンスへ追加されました。この値はカード会員が試した認証回数を示すため、ACSから返される場合があります。
APIの変更 - 3RI認証API v2へのマイグレーション¶
/api/v1/auth/3ri/{messageCategory}
のパスは/api/v2/auth/3ri
へ変更されました。{messageCategory}
フィールドはURLからリクエスト本文へ移行されました。
3DSリクエスターの変更¶
3DSリクエスターのバックエンド・コードは、返された
authURL
をWebサーバー・セッションのinitAuth
レスポンスに保存します。後に、authURL
はBRW認証チャンネルのExecute Authentication
処理に使われます。3DSリクエスターは
eventCallbackUrl
にて3DSMethodFinished
もしくは3DSMethodSkipped
のeventを受信する際、param
パラメーターの中にはActiveServerが収集したブラウザー情報がBase64エンコード方式で含まれています。そのため、弊社の3DSリクエスター・サンプル・コードには新しいAPI v2対応の3ds-web-adapter
が追加されました。3DSリクエスターは、Execute Authentication
リクエストにあるbrowserInfo
フィールド内に、上記のBase64エンコードされたブラウザー情報を送信します。3DSリクエスターはPANを二回ActiveServerへ送信します。
/api/v2/auth/brw/init
と/api/v2/auth/brw
のAPIコールを通じてPANを送信します。これは、ActiveServerは暗号化されたPANを保存しなくなったためです。