認証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オプション・フィールドはcardHolderInfoJSONオブジェクトに追加されました。請求先住所はお届け先住所と同じの場合は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オプション・フィールドはcardHolderInfoJSONオブジェクトに追加されました。請求先住所はお届け先住所と同じの場合は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を保存しなくなったためです。