Bootstrap

PL/SQL实现POST请求和参数AES加解密

PL/SQL实现POST请求和参数AES加解密

背景

项目上使用的HIS程序(C/S架构:PowerBuilder+Oracle12c)需要对接第三方支付系统(REST接口)实现收退费。

为了尽量实现对现有的收费模块做最少改动(主要还是PB功力不够,没把握),决定通过PL/SQL完成接口交互模块,PB只完成数据写入和存储过程调用。

程序运行环境

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

相关函数

程序包 作用描述
UTL_HTTP 发送http请求
DBMS_CRYPTO 数据加解密
UTL_I18N 字符串和16进制互转

代码

declare
  /*
  -- 请求服务url,此处ip和端口需要配置ACL
  */
  V_URL    constant varchar2(50) := 'http://111.111.111.87:8081/ta404/mzjzk/';
  -- 医疗机构编码
  V_AKB020 constant varchar2(8) := '2020';
  -- 医疗机构密钥
  V_AES_KEY constant raw(16) := 'd87da23b8e3c6e9b799914c4d6f2af87';
  /*--------------------------------------------------
  || 函数名称:fun_http_aes
  || 功能描述:用于发起http请求rest接口
  ||------------------------------------------------*/
  function fun_http_aes(prm_url in varchar2, prm_data in clob) return clob is
    req         utl_http.req;
    resp        utl_http.resp;
    v_resp_data varchar2(4000)
;