PI-海外銀企直聯方案


海外銀企直聯方案采用PI中間件,業務系統與銀行前置機采用SFTP適配器對文件進行加解密傳輸處理。

1.業務場景

A.SAP運行F110或是EPIC通過審批后生成收付款文件,文件存儲在SAP-SFTP指定路徑。

B.中間件PI定時抽取SAP-SFTP收付款文件,並通過PGP加密將文件推送到銀行SFTP指定路徑,同時反饋狀態至SAP系統。

C.銀行SFTP接收到文件,通過基本信息校驗並生成接收狀態文件,存儲在銀行SFTP指定路徑,PI定時抽取該路徑文件並解密后分發給SAP-SFTP以及SAP-Proxy。

D.銀行處理完成后將收付款結果文件存儲在銀行SFTP指定路徑下,PI定時抽取該路徑文件並解密后分發給SAP-SFTP以及SAP-Proxy。

E.銀行對賬單文件存儲在銀行SFTP指定路徑下,PI定時抽取該路徑文件並解密后分發給SAP-SFTP以及SAP-Proxy。

2.PI部分配置

A.SAP運行EPIC直接推送數據到PI

 文件不落地,SAP直接推送BASE64數據流到PI,PI接收到數據通過JAVA解析BASE64並改寫Mapping Message,加密后將文件推送銀行SFTP。

 Mapping Message:

 導入commons_io_220文件包

 

 設置文件名:

 Attributes and Methods 文件轉換:

public void transform(TransformationInput input, TransformationOutput output) throws StreamTransformationException {
    String lv_xmlStr;
    String lv_newHead;
    String lv_opstr;

    try{
            MappingTrace lo_mt = getTrace();
            lo_mt.addInfo("Transformation Starting"); 
            
            InputStream lo_inputStream = input.getInputPayload().getInputStream();
            lv_xmlStr = IOUtils.toString(lo_inputStream);
            lo_mt.addInfo("originalXMLString:"+lv_xmlStr);

            //get file name
            DynamicConfiguration lo_conf = input.getDynamicConfiguration();
            DynamicConfigurationKey lv_key = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System","FileName");
            lo_conf.put(lv_key,"11111223.xml");
            
/**           lv_xmlStr = 
    "<IMP_STRING>" +
        "<![CDATA[" +
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 
    "<n0:mt_in001_notice  xmlns:n0=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03\">" + 
    "<p_fsnam>lv_value</p_fsnam>" + 
    "<msgid>lv_msgid</msgid>" + 
    "<status>SEND</status>" + 
    "</n0:mt_in001_notice>" +
    "]]>" +
    "</IMP_STRING>";
*/

            //get node: IMP_STRING
          int lv_beg;
          int lv_end;
          lv_beg = lv_xmlStr.indexOf("<IMP_STRING>");
          lv_beg += 12;
          String lv_temp;
          lv_temp = Integer.toString(lv_beg);
          lo_mt.addInfo(lv_temp);
          lv_end = lv_xmlStr.indexOf("</IMP_STRING>");
          lv_temp = Integer.toString(lv_end);
          lo_mt.addInfo(lv_temp);
          String lv_cdata;
          lv_cdata = "";
          lv_cdata = lv_xmlStr.substring(lv_beg,lv_end);

            //Transform base64 to String
            byte[] decodeBytes = java.util.Base64.getDecoder().decode(lv_cdata.getBytes());
            lv_cdata = new String(decodeBytes,java.nio.charset.Charset.forName("UTF-8"));

            lv_opstr = lv_cdata;
          lv_opstr = lv_opstr.replace("<![CDATA[",""); 
            lv_opstr = lv_opstr.replace("]]>",""); 

          lo_mt.addInfo("afterXMLString:"+lv_opstr);

          OutputStream lo_os = output.getOutputPayload().getOutputStream();
          lo_os.write(lv_opstr.getBytes());
          lo_os.flush();    
          lo_os.close();

    }catch(Exception e){
          getTrace().addWarning(e.getMessage());
    }

}
View Code

 

B.SAP通過SFTP發送文件到PI

 文件落地,PI定時抽取文件通過加密發送到銀行SFTP。

 SFTP-Sender:

 

 

 

 SFTP-Receiver:

 

 

 

 C.SFTP文件加密解密方式

Communication Channel加密PI發出文件:

 Communication Channel解密PI接收文件:

D.PI廣播式發送文件

 

 

 SAP Proxy:

 

3.PI通道監控及日志

  Configuration and Monitoring Home

 適配器引擎狀態

消息監控器

 

 4.PI郵件推送

 Integration Builder創建Alert規則

 

 

 

 

 

 郵件服務信息配置 NWA - Configuration - Infrastructure - Java system properties

 

 定義Alert觸發Job:NWA - Operations - Jobs - Java scheduler -  Tasks

選擇Add增加Job任務 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM