目录

敏感信息处理

部分受限业务接口可能涉及入参字段的敏感信息加密处理(如涉及,API接口字段中会标注说明)。如开发者涉及使用对应业务接口,请联系华为侧工程师,获取对应的SM2加密公钥。

涉及密钥:

密钥类型

来源

作用

SM2

华为支付提供。

加密开发者生成的SM4密钥。

SM4

开发者生成。

加密敏感信息字段。

处理逻辑:

1、开发者生成SM4对称密钥,用于加密敏感数据内容并作为入参传递给华为支付。

2、开发者使用华为支付提供的SM2密钥加密生成的SM4对称密钥并通过PayMercAuth.sessionKey字段传递给华为支付用于解密敏感信息。

本质为SM4对称密钥加密。示例代码如下:

// 终端信息, 任何终端信息都没有也要new Terminal()对象传入
Terminal terminal = Terminal.builder()
        .deviceIP("128.0.0.1")
        .deviceCategory("APP")//设备分类APP,H5,PC
        .networkingMode("WIFI")
        .accessMode("APP")
        .build();
String terminalString = JSONObject.toJSONString(terminal);
// 4. 生成sessionKey, 加密terminal字段传入
String sessionKey = SM4Util.getSM4GCMSessionKey();
// 对sessionKey进行保护, 使用服务端提供的公钥进行加密
String encryptSessionKey = Sm2Utils.encrypt(DemoKeys.HW_PAY_PUBLIC_KEY_FOR_APP, sessionKey);
// 加密请求敏感字段
String encryptedTerminalString = SM4Util.getSM4GCMContent(sessionKey, terminalString);
// 把加密后的terminal设置到请求body
request.setTerminal(encryptedTerminalString);