/**
  * 支付签名(paySign)生成方法
  *
  * @param array $para            
  * @throws Exception
  * @return string
  */
 public function getPaySign(array $para)
 {
     // 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,
     // 使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。
     // 这里需要注意的是所有参数名均为小写字符,例如appId 在排序后字符串则为appid;
     // 将所有key改为小写字符
     $paraFilter = array();
     foreach ($para as $key => $value) {
         $paraFilter[strtolower($key)] = $value;
     }
     // 除去数组中的空值和签名参数
     $paraFilter = Helpers::paraFilter($paraFilter);
     // 增加或修改appkey
     $paraFilter['appkey'] = $this->getPaySignKey();
     // 对数组排序
     $paraFilter = Helpers::argSort($paraFilter);
     $string1 = Helpers::createLinkstring($paraFilter);
     // 对string1 作签名算法,字段名和字段值都采用原始值(此时package 的value 就对应了
     // 使用2.6 中描述的方式生成的package),不进行URL 转义。
     // 具体签名算法为paySign =SHA1(string1)。
     $paySign = sha1($string1);
     return $paySign;
 }
Exemple #2
0
 /**
  * Sign签名生成方法
  *
  * @param array $para            
  * @throws Exception
  * @return string
  */
 public function getSign(array $para)
 {
     /**
      * a.除sign 字段外,对所有传入参数按照字段名的ASCII 码从小到大排序(字典序)后,
      * 使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1,
      * 注意: 值为空的参数不参与签名 ;
      */
     // 过滤不参与签名的参数
     $paraFilter = Helpers::paraFilter($para);
     // 对数组进行(字典序)排序
     $paraFilter = Helpers::argSort($paraFilter);
     // 进行URL键值对的格式拼接成字符串string1
     $string1 = Helpers::createLinkstring($paraFilter);
     /**
      * b.
      * 在string1 最后拼接上key=Key(商户支付密钥 ) 得到stringSignTemp 字符串,
      * 并对stringSignTemp 进行md5 运算,再将得到的字符串所有字符转换为大写,得到sign 值signValue。
      */
     $sign = $string1 . '&key=' . $this->getKey();
     $sign = strtoupper(md5($sign));
     return $sign;
 }
Exemple #3
0
 /**
  * 签名(Sign)生成方法
  *
  * @param array $para            
  * @throws Exception
  * @return string
  */
 public function getSign(array $para)
 {
     // a.除sign 字段外,对所有传入参数按照字段名的ASCII 码从小到大排序(字典序)后,
     // 使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1;
     // 除去数组中的空值和签名参数
     $paraFilter = Helpers::paraFilter($para);
     // 对数组排序
     $paraFilter = Helpers::argSort($paraFilter);
     $string1 = Helpers::createLinkstring($paraFilter);
     // b. 在string1 最后拼接上key=paternerKey 得到stringSignTemp 字符串,
     // 并对stringSignTemp 进行md5 运算,再将得到的字符串所有字符转换为大写,得到sign 值signValue。
     $sign = $string1 . '&key=' . $this->getPartnerKey();
     $sign = strtoupper(md5($sign));
     return $sign;
 }