プロバイダパンチアウトを使用すると、アプリケーションはリモートアプリケーションにパンチアウトすることができ、リモートアプリケーションはクレジットカードの検証、シングルログイン、自己登録などのサービスをパンチアウトしたアプリケーションに提供できます。
18.1 メッセージフロー
18.2 ProviderSetupRequest ドキュメント
18.2.1 Header
18.2.2 Request
18.2.2.1 依頼
18.2.2.2 ProviderSetupRequest
18.2.2.3 OriginatorCookie
18.2.2.4 BrowserFormPost URL
18.2.2.5 SelectedService
18.2.2.6 Extrinsic
18.2.3 例
18.3 ProviderSetupResponse ドキュメント
18.3.1 Response
18.3.2 Status
18.3.3 ProviderSetupResponse
18.3.4 StartPage URL
18.3.5 例
18.4 ProviderDoneMessage ドキュメント
18.4.1 Header
18.4.2 Message
18.4.3 OriginatorCookie
18.4.4 ReturnData
18.4.5 ReturnValue
18.4.5.1 名称
18.4.6 例
18.1 メッセージフロー
cXML ドキュメントでは、プロバイダパンチアウト時に発信元およびプロバイダが通信を行うための方法が提供されます。これらの cXML ドキュメントは、ProviderSetupRequest、ProviderSetupResponse、および ProviderDoneMessage であり、発信元アプリケーションとサービスプロバイダ間の対話を処理するように特別に調整されています。これらのドキュメントで、提供されるサービス、セッション情報、発信元の返信先 URL、および状況や補足に関する情報などの詳細を伝達します。次の図に、プロバイダパンチアウトトランザクションにおける cXML メッセージのフローを示します。
A fig. to be placed here
図 16: プロバイダパンチアウトトランザクションのメッセージフロー
プロバイダパンチアウトを開始するには、発信元アプリケーションから ProviderSetupRequest ドキュメントをプロバイダに送信します。このドキュメントには、ユーザーとユーザー組織の認証情報、返信先 URL、およびプロバイダから要求されたサービスが含まれます。Request を承認するために、プロバイダは、ユーザーがリダイレクトする開始ページの URLを含む ProviderSetupResponse ドキュメントを発信元アプリケーションに送信します。ユーザーが処理を終了すると、プロバイダは、ユーザーがプロバイダサイトでセッションを完了した旨を示す ProviderDoneMessage ドキュメントを発信元アプリケーションに送信します。
18.2 ProviderSetupRequest ドキュメント
ProviderSetupRequest ドキュメントでは、プロバイダパンチアウトトランザクションが開始され、メンバ組織およびユーザーに関する情報、返信先 URL、要求されたサービスなどの複数の項目がプロバイダに伝達されます。このドキュメントには、Header 要素と Request 要素の 2 つのセクションがあります。Header には、ユーザーと要求側の組織に関する認証情報が含まれ、Request には、プロバイダパンチアウトを開始するために必要な情報を含む実際のProviderSetupRequest 要素が含まれます。
18.2.1 Header
ドキュメントの Header 部分には、アドレス指定と認証情報を定義します。次の例は、ProviderSetupRequest ドキュメントのヘッダー部分です。UserAgent 要素には、要求を行うアプリケーションとそのバージョンに対応する文字列であるプロバイダの電子署名が含まれます。たとえば、”www.triton.com” や “Procurement Application 7.0” です。From と To に定義する 2 つの組織は、共通の認証フォーマットと権限に合意している必要があります。
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 | <Header> <From> <!-- Triton Bank --> <Credential domain="NetworkId" type="marketplace"> <Identity>AN01000001709</Identity> </Credential> <Credential domain="triton.com"> <Identity>9999</Identity> </Credential> </From> <To> <!-- Marketplace --> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> </To> <Sender> <!-- Triton Bank --> <Credential domain="NetworkId"> <Identity>AN01000001709</Identity> <SharedSecret>abracadabra</SharedSecret> </Credential> <UserAgent>www.triton.com</UserAgent> </Sender> </Header> |
この Header 要素は、各メッセージタイプのヘッダーと類似しています。メッセージのヘッダーを記述する方法については、「Header [28 ページ]」を参照してください。
18.2.2 Request
このドキュメントの Request のセクションには ProviderSetupRequest が含まれており、この要素には発信元からのトランザクション情報が複数項目定義できます。これらは、発信元のセッションをトラッキングするためのクッキー、返信先URL、プロバイダから要求されたサービスのタイプ、およびサービスのタイプとプロバイダに付随するその他の情報などです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <Request> <ProviderSetupRequest> <OriginatorCookie>iTRk9bG49EJOGhJC</OriginatorCookie> <BrowserFormPost> <URL>https://www.triton.com/providerdone.asp</URL> </BrowserFormPost> <SelectedService>signin</SelectedService> <Extrinsic name="Brand">Triton</Extrinsic> <Extrinsic name="User"> <Identity>0001</Identity> </Extrinsic> <Extrinsic name="QueryString">req=R532&login=gtou&</Extrinsic> </ProviderSetupRequest> </Request> |
次の表では、プロバイダパンチアウトメッセージの Request セクションの構造に関するガイドラインを示しています。
要素 | インスタンス | 親要素 | 子要素 | 属性 |
---|---|---|---|---|
ProviderSetupRequest | 1 | Request | OriginatorCookie, BrowserFormPost, SelectedService, Extrinsic | なし |
OriginatorCookie | 1 | ProviderSetupRequest, ProviderDoneMessage | なし | なし |
BrowserFormPost | 0 または 1 | ProviderSetupRequest | URL | なし |
URL | 0 または 1 | BrowserFormPost, Followup | なし | なし |
SelectedService | 1 | ProviderSetupRequest | なし | なし |
Extrinsic | 任意 | ProviderSetupRequest | 可変 | name |
Header セクションの要素は、次のとおりです。
18.2.2.1 依頼
プロバイダパンチアウトトランザクション開始の要求を定義します。この場合は、ProviderSetupRequest 要素が含まれます。
18.2.2.2 ProviderSetupRequest
発信元アプリケーションからプロバイダにトランザクションを開始するよう求める Request です。
18.2.2.3 OriginatorCookie
OriginatorCookie は、要求者側のサイトでのユーザーセッションと結合して、後で ProviderDoneMessage とともに要求者に返されます。これによって、ユーザーが発信元アプリケーションの同セッションに戻ることができるワンタイムキーが実装されます。
18.2.2.4 BrowserFormPost URL
発信元アプリケーションは BrowserFormPost で所在地を示し、対話型セッションの最後にプロバイダが [完了] ボタンや Status などの情報を表示できるようにします。この要素を使用することにより、各セッションの最後にプロバイダから ProviderDoneMessage ドキュメントが送信されます。URL には、ユーザーがプロバイダのサイトでセッションを終了したときに戻る要求者側のサイトの所在地を定義します。
18.2.2.5 SelectedService
発信元アプリケーションによって要求され、プロバイダによって提供されるサービスを指定します。
18.2.2.6 Extrinsic
プロバイダパンチアウトの Extrinsic は、プロバイダが提供するサービスのタイプによって異なります。特定のProviderSetupRequest については、該当するマニュアルを参照してください。
注記
XML の内容、要素、およびそれらの属性は、エスケープされた cXML DTD または XML で定義されている必要があります。
18.2.3 例
一般的な ProviderSetupRequest ドキュメントの例として、Triton Bank というマーケットプレイスメンバからマーケットプレイスへの Request を示します。
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 | <cXML timestamp="2000-07-11T15:03:14-07:00" payloadID="963352994214--8721789825238347285@10.10.83.151”> <Header> <From> <Credential domain="NetworkId" type="marketplace"> <Identity>AN01000001709</Identity> </Credential> <Credential domain="triton.com"> <Identity>9999</Identity> </Credential> </From> <To> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> </To> <Sender> <Credential domain="NetworkId"> <Identity>AN01000001709</Identity> <SharedSecret>abracadabra</SharedSecret> </Credential> <UserAgent>www.triton.com</UserAgent> </Sender> </Header> <Request> <ProviderSetupRequest> <OriginatorCookie>iTRk9bG49EJOGhJC</OriginatorCookie> <BrowserFormPost> <URL>https://www.triton.com/providerdone.asp</URL> </BrowserFormPost> <SelectedService>signin</SelectedService> <Extrinsic name="Brand">Triton</Extrinsic> <Extrinsic name="User> <Identity>0001</Identity> </Extrinsic> <Extrinsic name="QueryString">req=R532&login=gtou&</Extrinsic> </ProviderSetupRequest> </Request> </cXML> |
18.3 ProviderSetupResponse ドキュメント
ProviderSetupResponse ドキュメントでは、Request の結果が発信元アプリケーションに通知されます。Request の結果には、状況および開始ページの情報が含まれます。
1 2 3 4 5 6 7 8 9 10 11 | <cXML payloadID="456789@marketplace.com" xml:lang="en-US" timestamp="2000-03-12T18:40:15-08:00"> <Response> <Status code="200" text="OK"/> <ProviderSetupResponse> <StartPage> <URL>http://sun@marketplace.com/enter?23423SDFSDF23</URL> </StartPage> </ProviderSetupResponse> </Response> </cXML> |
次の表は、プロバイダパンチアウトトランザクションの ProviderSetupResponse ドキュメントの構造に関するガイドラインを示しています。
要素 | インスタンス | 親要素 | 子要素 | 属性 |
---|---|---|---|---|
Response | 1 | cXML | Status, ProviderSetupResponse | なし |
Status | 1 | Response | なし | code、text |
ProviderSetupResponse | 1 | Response | StartPage | なし |
StartPage | 1 | ProviderSetupResponse | URL | なし |
URL | 1 | StartPage | なし | なし |
18.3.1 Response
Status および ProviderSetupResponse 要素で構成されます。
18.3.2 Status
プロバイダの Request の結果が成功か失敗かについての情報を定義します。Status 要素の内容には、要求者が必要とする任意のデータを含めたり、エラーの詳細を記述したりできます。Status には次の属性があります。
属性 | 説明 |
---|---|
code (必須) | 要求の状況コード。このコードは、HTTP 状況コードモデルに準拠します。たとえば、200 は要求が成功したことを示します。 |
text (必須) | 状況メッセージのテキスト。このテキストは、英語による標準的な文字列で構成され、ユーザーが判読できるログが提供されます。 |
xml:lang | プロバイダの Request で使用される言語を指定します。「xml:lang で指定する地域情報 [25 ページ]」を参照してください。 |
200/OK 状況コードには、データが存在しない場合があります。ただし、500/Internal Server Error 状況コードには、実際の XML 解析エラーまたはアプリケーションエラーを含めることを強く推奨します。このエラーは、一方向のデバッグや相互運用性テストに役立ちます。プロバイダは、状況コードが 200 番台でない限り、ProviderSetupResponse 要素を含めないでください。表示される状況コードの一覧については、「Status [32 ページ]」を参照してください。
18.3.3 ProviderSetupResponse
Request が成功した場合、ProviderSetupResponse 要素が応答ドキュメントに含まれます。この要素には、ユーザーがリダイレクトするべき場所を示す StartPage 要素とその子要素である URL 要素が含まれます。
18.3.4 StartPage URL
この要素内に URL 要素を定義し、そこで指定される URL はブラウザに引き渡され、ProviderSetupRequest 要素で要求されたプロバイダパンチアウトのブラウザセッションを開始します。この URL には、プロバイダ Web サイトでセッションのコンテキストに結合するための十分な状況情報が含まれている必要があります。
18.3.5 例
次の ProviderSetupResponse ドキュメントは、前の ProviderSetupRequest セクションのプロバイダから Triton Bank への返信に含まれます。
1 2 3 4 5 6 7 8 9 10 | <cXML payloadID="456789@marketplace.com" xml:lang="en-US" timestamp="2000-03-12T18:40:15-08:00"> <Response> <Status code="200" text="OK"/> <ProviderSetupResponse> <StartPage> <URL>http://sun@marketplace.com/enter?23423SDFSDF23</URL> </StartPage> </ProviderSetupResponse> </Response> </cXML> |
18.4 ProviderDoneMessage ドキュメント
ProviderDoneMessage ドキュメントには、発信元アプリケーションがプロバイダサイトで完了した操作について認識するべき、あらゆる情報が含まれています。
18.4.1 Header
ProviderDoneMessage Header セクションは Request および Response メッセージの Header セクションと類似していますが、このメッセージは Form Post を使用して送信されるため、Sender 要素に SharedSecret を含めないでください。UserAgent 要素には、プロバイダの電子署名を定義します。From と To に定義する 2 つの組織は、共通の認証フォーマットと権限に合意している必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <Header> <From> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> </From> <To> <Credential domain="NetworkId"> <Identity>AN01000001709</Identity> </Credential> </To> <Sender> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> <UserAgent>Purchase</UserAgent> </Sender> </Header> |
この Header 要素は、各メッセージタイプのヘッダーと類似しています。メッセージのヘッダーを記述する方法については、「Header [28 ページ]」を参照してください。
18.4.2 Message
ドキュメントの Message セクションに、ProviderDoneMessage 要素を含めます。この要素には、発信元アプリケーションによって要求された情報と、発信元アプリケーションのサイトでユーザーがセッションに戻るための情報を定義します。
1 2 3 4 5 6 7 8 9 10 | <Message> <Status code="200" text="OK"/> <ProviderDoneMessage> <OriginatorCookie>c546794949</OriginatorCookie> <ReturnData name="method"> <ReturnValue>Triton.transact</ReturnValue> <Name xml:lang="en-US">Triton OM transact</Name> </ReturnData> </ProviderDoneMessage> </Message> |
次の表は、ProviderDoneMessage ドキュメントの Message セクションの構造に関するガイドラインを示しています。
要素 | インスタンス | 親要素 | 子要素 | 属性 |
---|---|---|---|---|
Message | 1 | なし | Status, ProviderDoneMessage | なし |
Status | 1 | Message | なし | text, code |
ProviderDoneMessage | 1 | Message | OriginatorCookie, ReturnData, ReturnValue, Name | なし |
OriginatorCookie | 1 | ProviderDoneMessage | なし | なし |
ReturnData | 任意 | ProviderDoneMessage | ReturnValue,Name | name |
ReturnValue | 1 | ProviderSetupRequest | なし | なし |
Name | 1 | BrowserFormPost, Followup | なし | xml:lang |
Message セクションの要素は、次のとおりです。
18.4.3 OriginatorCookie
元の ProviderSetupRequest ドキュメントで引き渡された要素と同じ要素です。要求側のアプリケーションが ProviderDoneMessage ドキュメントと以前の ProviderSetupRequest ドキュメントを照合して、ユーザーを正しいセッションに戻すために、この要素はここで返される必要があります。
18.4.4 ReturnData
プロバイダのサイトで完了した操作について、発信元が認識するべき、あらゆる情報を定義します。name 属性で、要求者への ReturnData の種類 (ドメイン) が識別されます。
18.4.5 ReturnValue
発信元アプリケーションによって使用される値です。この値は、プロバイダが提供するサービスのタイプによって異なります。
18.4.5.1 名称
返されるデータの識別子です。ReturnData 要素の内容に関する説明を提供します。値を表示する場合、Name と ReturnValue のセマンティクスは似ていますが、発信元アプリケーションでの用途は異なることに注意してください。
18.4.6 例
プロバイダは、次のような ProviderDoneMessage ドキュメントを送信します。これにより、発信元アプリケーション Triton Bank に、ユーザーがプロバイダサイトでセッションを終了したことが通知されます。
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 | <cXML timestamp="2000-07-11T15:13:28-07:00" payloadID="963353608827--3642656259900210849@10.10.83.151"> <Header> <From> <!-- marketplace --> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> </From> <To> <!-- Triton bank --> <Credential domain="NetworkId"> <Identity>AN01000001709</Identity> </Credential> </To> <Sender> <!-- marketplace --> <Credential domain="NetworkId"> <Identity>AN01000000003</Identity> </Credential> <UserAgent>Purchase</UserAgent> </Sender> </Header> <Message> <Status code="200" text="OK"/> <ProviderDoneMessage> <OriginatorCookie>c546794949</OriginatorCookie> <ReturnData name="method"> <ReturnValue>Triton.transact</ReturnValue> <Name xml:lang="en-US">Triton OM transact</Name> </ReturnData> </ProviderDoneMessage> </Message> </cXML> |