ヘッダーをスキップ

Oracle Paymentsインプリメンテーション・ガイド
リリース12
E06000-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

Oracle Paymentsと外部支払システムの併用

支払システム統合の概要

この章では、Oracle Paymentsを外部支払システムに統合する方法について説明します。

Oracle Paymentsのアーキテクチャには、インバウンド(資金取得)とアウトバウンド(支出)の両方の取引処理について、第三者支払システムとの統合が考慮されています。

資金取得フローでは、外部支払システムは、2種類(ゲートウェイまたはプロセッサ)のいずれかです。ゲートウェイ・モデルの支払システムでは、すべての取引がオンラインで、支払システムとのリアルタイム通信が関連しています。プロセッサ・モデルの支払システムでは、承認用にリアルタイム通信が、精算処理用にバッチ操作がサポートされています。

支出フローでは、リアルタイム取引処理の概念はありません。支払処理はバッチ・モードでのみ実行されます(通常、支払ファイルは支払システムにFTPで送信されます)。

支払システム統合の構成要素

Oracle Paymentsとカスタム支払システムとの統合を実装する場合は、統合の構成要素をいくつか開発する必要があります。統合の構成要素は、支払処理サイクルの様々な段階でOracle Paymentsによって起動される基本的な要素です。

実装される構成要素のリストは、支払フローのタイプ(資金取得または支出)、支払システムのタイプ(ゲートウェイまたはプロセッサ)、支払手段のタイプ(クレジット・カード、デビット・カードまたは銀行口座)など、様々な要因によって異なります。

次の表に、カスタム支払システムとインタフェースするために実装される様々な統合の構成要素タイプを示します。カスタム統合では、リストされている統合構成要素のサブセットのみが必要になる場合があります。

統合ポイント・タイプの構成要素タイプ
統合の構成要素説明
フォーマット支払システム固有のメッセージまたは支払ファイルの構成に使用します。
通常、プロセッサ・モデルの支払システムでは、2種類のフォーマット(オンライン取引用とバッチ取引用)をサポートします。

注意: 通常、ゲートウェイ・モデルの支払システムでは、オンライン・フォーマットのみをサポートします。

フォーマット検証支払システム固有の検証セットを格納します。
伝送関数支払システムとの通信方法を定義します。
承認パーサー取引の種類(オンラインまたはバッチ)に関係なく、要求メッセージに対する支払システムからの応答メッセージについて、Oracle Paymentsでの処理方法を定義します。
支払システム支払システムの属性を定義します。この属性は、設定ユーザー・インタフェースで提供します。
プロセス・プロファイル支払システムの属性を定義します。この属性は、Oracle Payments内での支払処理動作の制御に使用されます。

注意: このプロセス・プロファイルは、資金取得用の資金取得プロセス・プロファイル、または支出用の支払プロセス・プロファイルです。

注意: 統合の構成要素タイプの一部はJavaで開発されます。

Oracle Paymentsでは、インバウンド(資金取得)とアウトバウンド(支出)の両方のフローをサポートしています。したがって、支払システム統合の実装方法では、資金取得の場合と資金支出の場合を個別の項で説明します。次の項では、カスタム支払システム統合を達成するために実行する必要があるタスクについて詳細に説明します。

資金取得と資金支出については、「Oracle Payments設定」ページを使用して、基本的な設定をいくつか実行する必要があります。これらの基本的な設定は、資金取得と資金取得の両方で類似しており、エンティティ(支払システム、支払システム・アカウント、プロセス・プロファイルなど)の作成に関連しています。

統合の残りの部分は、統合の構成要素(フォーマット、伝送、検証、受信確認など)の作成に関連しています。これらの構成要素の作成は、支払システムの特性によって異なるため、次の項で詳細を説明します。

資金取得用のカスタム支払システム統合の開発

カスタム支払システムとの統合で実行する必要があるタスクのリストは、次の要因によって異なります。

カスタム支払システムとの統合の実装ガイドラインには、次の事項が含まれています。

カスタム統合の実行に必要なタスクを判断するには、次のフローチャートを参照してください。

資金取得支払システム用の統合タスク・リスト

本文の説明内容に関するイメージ

次の表に、資金取得用支払システムを統合するために完了する必要があるタスクを示します。

カスタム支払システムを統合するための基本設定タスク
タスク必須説明
支払システムの定義Yes新規支払システムを設定します。
支払システムの設定の詳細は、「ステップ8. 支払システムの設定」を参照してください。
支払システム・アカウント・オプションの定義No支払システムのすべてのアカウントに対してオプションを設定します。
資金取得プロセス・プロファイルの作成Yes支払手段(クレジット・カード、デビット・カードまたは銀行口座)に固有の資金取得プロセス・プロファイルを定義します。
資金取得プロセス・プロファイルは、すべての資金取得操作の動作を制御します。
支払システムの設定の詳細は、「ステップ21. 資金取得プロセス・プロファイルの設定」を参照してください。
取引検証の作成No支払システム固有の検証を実装する場合にのみ必要です。
バッチ検証の作成Noゲートウェイ・モデルの支払システムには不要です。
プロセッサ・モデルの支払システムについては、支払システム固有の検証を実装する場合にのみ必要です。
検証割当のシードNo支払システム固有の検証を実装する場合にのみ必要です。
オンライン取引処理インフラストラクチャのタスク
タスク必須説明
オンライン承認/検証のフォーマット・テンプレートの開発No支払システム固有の承引フォーマットを定義し、XMLパブリッシャ・テンプレートを開発します。
クレジット・カードとデビット・カードの処理では、オンライン承認フォーマットを実装する必要があります。
銀行口座取引処理では、オンライン検証フォーマットの実装は支払システムに依存します。
資金取得抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金取得抽出の詳細は、「資金取得抽出」を参照してください。
オンライン承認/検証のフォーマット・テンプレートの設定No新規フォーマットのシステム・データ属性を定義します。新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
フォーマットの設定の詳細は、「ステップ4. フォーマットの設定」を参照してください。
オンライン承認/検証の伝送関数の開発No伝送関数プロトコルを実装します。
オンライン承認/検証の伝送プロトコルの設定No伝送プロトコルを定義し、その伝送プロトコルを実装する伝送関数のコードポイントに関連付けます。プロトコル・パラメータも定義します。
伝送構成の設定の詳細は、「ステップ6. 伝送構成の設定」を参照してください。
オンライン承認/検証の受信確認の開発No承認パーサーを実装します。
オンライン承認/検証の承認パーサーの設定Noパーサーのシステム・データ属性を定義します。
精算のフォーマット・テンプレートの開発Noゲートウェイ・モデルの支払システムの場合、フォーマットは承認のフォーマット・テンプレートと同じにできます。
このタスクはプロセッサには関係ありません。
資金取得抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金取得抽出の詳細は、「資金取得抽出」を参照してください。
精算のフォーマット・テンプレートの設定Noこのタスクはプロセッサには関係ありません。
新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
フォーマットの設定の詳細は、「ステップ4. フォーマットの設定」を参照してください。
精算の伝送関数の開発Noゲートウェイ・モデルの支払システムの場合、伝送関数は承認の伝送関数と同じにできます。
このタスクはプロセッサには関係ありません。
精算の伝送プロトコルの設定Noこのタスクはプロセッサには関係ありません。
伝送構成の設定の詳細は、「ステップ6. 伝送構成の設定」を参照してください。
精算の承認パーサーの開発Noゲートウェイ・モデルの支払システムの場合、承認パーサーは承認のパーサーと同じにできます。
このタスクはプロセッサには関係ありません。
精算問合せのフォーマット・テンプレートの開発Noゲートウェイ・モデルの支払システムの場合、問合せのサポートはオプションです。
大半のゲートウェイ・モデルの支払システムの場合、受信確認要求メッセージは定義されません。
このタスクはプロセッサには関係ありません。
資金取得抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金取得抽出の詳細は、「資金取得抽出」を参照してください。
精算問合せのフォーマット・テンプレートの設定Noゲートウェイ・モデルの支払システムの場合、このタスクはオプションです。
新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
このタスクはプロセッサには関係ありません。
精算問合せの伝送関数の開発Noゲートウェイ・モデルの支払システムの場合、このタスクはオプションです。
このタスクはプロセッサには関係ありません。
精算問合せの伝送プロトコルの設定Noゲートウェイ・モデルの支払システムの場合、このタスクはオプションです。
このタスクはプロセッサには関係ありません。
精算問合せの承認パーサーの開発Noゲートウェイ・モデルの支払システムの場合、このタスクはオプションです。
このタスクはプロセッサには関係ありません。

次の注意は、後述するバッチ処理インフラストラクチャ・タスク表に関する注意です。

注意: バッチ処理タスクはゲートウェイには関係ありません。

バッチ処理インフラストラクチャ・タスク
タスク必須説明
精算のフォーマット・テンプレートの開発Yes支払システム固有の精算のフォーマット・メッセージを定義します。
資金取得抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金取得抽出の詳細は、「資金取得抽出」を参照してください。
精算のフォーマット・テンプレートの設定Yes新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
フォーマットの設定の詳細は、「ステップ4. フォーマットの設定」を参照してください。
精算の伝送関数の開発Yes精算について支払システムと通信する伝送関数を実装します。
精算の伝送プロトコルの設定Yes伝送プロトコルを定義し、その伝送プロトコルを実装する伝送関数のコードポイントに関連付けます。プロトコル・パラメータも定義します。
伝送構成の設定の詳細は、「ステップ6. 伝送構成の設定」を参照してください。
精算の承認パーサーの開発Yes精算の承認パーサーを実装します。
精算の承認パーサーの設定Yes承認パーサーのシステム・データ属性を定義します。

次の注意は、後述するバッチ問合せインフラストラクチャ・タスク表に関する注意です。

注意: バッチ問合せタスクはゲートウェイには関係ありません。

バッチ問合せインフラストラクチャ・タスク
タスク必須説明
精算問合せのフォーマット・テンプレートの開発No支払システム固有の問合せのフォーマット・メッセージを定義します。
資金取得抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金取得抽出の詳細は、「資金取得抽出」を参照してください。
精算問合せのフォーマット・テンプレートの設定No新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
フォーマットの設定の詳細は、「ステップ4. フォーマットの設定」を参照してください。
精算問合せの伝送関数の開発No問合せについて支払システムと通信する伝送関数を実装します。
精算問合せの伝送プロトコルの設定No伝送プロトコルを定義し、その伝送プロトコルを実装する伝送関数のコードポイントに関連付けます。プロトコル・パラメータも定義します。
伝送構成の設定の詳細は、「ステップ6. 伝送構成の設定」を参照してください。
精算問合せの承認パーサーの開発No問合せの承認パーサーを実装します。
精算問合せの承認パーサーの設定No承認パーサーのシステム・データ属性を定義します。

資金支出用のカスタム支払システム統合の開発

資金取得とは異なり、資金支出統合は常にオフラインで支払ファイルを使用します。資金支出フローには、オンライン/リアルタイム取引処理の概念がありません。

資金支出フローでは、通常、実装に支払指図(支払バッチとも呼ばれる)からのデータを使用した支払ファイルの作成が関連することになります。支払ファイルは支払システム固有のフォーマットで作成され、支払システムに転送(通常はFTP経由で)されます。

支払システムが問合せ機能をサポートしている場合は、問合せメッセージと承認パーサーの実装が必要になります。

次のフローチャートを使用して、カスタム統合の実行に必要なタスクを判断してください。

資金支出支払システム用の統合タスク・リスト

本文の説明内容に関するイメージ

次の基本設定タスクの表に、カスタム支払システムを統合するためのタスクを示します。

基本設定タスク
タスク必須説明
支払システムの定義Yes新規支払システムを設定します。
支払システム・アカウント・オプションの定義No支払システムのすべてのアカウントに対してオプションを設定します。
支払プロセス・プロファイルの作成Yes支払プロセス・プロファイルには、支払の作成方法と支出方法を定義します。
このプロファイルは、資金支出操作の動作を制御します。
文書検証の作成No買掛/未払金文書を検証するためのビジネス・ルールを実装します。
当方銀行口座、文書による支払金額、受取人銀行口座など、文書の個々の属性を検証できます。
支払検証の作成No支払を検証するためのビジネス・ルールを実装します。
支払金額、支払通貨など、支払の個々の属性を検証できます。
支払指図検証の作成No支払指図を検証するためのビジネス・ルールを実装します。
支払指図内の取引件数を検証できます。
検証割当のシードNo検証セットを支払方法と支払フォーマットにリンクします。

次の注意は、後述するバッチ処理インフラストラクチャ・タスク表に関する注意です。

注意: バッチ処理タスクはゲートウェイには関係ありません。

バッチ処理インフラストラクチャ・タスク
タスク必須説明
精算のフォーマット・テンプレートの開発Yes支払システム固有の精算のフォーマット・メッセージを定義します。
資金支出抽出の要素を使用してXMLパブリッシャ・テンプレートを作成します。
資金支出抽出の詳細は、「抽出構造の概要」を参照してください。
精算のフォーマット・テンプレートの設定Yes新規に作成したXMLパブリッシャ・テンプレートをフォーマットにリンクします。
フォーマットの設定の詳細は、「ステップ4. フォーマットの設定」を参照してください。
精算の伝送関数の開発No精算について支払システムと通信する伝送関数を実装します。
精算の伝送プロトコルの構成No伝送プロトコルを定義し、その伝送プロトコルを実装する伝送関数のコードポイントに関連付けます。プロトコル・パラメータも定義します。
伝送構成の設定の詳細は、「ステップ 6. 伝送構成の設定」を参照してください。
精算の承認パーサーの開発Yes精算の承認パーサーを実装します。
精算の承認パーサーの設定Yes承認パーサーのシステム・データ属性を定義します。

支払システムの定義

支払システム統合の最初のタスクは、支払システムを定義することです。この定義では、支払システムの属性と、ユーザーが設定する支払システム・アカウントに定義されるアカウント・オプション(ある場合)の両方を指定する必要があります。

支払システムの属性

次の表に、支払システムの主な属性を示します。

支払システムの主な属性
属性説明制約
支払システム支払システムの名称。必須です。
サポートされる支払手段支払システムでサポートされる手段タイプ。次の手段タイプのいずれかであることが必要です。
  • クレジット・カード



  • レベルII/レベルIIIの購買カード



  • 暗証番号不要のデビット・カード



  • 銀行口座

タイプ支払システムのモデル・タイプ。プロセッサ支払システム・モデルとゲートウェイ支払システム・モデルの相違については、「ゲートウェイ・モデルおよびプロセッサ・モデルの支払システムについて」を参照してください。プロセッサ・モデルまたはゲートウェイ・モデルの支払システムであることが必要です。
接尾辞支払システムに対する3文字の一意の識別子。Oracle Paymentsにシードされている次の予約接尾辞は使用できません。
  • lop(サンプル・ゲートウェイ・システム)



  • efs(Concord EFSnet)



  • ptk(Paymentech)



  • fdb(FDC North)

サーブレット・ベースURL支払システム・サーブレットのURL。http://<host>:<post>/<servlet zone>形式のURLであることが必要です。

これらの属性はすべて「支払システムの作成」または「支払システムの更新」ページで設定できます。

関連項目

支払システムの設定の情報は、「ステップ6. 支払システムの設定」を参照してください。

アカウント・オプション

アカウント・オプションは、支払システムがその支払システムのユーザー・アカウントに対して定義する属性です。最初に、「支払システム」ページでパラメータを定義する必要があります。次に、「支払システム・アカウント」ページで支払システム・アカウントを作成する際に実際の値を入力します。アカウント・オプションは、支払指図ファイルの生成に使用され、資金取得抽出に表示されます。

注意: カスタム支払システム統合を実装するには、値を確実に文書化する必要があります。

関連項目

支払システム・アカウントを使用可能にする方法は、「支払システム・アカウントの有効化」を参照してください。

フォーマット

支払システムでは、取引を処理する際に異なるフォーマットが使用されます。たとえば、承認にはあるフォーマットを、精算バッチでは別のフォーマットを使用する場合があります。Oracle Paymentsでフォーマットを作成するには、その前に、対応するOracle XML Publisherのテンプレート・エンティティを使用可能にする必要があります。

フォーマット・テンプレートの開発

次の表に、値がOracle Paymentsによって指定されているOracle XML Publisherのテンプレート属性を示します。

値がOracle Paymentsによって指定されているOracle XML Publisherのテンプレート属性
属性説明制約
データ定義テンプレートのデータ定義によって、そのテンプレートの適用先データの構造が決まります。資金取得の場合は、常にIBY_FNDCPT_INSTRUCTION_1_0です。
資金支出の場合は、常にIBY_FD_INSTRUCTION_1_0です。

カスタム支払システム統合を実装するためには、XMLパブリッシャ用に支払指図テンプレートを開発する必要があります。この開発には、eText(RTF)やXSLなど、サポートされているXMLパブリッシャ・テンプレート・タイプのいずれかを使用します。次に、XMLパブリッシャ・テンプレートをシードし、シードしたテンプレートにフォーマットをリンクする必要があります。

フォーマット・テンプレートの設定

Oracle XML Publisherのテンプレートを作成した後は、Oracle Paymentsの「書式の作成」ページを使用して、対応するフォーマット・エンティティを作成する必要があります。

抽出ジェネレータ

抽出ジェネレータは、支払ファイル抽出文書(取引に関連する全データのスーパーセット)を作成します。フォーマット・テンプレートは、最終的な支払ファイルを作成するための抽出に適用されます。

支払ファイル抽出は、構造がXMLスキーマに準拠しているXML文書です。資金取得XMLスキーマは、$IBY_TOP/patch115/publisher/defs/IBY_FCI_1_0.xsdファイルに定義されています。資金支出XMLスキーマは、$IBY_TOP/patch115/publisher/defs/IBY_PPIOUT_1_0.xsdファイルに定義されています。

資金取得XMLスキーマは、すべての資金取得手段タイプ(クレジット・カード、銀行口座、暗証番号不要のデビット・カードなど)およびすべての資金取得取引操作タイプ(承認、オンライン精算、精算バッチなど)について取引をサポートしています。

資金支出XMLスキーマには、支払指図情報、支払プロセス・プロファイル、支払フォーマットおよび構成支払も含めて、すべての支出関連支払情報が含まれています。

カスタム支払システム統合を実装するには、支払指図ファイル・テンプレートを作成する上で、抽出の構造を完全に理解する必要があります。

抽出フォーマッタ

抽出フォーマッタは、抽出ジェネレータによって作成された抽出文書を取り込み、フォーマット・テンプレートに適用して最終的な支払ファイルを作成します。Oracle Paymentsでは、Oracle E-Business SuiteアプリケーションのOracle XML Publisher(XDO)をそのフォーマット・エンジンとして使用します。

カスタム支払システム統合を実装するには、支払システムがサポートするすべての取引操作タイプに対してテンプレートを作成する必要があります。支払システムの統合モデルが、フォーマットされた支払ファイル配信のいずれにも準拠していない場合は、未変更の抽出文書を作成する通常のフォーマット・テンプレートを出力として使用し、HTTPを使用して抽出をサーブレットに配信し、次に、サーブレット・マップの支払システム固有の支払要求メカニズムに文書を抽出できます。通常のテンプレートは、Oracle Paymentsによって、テンプレート・コードIBY_IDENTITYですでにシードされています。IBY_IDENTITYは、フォーマットしないで現状のままの抽出を戻す特別なテンプレートです。

伝送関数

伝送関数には、支払ファイルを支払システムに配信し、特定の伝送プロトコルを実装する役割があります。

カスタム支払システム統合を実装するには、支払システムと通信するために各伝送プロトコルに対して伝送関数のコードポイントを作成する必要があります。

支払システム仕様の構成要素の1つは、支払ファイルを支払システムに配信する際に使用する伝送プロトコルです。伝送プロトコルには、通信の試行時に必要なシステム・データを定義する伝送パラメータが関連付けられています。また、伝送プロトコルには伝送関数のコードポイントが定義されています。このコードポイントは、プロトコルを実装する自己完結型のコードで、oracle.apps.iby.net.TransmitFunctionインタフェースに準拠しています。

伝送関数の開発

伝送プロトコルはJavaクラスを介して実装され、このクラスがoracle.apps.iby.net.TransmitFunctionインタフェースを実装する必要があります。インタフェースを実装するには、このクラスに伝送関数を定義する必要があります。

次の表に、この関数のシグネチャを示します。

引数のタイプ説明
paramsjava.util.Dictionary伝送構成を表すプロトコル・パラメータの名称と値のマップ。名称はプロトコルのパラメータ名定義から取得されます。
payloadiava.io.InputStream配信されるメッセージ・ペイロード。
<return>java.io.InputStream伝送に対する応答(NULLの場合もあります)。

伝送関数によるプロトコルの実装では、その関数が、次のようなoracle.apps.iby.exception.PSException型の例外によって発生するシステム例外を処理する必要があります。

throw new PSException(PSException.COMMUNICATION_ERROR);

必要な伝送プロトコル・パラメータが設定されていない場合は、同じクラス・タイプを使用して次のような例外がスローされます。

throw new PSException(PSException.CODEPOINT_ARG_ERR,
PSException.CODEPOINT_ARG_ERR_TOKEN_ARG,
      <parameter code>);

伝送関数はJavaリフレクションAPIを介して起動されるため、その伝送関数によって生成された例外を保持するには、特別な処理が必要です。この処理がないと、この関数に障害がある場合、Oracle Paymentsエンジンでは、一般的なjava.lang.reflect.InvocationTargetExceptionのみが参照されます。エンジンが参照できるように当初の例外を保持するには、次の関数をコールする必要があります。

oracle.apps.iby.engine.CodePoint.storeException()

伝送プロトコルの設定

ユーザー・インタフェースで支払システムの支払システム・アカウントを構成すると、その支払システムのシステム・プロファイルに定義されているすべての伝送プロトコル・パラメータが自動的に表示されます。

次の表に、伝送プロトコルの属性を示します。

伝送プロトコルの属性
属性名説明制約
TRANSMIT_PROTOCOL_CODEプロトコルの一意の識別子。一意で、30文字以内にする必要があります。
TRANSMIT_PROTOCOL_NAMEプロトコルの摘要。 
TRANSMIT_CODE_LANGUAGEこのプロトコルに対して伝送関数のコードポイントを実装する際の言語。JAVAであることが必要です。
TRANSMIT_CODE_PACKAGEコードポイント・パッケージ。伝送関数のコードポイントの完全修飾されたクラス名です。完全修飾されたクラス名であることが必要です。
TRANSMIT_CODE_ENTRY_POINTコードポイントの入力ポイント。コールされるプログラミング言語の関数名。名称はtransmitであることが必要です。

次の表に、伝送プロトコルのパラメータの属性(プロトコルのサブエンティティ)を示します。

伝送プロトコルのパラメータの属性
属性名説明制約
TRANSMIT_PARAMETER_CODEパラメータの識別子。プロトコルに定義されているすべてのパラメータの中で一意であり、30文字以内にする必要があります。
TRANSMIT_PARAMETER_TYPEパラメータのデータ型。次の値がサポート対象です。
  • VARCHAR2



  • NUMBER

MANDATORY_FLAGパラメータが必須かどうかを示します。伝送構成時にユーザー・インタフェースの検証に使用されます。次の値を使用できます。
  • Y(Yes)



  • N(No)

TRANSMIT_PROTOCOL_CODEこのパラメータが属するプロトコル。 
TRANSMIT_PARAMETER_NAMEパラメータの名称。 

伝送プロトコルとそのパラメータは、それらを挿入するSQLスクリプトを作成することで、Oracle Paymentsにシードできます。

注意: 変換可能なプロトコル属性TRANSMIT_PROTOCOL_NAMEを除くすべての属性は、IBY_TRANSMIT_PROTOCOLS_B表に挿入してください。変換可能な属性TRANSMIT_PROTOCOL_NAMEはIBY_TRANSMIT_PROTOCOLS_TLに挿入し、プロシージャIBY_PP_MLSUTL_PVT.TRANS_PROT_ADD_LANGUAGEをコールしてください。

変換可能なプロトコル・パラメータ属性TRANSMIT_PARAMETER_NAMEを除くすべての属性は、IBY_TRANSMIT_PARAMETERS_B表に挿入してください。変換可能な属性TRANSMIT_PARAMETER_NAMEはIBY_TRANSMIT_PARAMETERS_TLに挿入し、プロシージャIBY_PP_MLSUTL_PVT. TRANS_PARAM_ADD_LANGUAGEをコールしてください。

承認パーサー

支払システムは、資金取得指図の配信を受信すると、受信確認を送信します。承認パーサーの役割は、Oracle Paymentsで理解できるように応答を解析することです。

カスタム支払システム統合を実装するには、すべての伝送関数に対して承認パーサーを作成する必要があります。支払システムでプロトコルの受信確認をサポートしていない場合でも、デフォルト値または一般的な値を戻すデフォルトの承認パーサーを作成する必要があります。

承認パーサーは、支払システムからの応答をOracle Paymentsエンジンで処理可能な形式に解析する自己完結型のコードポイントです。

承認パーサーのシード

次の表に、承認パーサーをシードする際の属性を示します。

承認パーサーをシードする際の属性
属性名説明制約
ACK_READER_CODEパーサーの一意の識別子。一意で、30文字以内にする必要があります。
READER_CODE_LANGUAGEこのパーサーに対して伝送関数のコードポイントを実装する際の言語。Javaであることが必要です。
READER_CODE_PACKAGEコードポイント・パッケージ。承認パーサーのコードポイントの完全修飾されたクラス名です。完全修飾されたクラス名であることが必要です。
READER_CODE_ENTRY_POINTコードポイントの入力ポイント。コールされるプログラミング言語の関数名。メソッド名はparseであることが必要です。

承認パーサーの属性を定義した後は、それらをIBY_ACK_READERS表に挿入するSQLスクリプトを作成することで、定義した属性をOracle Paymentsにシードできます。

カスタム支払システム統合を実装するには、承認パーサーを実装するJavaクラスをユーザーに配布し、Oracle Paymentsエンジンをホスティングするアプリケーション・サーバーのCLASSPATHに配置する必要があります。

承認パーサーの開発

すべての承認パーサーは、oracle.apps.iby.bep.ACKParserインタフェースをサブクラス化する必要があります。このインタフェースには、次のインタフェースを備えた単一の関数parseがあります。

引数名説明
ackFilejava.io.InputStream受信確認メッセージまたはファイル。
hintsjava.util.Dictionary受信確認の対象となる取引に関する情報を提供する名称と値の集合。たとえば、使用される手段タイプやクレジット・カード・イシュアなどの情報です。
<return>bep.ACKこの受信確認に対応するオブジェクト。

承認パーサーに対するhints引数は、応答の作成対象となった取引に関する情報を提供する名称/値ペアの集合です。

次の表に、この集合で使用可能な値を示します。

名称/値ペアの集合で使用可能な値
ヒント・キー説明
ACKParser.CARD_ISSUER_HINTカード・イシュア(カード・イシュアによって受信確認の応答の構造が異なるため)。カード・イシュア・コードは次のいずれかの値です。
  • AMEX



  • DINERS



  • DISCOVER



  • ENROUTE



  • JCB



  • MASTERCARD



  • UNKNOWN



  • VISA

ACKParser.INSTR_TYPE_HINT 取引手段タイプ。次のいずれかの値です。
  • BANKACCOUNT



  • CREDITCARD



  • PINLESSDEBITCARD



  • PURCHASECARD

ACKParser.TRXN_TYPE_ID_HINT取引のタイプ。次のいずれかの値です。
  • 2(承認のみ)



  • 3(承認取得)



  • 5(差戻し)



  • 8/9(取得/精算)



  • 11(クレジット)



    値のデータ・ソースはIBY_TRXN_SUMMARIES_ALL.TRXNTYPEIDです。

注意: hintsは、特定の取引タイプについてのみ移入されます。たとえば、バッチ・クローズ操作ではhintsは移入されません。

承認パーサーの戻り結果は、クラスoracle.apps.iby.bep.ACKParserから導出されたオブジェクトです。このクラスは、支払システム応答からマップされた様々な応答フィールドの保持を目的とする単一のレコードです。

ACK

抽象クラスoracle.apps.iby.bep.ACKは、すべてのサブクラスが継承する最も基本的な受信確認属性を定義します。次の表に、このクラスと派生サブクラスすべての構造を示します。

注意: 特定のクラスにリストされている各属性には、属性にアクセスするためのget<AttributeName>関数とset<AttributeName>関数が暗黙的に存在します。get<AttributeName>は属性の型のオブジェクトを戻し、set<AttributeName>は属性の型のオブジェクトを単一の引数として取得します。

属性名説明
BEPErrorCodeString支払システムのエラー・コード。
BEPErrorMessageString支払システムのエラー・メッセージ。

TrxnACK

抽象クラスabstract class oracle.apps.iby.bep.TrxnACKは、取引の受信確認の一般的な属性を定義します。このクラスはoracle.apps.iby.bep.ACKのサブクラスであるため、その属性も継承します。

属性名説明
OrderIdStringこの取引のオーダー識別子。
TrxnStatusint取引のステータス。次の値を使用できます。
  • 0(成功)



  • 1(通信エラー)



  • 2(オーダーIDの重複)



  • 3(バッチIDの重複)



  • 4(必須フィールドの欠落)



  • 5(支払システム・エラー)



  • 8(サポートされない操作)



  • 11(保留中)



  • 20(拒否)

TrxnDatejava.util.Date取引の完了日付。
TrxnReqTypeString取引要求タイプ。次の値を使用できます。
  • ORAPMTCAPTURE(取得/精算)



  • ORAPMTCLOSEBATCH(バッチ・クローズ)



  • ORAPMTCREDIT(クレジット)



  • ORAPMTREQ(承認/承認取得/検証/デビット)



  • ORAPMTRETURN(差戻し)



  • ORAPMTVOID(無効化)

ExtensiblitySetoracle.apps.iby.util.NameValuePair[ ]拡張性に関する名称/値ペアの集合。

属性ExtensiblitySetはoracle.apps.iby.util.NameValuePairオブジェクトの配列として型指定されます。この属性は、適切な受信確認オブジェクトのいずれの属性にも対応しない重要なデータが、支払システムの受信確認に含まれている場合は、パーサーによって随意的に設定されることがあります。ExtensiblitySet属性で戻された名称の値は、IBY_TRXN_EXTENSIBILITY表に格納され、OriginalCCTransactionまたはOriginalDCTransaction要素の下に表示される一連のExtendサブ要素を使用して、後続取引の抽出文書に挿入されます。

次の表に、oracle.apps.iby.util.NameValuePairクラスの属性を示します。

属性名説明
NameString名称/キー。
ValueString値。

CreditCardTrxnACK

クラスoracle.apps.iby.bep.CreditCardTrxnACKは、単一のクレジット・カード取引に関する受信確認情報を保持します。次の表に属性を示します(親クラスoracle.apps.iby.bep.TrxnACKから継承される属性は記載していません)。

属性名説明
AuthCodeString承認コード。
AVSResponseString支払システムからの所在地検証システム応答。
SecurityCodeCheckStringクレジット・カード・セキュリティ・コード(CVV2)チェックに対する支払システム応答。
RefCodeString参照コード。

BankAccountTrxnACK

クラスoracle.apps.iby.bep.BankAccountTrxnACKは、単一の預金口座取引に関する受信確認情報を保持します。次の表に属性を示します(oracle.apps.iby.bep.TrxnACKから継承される属性も記載されています)。

属性名説明
RefCodeString銀行参照コード。
TrxnAmountoracle.apps.iby.ecapp.Price実際の転送金額。
PostDatejava.util.Date資金の転記予定日。
FundsCommittedBoolean資金が確定済かどうかを示します。

BatchACK

抽象クラスoracle.apps.iby.bep.BatchACKは、バッチの受信確認について一般的な属性を定義します。次の表に属性を示します(クラスoracle.apps.iby.bep.ACKから継承される属性も記載されています)。

属性名説明
BatchIdStringバッチの識別子。
BatchStatusintバッチのステータス。次の値を使用できます。
  • 0(成功)



  • 1(通信エラー)



  • 3(バッチIDの重複)



  • 5(支払システム・エラー)



  • 11(保留中)

BatchDatejava.util.Dateバッチの発行日。
TrxnACKsbep.TrxnACK[ ]このバッチの個々の取引に対する受信確認の集合。
TrxnACKTypeString取引の受信確認を示す列挙値。次の値があります。
  • BatchACK.TRXN_ACK_ALL(バッチ内のすべての取引に受信確認がある)



  • BatchACK.TRXN_ACK_POSITIVE(受信確認がないすべての取引を失敗とする)



  • BatchACK.TRXN_ACK_NEGATIVE(受信確認がないすべての取引を成功とする)

注意: 保留中(11)以外のすべてのバッチ・ステータスは最終ステータスです。バッチの受信確認が存在しない場合に備えて、たとえば、バッチ・クローズ直後またはバッチの処理前に発生するバッチ問合せの最中に、既存の受信確認ファイルがない場合でも、バッチ・ステータス0(ゼロ)でバッチの受信確認オブジェクトを作成する必要があります。

CreditCardBatchACK

クラスoracle.apps.iby.bep.CreditCardBatchACKは、oracle.apps.iby.bep.BatchACKを拡張し、クレジット・カード・バッチの受信確認の属性が格納されます。次の表に属性を示します。

属性名説明
AuthTotaloracle.apps.iby.ecapp.Price完了した承認合計。
CaptureTotaloracle.apps.iby.ecapp.Price完了した精算合計。
CreditTotaloracle.apps.iby.ecapp.Price完了したクレジット合計。

BankAccountBatchACK

クラスoracle.apps.iby.bep.BankAccountBatchACKは、oracle.apps.iby.bep.BatchACKを拡張し、クレジット・カード・バッチの受信確認の属性が格納されます。次の表に属性を示します。

属性名説明
CreditTotalecapp.Price完了したクレジット合計。
DebitTotalecapp.Price完了したデビット合計

カスタム支出検証セットの作成

検証セットは、支払作成プログラムによって様々な処理ポイントで実行されるコード部分です。各検証セットは一連のビジネス・ルールを適用して、考慮対象の支払エンティティがすべてのルールに合格するかどうかを判断します。すべてのルールに合格しないかぎり、検証セットは支払作成プログラムに不合格のステータスを戻します。

検証セット・レベル

検証セットを作成するには、その前に、検証に適用するレベルを決定する必要があります。検証セット・レベルは、検証ポイントとも呼ばれ、検証が必要なエンティティを決定します。次の3種類の検証レベルがあります。

検証コード入力ポイント

支払作成プログラムは、特定のエンティティにリンクされている検証セットを動的に起動します。検証セット入力ポイントは、IBY_VALIDATION_SETS_VLビューにシードされています。次の表に、検証コード入力ポイントに関連する重要な列を示します。このビューには、シード検証セットが格納されます。

IBY_VALIDATION_SETS_VL
列名内容
VALIDATION_SET_CODEPT_CHECK_GEN問合せに使用される検証セットの一意名。
VALIDATION_LEVEL_CODEDOCUMENTこの検証は、買掛/未払金文書(請求書)に適用できます。
VALIDATION_CODE_PACKAGEIBY_VALIDATIONSETS_CALLS_PUBこの検証セットがパッケージに格納されます。
VALIDATION_CODE_ENTRY_POINTPT_CHECK_GENこの検証セットのメソッド名。
VALIDATION_CODE_LANGUAGEPL/SQLこの検証セットは、PL/SQLで実装されます。

この表に示した内容と同じ検証セット・データの場合、支払作成プログラムは、PL/SQL検証セットIBY_VALIDATIONSETS_CALLS_PUB. PT_CHECK_GENを動的に起動して、買掛/未払金文書を検証します。

注意: カスタム検証セットはカスタム・パッケージ内に作成する必要があります。IBY_VALIDATIONSETS_CALLS_PUBパッケージはOracle Payments専用のため、このパッケージにはカスタム検証セットを追加しないでください。

支払エンティティへの検証セットのリンク

通常、検証セットは次の2種類の支払エンティティのいずれか1つにリンクされます。

支払方法にリンクした検証セットは、請求書の作成時にOracle Payablesで実行する請求書の検証など、オンラインでも適用できます。オンライン検証では、文書の不合格はありませんが、ユーザーには、Oracle Paymentsに文書を発行する前に警告メッセージが表示されます。これによって、文書検証サイクルでOracle Paymentsに文書を発行する前にエラーを訂正できます。請求書に対してオンライン検証が実行され、検証エラーがあると、その請求書は保留されます。オンライン検証中に発生したエラーは保留事由として表示され、その請求書は保留事由が訂正されるまで選択プログラムの選択対象外となります。支払方法にリンクした検証セットは、買掛/未払金文書がOracle Paymentsに発行される際に再度適用されます。

ほとんどのシード検証はフォーマットにリンクされます。検証セットと支払方法/フォーマット間のリンクは、検証セットと支払エンティティ間のリンクを格納するIBY_VAL_ASSIGNMENTS表に格納されます

IBY_VAL_ASSIGNMENTS
列名内容
VALIDATION_SET_CODEPT_CHECK_GEN問合せに使用される検証セットの一意名。
VAL_ASSIGNMENT_ENTITY_TYPEFORMATこの検証セットのリンク先支払エンティティのタイプ。FORMATまたはMETHODです。
ASSIGNMENT_ENTITY_IDIBY_PAY_CHK_PTこの検証セットのリンク先の実際のエンティティ。この例では、エンティティはフォーマットIBY_PAY_CHK_PTです。
TERRITORY_CODEPTNULLの場合、この検証セットは支払国に関係なく適用できます。NULLでない場合、この検証は指定された国に対してのみ適用できます。

前述の表は、検証セットPT_CHECK_GENが支払フォーマットIBY_PAY_CHK_PTにリンクされていることを示しています。検証セットPT_CHECK_GENは文書レベルで適用できるため、支払作成プログラムは、買掛/未払金文書がIBY_PAY_CHK_PTフォーマットで渡される都度、この検証を実行します。

検証セットのシグネチャ

すべての検証セットには、同じ5つの引数シグネチャが含まれています。第3パラメータは検証対象となる支払エンティティです。このパラメータは、検証をコーディングした検証レベルに従って、買掛/未払金文書、支払または支払指図のいずれかになります。

文書レベルの検証セット

文書レベルの検証はPL/SQLで実装され、次のシグネチャが必要です。

名称データ型タイプ説明
p_validation_assign_idNUMBERIN検証割当ID。これはIBY_VAL_ASSIGNMENTS validation_assignment_idからの値です。
p_validation_set_codeVARCHAR2IN起動する必要がある検証セット。これはIBY_VALIDATION_SETS_VL validation_set_codeからの値です。
p_document_idNUMBERIN検証する文書の一意ID。これはIBY_DOCS_PAYABLE_ALL document_payable_idからの値です。
p_is_online_valVARCHAR2INこれがオンライン検証コールかどうかを示すY/Nフラグ。
x_resultNUMBEROUT適用した検証の結果を示す数値。ゼロ(0)はすべての検証が成功したことを示し、1は少なくとも1つの検証が失敗したことを示します。
PROCEDURE MY_VALIDATION_SET(
    p_validation_assign_id  IN          
        IBY_VAL_ASSIGNMENTS.
            validation_assignment_id%TYPE,
    p_validation_set_code   IN   
        IBY_VALIDATION_SETS_VL.
            validation_set_code%TYPE,
    p_document_id           IN 
        IBY_DOCS_PAYABLE_ALL.
            document_payable_id%TYPE,
    p_is_online_val         IN VARCHAR2,
    x_result                OUT NOCOPY NUMBER
    );

前述の例は、文書レベルで適用できるMY_VALIDATION_SETという検証セットを示しています。文書レベルの検証を作成するときは、同じシグネチャを使用する必要があります。

支払レベルの検証セット

支払レベルの検証はPL/SQLで実装され、次のシグネチャが必要です。

名称データ型タイプ説明
p_validation_assign_idNUMBERIN検証割当ID。これはIBY_VAL_ASSIGNMENTS validation_assignment_idからの値です。
p_validation_set_codeVARCHAR2IN起動する必要がある検証セット。これはIBY_VALIDATION_SETS_VL validation_set_codeからの値です。
p_payment_idNUMBERIN検証する文書の一意ID。これはIBY_PAYMENTS_ALL payment_idからの値です。
p_is_online_valVARCHAR2INこれがオンライン検証コールかどうかを示すY/Nフラグ。
x_resultNUMBEROUT適用した検証の結果を示す数値。ゼロ(0)はすべての検証が成功したことを示し、1は少なくとも1つの検証が失敗したことを示します。
PROCEDURE MY_VALIDATION_SET(
    p_validation_assign_id  IN          
        IBY_VAL_ASSIGNMENTS.
            validation_assignment_id%TYPE,
    p_validation_set_code   IN   
        IBY_VALIDATION_SETS_VL.
            validation_set_code%TYPE,
    p_document_id           IN 
        IBY_DOCS_PAYABLE_ALL.
            document_payable_id%TYPE,
    p_is_online_val         IN VARCHAR2,
    x_result                OUT NOCOPY NUMBER
    );

前述の例は、支払レベルで適用できるMY_VALIDATION_SETという検証セットを示しています。支払レベルの検証セットを作成するときは、同じシグネチャを使用する必要があります。

支払指図レベルの検証セット

支払指図レベルの検証はPL/SQLで実装され、次のシグネチャが必要です。

名称データ型タイプ説明
p_validation_assign_idNUMBERIN検証割当ID。これはIBY_VAL_ASSIGNMENTS validation_assignment_idからの値です。
p_validation_set_codeVARCHAR2IN起動する必要がある検証セット。これはIBY_VALIDATION_SETS_VL validation_set_codeからの値です。
p_instruction_idNUMBERIN検証する支払指図の一意ID。これはIBY_PAY_INSTRUCTIONS_ALL payment_instruction_idからの値です。
p_is_online_valVARCHAR2INこれがオンライン検証コールかどうかを示すY/Nフラグ。
x_resultNUMBEROUT適用した検証の結果を示す数値。ゼロ(0)はすべての検証が成功したことを示し、1は少なくとも1つの検証が失敗したことを示します。
PROCEDURE MY_VALIDATION_SET(
    p_validation_assign_id  IN          
        IBY_VAL_ASSIGNMENTS.
            validation_assignment_id%TYPE,
    p_validation_set_code   IN   
        IBY_VALIDATION_SETS_VL.
            validation_set_code%TYPE,
    p_instruction_id           IN 
        IBY_PAY_INSTRUCTIONS_ALL.
            payment_instructionid%TYPE,
    p_is_online_val         IN VARCHAR2,
    x_result                OUT NOCOPY NUMBER
    );

前述の例は、支払指図レベルで適用できるMY_VALIDATION_SETという検証セットを示しています。支払指図レベルの検証セットを作成するときは、同じシグネチャを使用する必要があります。

検証セットに関する重要な注意事項

注意: p_is_online_valは、文書レベルの検証セットにのみ関係します。支払レベルと支払指図レベルの検証セットを実装する場合は無視してください。Oracle Payablesで、手動または請求書インタフェース・インポート・プログラム経由で請求書を検証するときは、文書の支払方法に添付されている検証セットが起動されます。請求書の作成時には、潜在的なエラーを捕捉するためにオンライン検証として検証セットが起動されます。したがって、Oracle Payablesでは、p_is_online_valがYに設定された状態で検証セットが起動されます。これは、検証エラー・メッセージが請求書の支払予定に警告として表示され、支払予定が保留になることを意味します。検証セットは請求時に認識されるため、適用できるのは、支払方法に割り当てた検証と銀行口座に添付したOracle Cash Management検証のみです。

注意: x_resultパラメータは、支払作成プログラムに戻される検証セットの戻り値です。ゼロ(0)の値は検証が成功したことを意味します。1の値は支払エンティティが検証で失敗したことを意味します。

検証セットで生成されるエラーの格納

検証セット内のカプセル化されたビジネス・ルールを適用することで生成されるエラー・メッセージは、ユーザーに対して表示する必要があります。

次のIBY_TRANSACTION_ERRORS表には、検証セットによって生成されるエラー・メッセージが格納されます。検証対象の支払エンティティには複数のエラー・メッセージが関連付けられる可能性があるため、この表には、特定の支払エンティティIDに対して複数の行が存在する場合があります。

IBY_TRANSACTION_ERRORS
列名内容
TRANSACTION_ERROR_ID21412このエラー・メッセージの一意の連番。
TRANSACTION_TYPEDOCUMENT_PAYABLEこのエラー・メッセージが生成された支払エンティティのタイプ。使用可能な値には、DOCUMENT_PAYABLE、PAYMENTおよびPAYMENT_INSTRUCTIONがあります。
TRANSACTION_ID631このエラー・メッセージのリンク先である実際の支払エンティティ。この例では、エンティティはID631の買掛/未払金文書です。
ERROR_CODEIBY_DOC_INVALID_PROFILEこのエラー・コードは、シードされているFNDエラー・メッセージを取得するために使用されます。
VALIDATION_SET_CODECORE_DOC_VALIDATIONこのメッセージを生成した検証セット。

文書レベルの検証セットの実装

文書レベルの検証セットは、次のプロセスに従う必要があります。

  1. 提供された文書の属性をすべて取得します。文書IDは、文書レベルの検証セットに対する入力パラメータとして提供されます。

  2. IBY_TRANSACTION_ERRORS表に挿入するためのエラー・レコードを作成します。

  3. 関連する文書属性を使用してビジネス・ルールを適用します。

  4. 文書の検証が失敗した場合は、その内容を反映するためのエラー・レコードを移入します。

  5. すべてのビジネス・ルールが適用されるまで手順3と4を繰り返します。

  6. すべての検証が正常に終了した場合は、ゼロ(0)を戻します。

  7. いずれかの検証が失敗した場合は、そのエラー・レコードをIBY_TRANSACTION_ERRORS表に挿入し、1を戻します。

ヘルパー関数

IBYには、前述の手順の一部についてヘルパー関数が実装されています。これらの関数を使用するとコーディング時間を短縮できます。

支払レベルの検証セットの実装

支払レベルの検証セットは、次のプロセスに従う必要があります。

  1. 提供された文書の属性をすべて取得します。文書IDは、支払レベルの検証セットに対する入力パラメータとして提供されます。

  2. IBY_TRANSACTION_ERRORS表に挿入するためのエラー・レコードを作成します。

  3. 関連する支払属性を使用してビジネス・ルールを適用します。

  4. 文書の検証が失敗した場合は、その内容を反映するためのエラー・レコードを移入します。

  5. すべてのビジネス・ルールが適用されるまで手順3と4を繰り返します。

  6. すべての検証が正常に終了した場合は、ゼロ(0)を戻します。

  7. いずれかの検証が失敗した場合は、そのエラー・レコードをIBY_TRANSACTION_ERRORS表に挿入し、1を戻します。

ヘルパー関数

Oracle Paymentsには、前述の手順の一部についてヘルパー関数が実装されています。これらのヘルパー関数を使用するとコーディング時間を短縮できます。

支払指図レベルの検証セットの実装

支払指図レベルの検証セットは、次のプロセスに従う必要があります。

  1. 提供された支払指図の属性をすべて取得します。支払IDは、支払指図レベルの検証セットに対する入力パラメータとして提供されます。

  2. IBY_TRANSACTION_ERRORS表に挿入するためのエラー・レコードを作成します。

  3. 関連する支払指図属性を使用してビジネス・ルールを適用します。

  4. 支払の検証が失敗した場合は、エラー・レコードを移入してメモリーに挿入します。

  5. すべてのビジネス・ルールが適用されるまで手順3と4を繰り返します。

  6. すべての検証が正常に終了した場合は、ゼロ(0)を戻します。

  7. いずれかの検証が失敗した場合は、メモリー内のエラー・レコードをIBY_TRANSACTION_ERRORS表に挿入し、1を戻します。

ヘルパー関数

Oracle Paymentsには、前述の手順の一部についてヘルパー関数が実装されています。これらのヘルパー関数を使用するとコーディング時間を短縮できます。

カスタム検証ロジックの実装

すべての基本的な検証には、できるかぎりメソッドIBY_VALIDATIONSETS_PUB.evaluateConditionを使用してください。このメソッドに適切なトークン値を渡すことで、一般的な検証条件(フィールドがNULLかどうかの確認、金額が指定の限度額未満か以上かの検証など)のほどんどを網羅できます。

必要な検証が複雑で、通常のトークン演算子の使用では検証を実装できない場合は、evaluateConditionをコールする際に特別なトークンCUSTOMを使用します。CUSTOMトークンを使用すると、evaluateConditionでは、指定の検証メソッドが動的に起動されます。起動するメソッドは、引数としてevaluateConditionに渡す必要があります。

次のコードは、CUSTOMトークンを使用してevaluateConditionを起動する例を示しています。

IBY_VALIDATIONSETS_PUB.evaluateCondition
(
'PAYEE_BANK_SWIFT_CODE',
l_payee_bank_swift_code,
'CUSTOM',   /* token (operator) is ‘CUSTOM’ */
'DFPML.VAL_SWFT_CD', /* custom method to be invoked */
null, 
l_valResult, 
l_docErrorRec
);

evaluateConditionに対するフィールド名とフィールド値のパラメータは、カスタム検証メソッドに渡されます。これらのパラメータはevaluateConditionメソッドに対する最初の2つの引数です。カスタム検証メソッドは、OUTパラメータである第3パラメータを使用して、検証の成否を指定する必要があります。OUTパラメータがゼロ(0)の場合は、カスタム検証が成功したこと(それ以外の場合は失敗)を意味します。

カスタム検証メソッドは、次のシグネチャに従う必要があります。

PROCEDURE <custom validation name>(
    p_fieldName VARCHAR2,
    p_fieldValue VARCHAR2,
    l_chr OUT NOCOPY VARCHAR2
    );

たとえば、カスタム検証メソッドは次のようになります。

PROCEDURE VAL_SWFT_CD(
    p_fieldName VARCHAR2,
    p_fieldValue VARCHAR2,
    l_chr OUT NOCOPY VARCHAR2
    ) 
IS
BEGIN
    /*
     * Do some validations here on the field value.
     */

    :
    :
   
    /*
     * Return ‘0’ if everything is Ok. Else
     * return ‘1’.
     */
    l_chr := '0'; /* success */
END VAL_SWFT_CD;

コード例

検証セットの実装例では、次のファイルに注意してください。

$IBY_TOP/patch/115/sql/ibyvalcs.pls 
$IBY_TOP/patch/115/sql/ibyvalcb.pls

これらの2つのファイルは、Oracle Paymentsによってシードされた検証セットのPL/SQL仕様部と本体です。本体には、文書レベル、支払レベルおよび支払指図レベルでの検証セットが含まれています。できるかぎり多くのコードを再利用することをお薦めします。

カスタム検証セットのシード

検証セットを作成した後は、その検証セットをIBY_VALIDATION_SETS_VL表にシードすることを忘れないでください。

IBY_VALIDATION_SETS_VLはビューであるため、新規に作成した検証セットはIBY_VALIDATION_SETS_VLに直接挿入できません。次の手順で挿入する必要があります。

  1. 検証セットをIBY_VALIDATION_SETS_B表に挿入します。これは、変換可能なテキストを含まない基礎表です。

    例:

    insert into iby_validation_sets_b (validation_set_code,validation_level_code,validation_code_package,validation_code_entry_point,validation_code_language,created_by,creation_date,last_updated_by,last_update_date,last_update_login, object_version_number) values 
    ('paymul_pmt_validations','PAYMENT','mis_iby_val_pkg','mis_iby_gen_val_pmt_pml','plsql','294110',sysdate,'294110',sysdate,'294110',1);
    
  2. 検証セットをIBY_VALIDATION_SETS_TL表に挿入します。この表には変換可能なテキストが含まれています。検証セット名は変換可能です。

    例:

    insert into iby_validation_sets_tl (validation_set_code,language,source_lang,validation_set_display_name,created_by,creation_date,last_updated_by,last_update_date,last_update_login,object_version_number) values 
    ('paymul_pmt_validations','us','us','paymul eft validation-payment level','294110',sysdate,'294110',sysdate,'294110',1);
    

この時点で、検証セットが「Oracle Payments設定」ページに表示されるようになります。ナビゲータ・パスは「Oracle Payments設定」 > 「支払設定」 > 「共有設定」 > 「検証」です。

検証セットは、支払方法や支払フォーマットなどの適切な支払エンティティにリンクできます。その後は、支払作成プログラムを実行して、検証ロジックをテストできます。

検証セットの実装に関する重要な注意事項

検証セットの実装に関する重要な注意事項は、次のとおりです。

検証セットには、次の2つのコールも含める必要があります。

/*	
 * Inserts the error generated by a single 
 * validation within the validation set into 
 * the l_docErrorTab temporary PLSQL table.  
 *
 * Similarly, you can have l_pmtErrorTab
 * for payments.
 *
 * This call should be invoked once after each 
 * validation to accumulate all the error
 * messages in l_docErrorTab.
 */
IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
/*
 * Permanently inserts all the error messages 
 * in l_docErrorTab into the
 * IBY_TRANSACTION_ERRORS table.
 *
 * This call should be invoked only once at 
 * the end of your validation set.
 */
IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab); 

カスタム資金取得検証セットの作成

検証セットは、支払処理エンティティ(通常は、資金取得オーダー(支払取引)または支払バッチ)に対して一連の検証を実行するプログラム・ユニットです。各検証セットは一連のビジネス・ルールを適用して、考慮対象の支払エンティティがすべてのルールに合格するかどうかを判断します。資金取得検証セットは、Java関数またはPL/SQLプロシージャとして実装でき、支払エンジンによって動的に起動されます。

検証セット・レベル

検証セットを作成するには、その前に、検証に適用するレベルを決定する必要があります。検証セット・レベルは、検証ポイントとも呼ばれ、検証が必要なエンティティを決定します。次の2種類の検証レベルがあります。

オーダー・レベルの検証は取引レベルの検証です。指図レベルの検証はバッチ・レベルの検証です。オーダー・レベルの検証はJavaで実装され、指図レベルの検証はPL/SQLで実装されます。

検証コード入力ポイント

支払エンジンは、特定のエンティティにリンクされている検証セットを動的に起動します。検証セット入力ポイントは、IBY_VALIDATION_SETS_VLビューにシードされています。次の表に、検証コード入力ポイントに関連する列を示します。IBY_VALIDATION_SETS_VL表には、シード検証セットが格納されます。

IBY_VALIDATION_SETS_VL
列名内容
VALIDATION_SET_CODEPTK_ONLINE_7_2_BATCH_2_1_0問合せに使用される検証セットの一意名。
VALIDATION_LEVEL_CODEORDERこの検証は、オーダー(取引)に適用でいます。
VALIDATION_CODE_PACKAGEoracle.apps.iby.bep.proc.paymentech.FundsCaptureValidationSetこの検証セットが実装されるJavaクラス。
VALIDATION_CODE_ENTRY_POINTvalidateこの検証セットの関数名。
VALIDATION_CODE_LANGUAGEJAVAこの検証セットは、Javaで実装されます。

前述の表で示した同じ検証セット・データについては、支払エンジンがJava検証セットoracle.apps.iby.bep.proc.paymentech.FundsCaptureValidationSet.validateを動的に起動して取引を検証します。

注意: 検証セットは独自のクラスに作成できます。oracle.apps.iby.bep.proc.paymentech.FundsCaptureValidationSetクラスには、カスタム検証セットを追加しないでください。このクラスはOracle Payments専用です。

次のIBY_VALIDATION_SETS_VL表(シード検証セットが格納される表)に、PL/SQL検証のシード検証セット入力ポイントを示します。

IBY_VALIDATION_SETS_VL
列名内容
VALIDATION_LEVEL_CODEPTK_BATCH_2_1_0問合せに使用される検証セットの一意名。
VALIDATION_LEVEL_CODEINSTRUCTIONこの検証は、指図(支払バッチ)に適用できます。
VALIDATION_CODE_PACKAGEIBY_FNDCPT_VLD_PUBこの検証セットが実装されるPL/SQLパッケージ。
VALIDATION_CODE_ENTRY_POINTValidate_Paymentech_Batchこの検証セットのプロシージャ名。
VALIDATION_CODE_LANGUAGEPL/SQLこの検証セットは、PL/SQLで実装されます。

前述の表で示した同じ検証セット・データについては、支払エンジンがPL/SQL検証セットIBY_FNDCPT_VLD_PUB.Validate_Paymentech_Batchを動的に起動して支払指図(支払バッチ)を検証します。

支払エンティティへの検証セットのリンク

資金取得検証セットは、次の支払エンティティにのみリンクされます。

検証セットと支払エンティティ間のリンクは、次のIBY_VAL_ASSIGNMENTS表に格納されます。

IBY_VAL_ASSIGNMENTS
列名内容
VALIDATION_SET_CODEPTK_ONLINE_7_2_BATCH_2_1_0問合せに使用される検証セットの一意名。
VAL_ASSIGNMENT_ENTITY_TYPEFORMATこの検証セットのリンク先支払エンティティのタイプ。資金取得検証セットでは、常にFORMATになります。
ASSIGNMENT_ENTITY_IDPTECH_ONLINE_7_2この検証セットのリンク先である実際のエンティティ。この例では、エンティティはフォーマットPTECH_ONLINE_7_2です。
TERRITORY_CODENULLNULLの場合、この検証セットは支払国に関係なく適用できます。NULLでない場合、指定の国に対してのみ適用できます。

前述のIBY_VAL_ASSIGNMENTS表の例は、検証セットPTK_ONLINE_7_2_BATCH_2_1_0が支払フォーマットPTECH_ONLINE_7_2にリンクされていることを示しています。検証セットPTK_ONLINE_7_2_BATCH_2_1_0はオーダー・レベルで適用できるため、支払エンジンは、オーダーがフォーマットPTECH_ONLINE_7_2で渡される都度、この検証を実行します。

検証セットのシグネチャ

支払システム・フォーマット固有の検証は、支払エンジン内で、JavaおよびPL/SQLで実装された検証セットのコードポイント別に実行され、特定の支払システム・フォーマットに関連付けられます。

取引レベルの検証セット

取引レベルのJava検証セットの実装は、次のクラス・インタフェースに準拠している必要があります。

oracle.apps.iby.payment.FndCptValidationSet.

このインタフェース・クラスには、validateという単一のメソッドがあります。このメソッドのシグネチャは、次の表のとおりです。

メソッドのパラメータ
名称説明
ecappIdint現在の取引の電子商取引アプリケーションID。
payeePayee取引の受取人。
pmtInstrPmtInstr使用される支払手段。
p_is_online_valINこれがオンライン検証コールかどうかを示すY/Nフラグ。
orderTangibleオーダー。
trxnTransaction実行される取引。
<return>ValidationSetResult検証の結果。

validateメソッドはValidationSetResultオブジェクトを介して検証の結果を戻します。ValidationSetResultオブジェクトには次の要素が含まれています。

ValidationSetResultの要素
名称説明
Validboolean検証の結果。成功の場合はtrue、それ以外の場合はfalseです。
MessageStringMESSAGE_NAME#TOKEN_NAME1=TOKEN_VAL1#....の形式でエンコードされたOracle Paymentsエラー・メッセージ文字列。
CodeString検証のエラー・コード(ある場合)。

バッチ・レベルの検証セット

バッチ・レベルの検証はPL/SQLで実装され、次のシグネチャが必要です。

バッチ・レベルの検証セットのシグネチャ
名称データ型タイプ説明
p_api_versionNUMBERINコールしたAPIのバージョン。これは無視してください。
p_init_msg_listVARCHAR2INメッセージ・リストを初期化するかどうかを示します。
p_mbatchidNUMBERIN(IBY_BATCHES_ALL表内での)バッチの識別子。
x_return_statusVARCHAR2OUTコールのステータス。
x_msg_countNUMBEROUTスタックにあるエラー・メッセージ数。
x_msg_dataVARCHAR2OUTエラーのメッセージ・スタック。

取引レベルの検証セットの実装

取引レベルの検証セットは、次のプロセスに従う必要があります。

  1. 検証セットは、oracle.apps.iby.payment.FndCptValidationSetインタフェースを実装するクラスでコーディングしてください。つまり、検証セット・クラスにはvalidateメソッドを含める必要があります。

  2. validateメソッドは、受取人、支払手段、実際のオーダーおよび取引の各属性をカプセル化する入力パラメータとともに起動されます。関連する属性にはビジネス・ルールを適用します。

  3. いずれかの属性が検証に失敗した場合は、エラー・コードとエラー・メッセージを備えたoracle.apps.iby.engine.ValidationSetResultオブジェクトを移入して戻ります。

  4. すべての検証が成功した場合は、ValidationSetResultオブジェクトの結果コードをSUCCESSに設定します。

  5. oracle.apps.iby.payment.FndCptValidationSetインタフェースの、次の支払システム固有の実装は、参照として使用できます。次の表に、各実装および関連する支払システム・フォーマットを示します。

シードされている支払システム検証セット
payment.FndCptValidationSetインタフェースの支払システム固有の実装関連する支払システム・フォーマット
Paymentechオンラインおよびバッチ仕様oracle.apps.iby.bep.proc.paymentech.FundsCaptureValidationSet
First Data North承認およびバッチ仕様oracle.apps.bep.proc.fdcnorth.FundsCaptureValidationSet

バッチ・レベルの検証セットの実装

バッチ・レベルの検証セットは、次のプロセスに従う必要があります。

  1. シグネチャを使用して、バッチ・レベルの検証セットを実装します。

  2. 検証の入力パラメータとして提供されるパラメータmbatchidは、IBY_BATCHES_ALL表に対する主キーです。このパラメータを使用すると、IBY_BATCHES_ALL表からバッチの詳細を取得したり、IBY_TRXN_SUMMARIES_ALL表に連結して、取引の詳細を取得することもできます。

  3. 関連する支払属性にビジネス・ルールを適用します。

  4. いずれかの属性が検証に失敗した場合は、x_return_status出力パラメータをFND_API.G_RET_STS_ERRORに設定します。FNDメッセージ・スタックでエラー・メッセージを移入して戻ります。

  5. すべての検証が成功した場合は、set x_return_statusをFND_API.G_RET_STS_SUCCESSに設定して戻ります。

  6. バッチ・レベルの検証の参照実装には、パッケージIBY_FNDCPT_VLD_PUB($IBY_TOP/patch/115/sql/ibypfcvb.pls)を参照できます。Paymentechに送信するクレジット・カード・バッチの検証には、メソッドValidate_Paymentech_Batchが使用されます。同様に、FDC North支払システムに送信するクレジット・カード・バッチの検証には、メソッドValidate_FDCNorth_Batchが使用されます。

カスタム検証セットのシード

検証セットを作成した後は、その検証セットをIBY_VALIDATION_SETS_VL表にシードすることを忘れないでください。

IBY_VALIDATION_SETS_VLはビューであるため、新規に作成した検証セットはIBY_VALIDATION_SETS_VLに直接挿入できません。次の手順で挿入する必要があります。

  1. 検証セットをIBY_VALIDATION_SETS_B表に挿入します。これは、変換可能なテキストを含まない基礎表です。

    例:

    insert into iby_validation_sets_b (validation_set_code,validation_level_code,validation_code_package,validation_code_entry_point,validation_code_language,created_by,creation_date,last_updated_by,last_update_date,last_update_login, object_version_number) values 
    ('my_cc_validations','ORDER', 'oracle.apps.iby.bep.proc.myproc.FundsCaptureValidationSet,'validate',’JAVA','294110',sysdate,'294110',sysdate,'294110',1);
    
  2. 検証セットをIBY_VALIDATION_SETS_TL表に挿入します。この表には変換可能なテキストが含まれています。検証セット名は変換可能です。

    例:

    insert into iby_validation_sets_tl (validation_set_code,language,source_lang,validation_set_display_name,created_by,creation_date,last_updated_by,last_update_date,last_update_login,object_version_number) values 
    ('my_cc_validations','us','us','My credit card validatons','294110',sysdate,'294110',sysdate,'294110',1);
    

この時点で、検証セットが「Oracle Payments設定」ページに表示されるようになります。ナビゲータ・パスは「Oracle Payments設定」 > 「支払設定」 > 「共有設定」 > 「検証」です。

検証セットは、資金取得支払方法およびフォーマットなどの適切な支払エンティティにリンクできます。

これで、取引を作成してバッチを発行することで、検証ロジックをテストできます。

検証セットの実装に関する重要な注意事項

検証セットの実装に関する重要な注意事項は、次のとおりです。