ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PI-海外银企直联方案

2020-12-22 09:34:20  阅读:590  来源: 互联网

标签:银企 SAP 文件 lo 直联 SFTP lv 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任务 

 

 

标签:银企,SAP,文件,lo,直联,SFTP,lv,PI
来源: https://www.cnblogs.com/ricoo/p/14108262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有