易企通1.0
  1. 易企通1.0
易企通1.0
  • 易生接口联调指南
  • 资料下载
    • 技术资料
      • 易生MIS-POS技术方案
  • 接口能力
    • 进件系统
      • 报文数据元说明
      • 商管系统联调说明
      • 参数字典说明
      • 9进件类接口
        • 9.1 图片上传
        • 9.2 商户信息录入
        • 9.3 商户信息补件
        • 9.4 商户异步通知回调
        • 9.5 商户审核结果查询
        • 9.6 商户信息查询
        • 9.7 商户信息变更
        • 9.8 新增终端
        • 9.9 终端变更
        • 9.10 结算账户变更
        • 9.11 商户功能变更
        • 9.12 参数查询
        • 9.13 查询授权码
        • 9.14 机具序列号入库接口
        • 9.15 商户签约申请接口
        • 9.16 易生侧签约电子协议下载
        • 9.17 商户电子协议号变更
        • 9.18 终端授权码重置接口
        • 9.19 终端注销
        • 9.20 商户注销
        • 9.21 终端序列号TUSN校验
        • 9.22 终端序列号查询终端信息
        • 9.23 银联入驻结果查询
        • 9.24 微信支付宝重新入驻
        • 9.25 更新银联报备服务商
        • 9.26 更新代理商编号(特定使用)
        • 9.27 商户、终端操作通知
        • 9.28 终端码牌、小白盒绑定解绑
      • 10分账绑定类接口
        • 个人分账方入网
        • 企业分账方入网
        • 分账方信息更新
      • 11限额类接口
        • 11.1 查询限额
        • 11.2 新增限额
        • 11.3 变更限额
      • 12营销类接口
        • 12.1 活动报名新增接口
        • 12.2 活动报名终止接口
        • 12.3 活动报名查询接口(该接口不可用)
      • 13支付宝配置类接口
        • 支付宝实名认证
          • 13.1.1 图片上传接口
          • 13.1.2 商家认证申请单提交
          • 13.1.3 商家认证申请单状态
          • 13.1.4 商家认证状态
          • 13.1.5 商家认证申请单撤销
      • 14微信配置类接口
        • 14.6 微信活动报名
          • 微信图片上传接口
          • 微信活动报名申请
          • 微信活动报名进度查询
          • 微信活动报名重新申请
        • 14.7 微信实名认证
          • 提交申请单
          • 撤销申请单
          • 查询审核状态
          • 查询开户意愿确认状态
          • 微信/支付宝实名认证结果查询
          • 微信图片上传接口
        • 14.1 微信APPID配置
        • 14.2 微信授权目录配置
        • 14.4 微信商户简称及客服号码修改
        • 14.5 微信商户信息查询
        • 14.3 微信配置查询
    • 易企通1.0
      • 加签验签说明
      • 敏感信息加密
      • 标准类API
        • 附录-应答码说明
        • 附录-交易类型码
        • 担保
          • 担保申请
          • 担保确认
          • 担保查询
          • 担保撤销
        • 清算
          • 商户余额查询
          • 秒到交易查询(老-防腐层)
          • D1和T1交易结算查询
        • 标准-付款码支付
        • 标准-主扫支付
        • 标准-jsapi支付
        • 银联云闪付app支付
        • 标准-交易单笔查询
        • 标准-交易关闭
        • 云闪付授权
        • 银联JS-获取用户标识
        • 标准-交易支付成功通知
      • 用不到的接口
        • 定时任务-交易中间状态的定时查询
        • wxAppId可由前端传过来的-微信jsapi支付(目前用不着)
        • 获取微信openid
        • 获取请求附加数据(商户未接过,目前暂时用不上)
    • 云易收(云收银)
      • 云易收联调说明
      • 云易收-附录-码
      • H5预下单-标准
      • H5预下单-行业
      • 小程序预下单-标准
      • 小程序预下单-行业
      • 订单查询接口
      • 云闪付授权
      • 云闪付获取用户标识
      • 分期交易查询
      • 分期交易退货
      • 交易回调通知
    • 电子协议
      • 电子协议联调说明
      • 电子协议-附录-码
      • 个人开户3001
      • 企业开户3002
      • 发送验证码3101
      • 创建合同3201
      • 签署合同3206
      • 合同查询3210
      • 合同下载
      • 获取签名密钥
    • 分账、退款
      • 添加个人收款方
      • 添加企业收款方
      • 请求分账
      • 分账撤销
      • 分账结果查询
      • 分账关系绑定
      • 分账关系查询
      • 实时退款
      • 退款查询
      • 急速退款-账户代扣 (暂不可用)
      • 分账接收方变更
    • 网支中台
      • 银联无跳转快捷(全渠道)
        • 商户侧开通
          • 标准版-发送开通短信验证码
          • Token版-发送开通短信验证码
          • Token版-后台开通
          • 标准版-后台开通
        • 银联侧开通
          • Token版-前台页面开通(二期实现)
          • 标准版-前台页面开通
        • 发送短信验证码
        • 开通查询
        • 支付(短信验证)
        • 支付(无短信验证)
      • 订单系统
        • 交易信息查询
        • 订单创建
        • 订单关闭
        • 订单拉取-暂时没对外调试
    • 易生鉴权
      • 银行卡信息鉴权
      • 通讯运营商信息鉴权
      • 公安信息鉴权
      • 风险信息鉴权
      • 短信鉴权
      • 鉴权结果查询
      • 未命名接口
    • 微收单-不对接
      • resultcode应答码说明
      • getSign
      • 付款码支付
      • 主扫支付
      • JSAPI支付
      • 交易查询
      • 支付通知接口
      • 秒到交易查询
      • 银联行业码用户标识接口
      • 银联行业码支付
      • 交易退款
    • 易生代付
      • 代付交易请求
      • 代付查询交易请求
      • 批量代付交易请求(暂时未对外开放)
      • 批量代付结果查询请求(暂时未对外开放)
      • 代付额度查询
      • 手续费报送
      • 异步通知
      • 代付额度调整明细查询
    • 银行卡接口规范
      • 易生MIS-POS技术方案
      • 智能POS三方调用
      • 易生银行卡受理终端应用规范
      • 银行卡接口文档
  1. 易企通1.0

加签验签说明

报文加验签说明

报文签名说明

数据签名 数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。
要求对整段报文做签名值,然后赋值给sign(签名值)字段
签名时只对data一个字段进行签名

签名方式

使用的签名算法为SHA256withRSA,返回报文先验签再反序列化为对象

签名报文组装

将请求报文中data字段值按照名称的ASCII码从小到大进行排序以&连接,如果名称的首字母相同,则比较第二个字母,以此类推拼接成key=value&key=value的字符串,然后进行签名,并且赋值给sign。

返回报文验签

根据各个语言通用的rsa签名算法,使用商户的私钥对上面组的签名报文签名得到sign,添加到请求json的报文中。

拼接需要签名的数据示例:

/**

  • 排序拼接需要签名/验签的数据

  • @param data

  • @return
    */
    public static String getReqStr(JSONObject data){
    Set keySet = data.keySet();
    String[] keyArray = keySet.toArray(new String[keySet.size()]);
    Arrays.sort(keyArray);
    StringBuilder sb = new StringBuilder();
    for (String k : keyArray) {
    // 参数值为空,则不参与签名
    if (data.get(k) != null) {
    sb.append(k).append("=").append(data.get(k).toString().trim()).append("&");
    }
    }
    return sb.toString().substring(0,sb.toString().lastIndexOf("&"));
    }

    /**

    • @param data 待签名字符串
    • @param privateKey 私钥
    • @throws Exception /
    • 私钥签名
    • @return String
      */
      public static String sign(String data, String privateKey) throws Exception {
      byte[] keyBytes = org.apache.commons.codec.binary.Base64.decodeBase64(privateKey);
      PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
      KeyFactory keyFactory = KeyFactory.getInstance("RSA");
      PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);
      Signature signature = Signature.getInstance("SHA256WithRSA");
      signature.initSign(privateK);
      signature.update(data.getBytes());
      byte[] result = signature.sign();
      return org.apache.commons.codec.binary.Base64.encodeBase64String(result);
      }

报文验签说明

数据签名 数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。
验签时只对data一个字段进行签名

验签方式

使用的签名算法为SHA256withRSA,!!返回报文先验签再反序列化为对象,避免对象因为属性少失败!!

取出服务器签名值

返回报文中的sign字段(base64加密的)

验签报文组装

将返回报文中data字段值按照名称的ASCII码从小到大进行排序以&连接,如果名称的首字母相同,则比较第二个字母,以此类推拼接成key=value&key=value的字符串,。【见上述示例】

返回报文验签

根据各个语言通用的rsa验签算法,根据服务器掩码值,组的验签报文,使用易生机构公钥进行SHA256withRSA验签

/**
     * 排序拼接需要签名/验签的数据
     * @param data
     * @return
     */
    public static String getReqStr(JSONObject data){
        Set<String> keySet = data.keySet();
        String[] keyArray = keySet.toArray(new String[keySet.size()]);
        Arrays.sort(keyArray);
        StringBuilder sb = new StringBuilder();
        for (String k : keyArray) {
            // 参数值为空,则不参与签名
            if (data.get(k) != null) {
                sb.append(k).append("=").append(data.get(k).toString().trim()).append("&");
            }
        }
        return sb.toString().substring(0,sb.toString().lastIndexOf("&"));
    }
    /**
     *
     * @description: 公钥验签
     * @param data      已签名数据
     * @param publicKey 公钥
     * @param sign      签名
     * @return boolean
     */
    public static boolean verify(String data, String publicKey, String sign) throws Exception {
        Signature signature = Signature.getInstance("SHA256WithRSA");
        PublicKey key = KeyFactory.getInstance("RSA")
                .generatePublic(new X509EncodedKeySpec(org.apache.commons.codec.binary.Base64.decodeBase64(publicKey)));
        signature.initVerify(key);
        signature.update(data.getBytes());
        return signature.verify(Base64.decodeBase64(sign));
    }

加签私钥 商户私钥(同分账、收银台):

MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOSxfpYzsR5pKg0lpDb8rwhmJuaN06l+o9wf5FvKFoGCGt0yMmv/OUqsiFzuatZ7VV2hx/WavOVVubMr6YXD8/GINStC/6Hj7ih30XDjQLM1TRmBfhux+FO3LEYUULKbp/LZz+tXDU6QN6Hvw3CGNRhwdAV5Sq1d0REg7tbPuCZpAgMBAAECgYBigmpqvN2AogAxJZO08+dZkNcU3ObdzeU7fqlZOJW1N5vmyCacCpZdKjCbB0ASH5JIANYnX34as3CIU1QGAMBk63Rm7LYF7mPu3r+qYUhwt60FTynxktkKgvtr2slDNc+oF4noAKvzd3W752RWn/lp9rGvhkk8gljaBVa0A+4A+QJBAP6R2b7dDdmICLJFJV8EdKJjThndSQymS4MLT2p3ZdT2ULhMtLjbOy0FeQaBFEkF6cy8TquIvO76qwlNCPlO5qcCQQDl+mz7s7Pd6SaMcuAMPDnuCNqVZNspseP3WmnB3q/Bt3Ad+dTtoopVYgvrIAb+VxVkZ804k3c192wl9BilVTxvAkEA4I4jdztjRim7EhXwezpg8AWNFT+femsOXRATA6VCzHJijdAL8qxgLLyRH22pSSjQLetFsgYyMtQnH1M2wUQaLQJBAKNDNa02NKF8C+a3AoENHF70oCBgegnOhLSr1dpQuVr/W7OcEWIl+qiEs0tW8EANGF2wJwtb/Mwt+vOypvBwYzcCQQCff7Cv+JHXx+voggV+lJqkBpFGjIV2axQ97n4JrBxwok7y42KEhMrKqVRAzXp7iGSxXfq7AkL0JSU7gSz+dg/3

加密/解签 易生机构公钥(同分账、收银台):

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAqRw0nZ1rGTpAeKupP7coS+en6BveJL4aFVt9men4Zzkpuv/IeK6YJ2yk4m8ppZ7TLW4t5WsPEhYOnUfMtjhW4nuQfjgU54juJ1KMHYiX9gaaO+z80ZnaiKD2YsZMFiE9dlTeBlkRL5xXbHa+JonHfVKXMr13oI8oZNKdpnvknQIDAQAB

敏感信息加密说明

加密方法

敏感信息加密解密:
1、 发起方自行产生对称密钥(32位);
2、发起方使用对称密钥, 按照AES256_ECB算法对敏感信息加密;
3、发起方使用接收方加密证书的公钥,用对方密钥等相关信息加密和Base64编码,生成数字信封并存入报文的“dgtlEnvlp数字信封”。
4、接收方对数字信封解密,获取对称密钥等明文信息。
5、接收方使用对称密钥, 对敏感信息进行解密。

加密/解签 公钥:

"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAqRw0nZ1rGTpAeKupP7coS+en6BveJL4aFVt9men4Zzkpuv/IeK6YJ2yk4m8ppZ7TLW4t5WsPEhYOnUfMtjhW4nuQfjgU54juJ1KMHYiX9gaaO+z80ZnaiKD2YsZMFiE9dlTeBlkRL5xXbHa+JonHfVKXMr13oI8oZNKdpnvknQIDAQAB"

修改于 2025-03-07 08:14:06
上一页
14.3 微信配置查询
下一页
敏感信息加密
Built with