签名算法(通用)

简要描述
  • 签名算法(通用)
签名算法
  • 签名生成的通用步骤如下:

  • 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串。

  • 第二步,在stringA最后拼接上应用key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

  • stringSignTemp=”key1=value1&key2=value2&………………&key=商户密钥” sign=MD5(stringSignTemp).toUpperCase()

签名算法实现示例(php)
/**
     * 创建签名
     * @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;
    }
印度
  • 印度支付签名示例
stringSignTemp="pay_amount=支付金额&pay_bankcode=904&pay_callbackurl=页面跳转返回地址&pay_memberid=商户号&pay_notifyurl=支付异步通知地址&pay_orderid=订单号&key=商户支付密钥"

sign=MD5(stringSignTemp).toUpperCase()
  • 印度代付签名示例
stringSignTemp="accountname=姓名&bankname=IDPT0001&cardnumber=卡号&email=邮箱&mchid=商户号&mobile=手机号&money=代付金额¬ifyurl=代付异步通知地址&out_trade_no=订单号&province=用户IFSC码&key=商户代付密钥"

sign=MD5(stringSignTemp).toUpperCase()

肯尼亚

  • 肯尼亚支付签名示例
stringSignTemp="pay_amount=支付金额&pay_applydate=下单时间&pay_bankcode=931&pay_memberid=商户号&pay_notifyurl=支付异步通知地址&pay_orderid=订单号&pay_phone=手机号&key=商户支付密钥"

sign=MD5(stringSignTemp).toUpperCase()
  • 肯尼亚代付签名示例
stringSignTemp="mchid=商户号&mobile=手机号&money=金额¬ifyurl=异步通知地址&out_trade_no=订单号&key=代付密钥"

sign=MD5(stringSignTemp).toUpperCase()