业务背景
在和支付方对接支付接口时,商户发送报文时需要根据订单内容和商户数字证书对订单内容进行签名。用于身份校验和防止数据被篡改。
这里涉及到如何使用支付接口提供商颁发的数字证书进行签名。
workflow
- 根据支付接口文档,按文档规则得到带签名字符串
- 使用PHP进行签名
签名代码
function build_sign($sign_str){
//商户 pfx 证书
$private_key_file = 'pfx证书文件路径';
$pkcs12 = file_get_contents($private_key_file);
$certs = $signMsg = null;
$privkeypass = '证书对应的秘钥字符串';
openssl_pkcs12_read($pkcs12, $certs, $privkeypass);
$prikeyid = $certs['pkey']; //私钥
openssl_sign($sign_str, $signMsg, $prikeyid, OPENSSL_ALGO_SHA256); //RSA_SHA256
return base64_encode($signMsg); //base64转码加密信息
}