签名算法(通用)
<h5>简要描述</h5>
<ul>
<li>签名算法(通用)</li>
</ul>
<h5>签名算法</h5>
<ul>
<li>
<p>签名生成的通用步骤如下:</p>
</li>
<li>
<p>第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串。</p>
</li>
<li>
<p>第二步,在stringA最后拼接上应用key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。</p>
</li>
<li>stringSignTemp=”key1=value1&key2=value2&………………&key=商户密钥” sign=MD5(stringSignTemp).toUpperCase()</li>
</ul>
<h5>签名算法实现示例(php)</h5>
<pre><code>/**
* 创建签名
* @param $Md5key
* @param $list
* @return string
*/
protected function createSign($Md5key, $list)
{
ksort($list);
$md5str = "";
foreach ($list as $key => $val) {
if (!empty($val) && $key != 'pay_md5sign') {
$md5str = $md5str . $key . "=" . $val . "&";
}
}
$sign = strtoupper(md5($md5str . "key=" . $Md5key));
return $sign;
}</code></pre>
<h5>印度</h5>
<ul>
<li>印度支付签名示例</li>
</ul>
<pre><code>stringSignTemp="pay_amount=支付金额&pay_bankcode=904&pay_callbackurl=页面跳转返回地址&pay_memberid=商户号&pay_notifyurl=支付异步通知地址&pay_orderid=订单号&key=商户支付密钥"
sign=MD5(stringSignTemp).toUpperCase()</code></pre>
<ul>
<li>印度代付签名示例</li>
</ul>
<pre><code>stringSignTemp="accountname=姓名&bankname=IDPT0001&cardnumber=卡号&email=邮箱&mchid=商户号&mobile=手机号&money=代付金额¬ifyurl=代付异步通知地址&out_trade_no=订单号&province=用户IFSC码&key=商户代付密钥"
sign=MD5(stringSignTemp).toUpperCase()</code></pre>
<p>肯尼亚</p>
<ul>
<li>肯尼亚支付签名示例</li>
</ul>
<pre><code>stringSignTemp="pay_amount=支付金额&pay_applydate=下单时间&pay_bankcode=931&pay_memberid=商户号&pay_notifyurl=支付异步通知地址&pay_orderid=订单号&pay_phone=手机号&key=商户支付密钥"
sign=MD5(stringSignTemp).toUpperCase()</code></pre>
<ul>
<li>肯尼亚代付签名示例</li>
</ul>
<pre><code>stringSignTemp="mchid=商户号&mobile=手机号&money=金额¬ifyurl=异步通知地址&out_trade_no=订单号&key=代付密钥"
sign=MD5(stringSignTemp).toUpperCase()</code></pre>