在商户服务器和支付网关服务器发起支付请求时,如何校验安全性。
通常采用下面的方式:
一、签名和验签 : Sign
如:使用SHA256或MD5进行数字签名
签名计算如下:
1、按字母顺序对参数进行排序:
支付请求参数:a b c d e f
2、对于每个参数值,将任何特殊字符<>“’()\”替换为空格。
3、计算已排序值集的MD5
function sha256($str)
{
return strtoupper(hash("sha256",$str));
}
MAC 公钥Sign,如:
MAC_KEY = "AAAAAAABBBBBBBBBB";
function MacCalculate($response)
{
$string = $response['a'] . $response['b'] . $response['c'] . $response['d'] . MAC_KEY;
$hashString = hash("md5", $string);
if ($hashString == $response['mac'])
{
return true;
}
return false;
}
验证:
在支付网关返回的同步、异步参数里,获取数据进行验证签名
二、Token机制 : Token
1、get Token Auth API 获取token
2、发起支付请求字段+ token