protected function get_cft_package() { try { if (null == $this->partnerKey || "" == $this->partnerKey) { throw new SDKRuntimeException("密钥不能为空!" . "<br>"); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $paraString = $commonUtil->formatQueryParaMap($this->parameters, true); $md5SignUtil = new MD5SignUtil(); return $paraString . "&sign=" . $md5SignUtil->sign($unSignParaString, $commonUtil->trimString($this->partnerKey)); } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
protected function verifySign() { try { if (null == $this->parameters) { throw new SDKRuntimeException("parameters为空!" . "<br>"); } $sign = $this->getParameter("sign"); if (null == $sign) { throw new SDKRuntimeException("sign为空!" . "<br>"); } $charSet = $this->getParameter("input_charset"); if (null == $charSet) { $charSet = Constants::DEFAULT_CHARSET; } $signStr = CommonUtil::formatQueryParaMap($this->parameters, false); if (null == $this->secretKey) { throw new SDKRuntimeException("签名key为空!" . "<br>"); } if (!MD5SignUtil::verifySignature($signStr, $sign, $this->secretKey)) { throw new SDKRuntimeException("返回值签名验证失败!" . "<br>"); } return true; } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
function genParaStr() { try { if (null == $this->getAppid()) { throw new SDKRuntimeException("appid不能为空!" . "<br>"); } if (null == $this->getSecretKey()) { throw new SDKRuntimeException("密钥不能为空!" . "<br>"); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $paraString = $commonUtil->formatQueryParaMap($this->parameters, true); $md5SignUtil = new MD5SignUtil(); return $paraString . "&sign=" . $md5SignUtil->sign($unSignParaString, $commonUtil->trimString($this->getSecretKey())); } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
public function genParaStr() { try { if (NULL == $this->getAppid()) { throw new SDKRuntimeException('appid不能为空!' . '<br>'); } if (NULL == $this->getSecretKey()) { throw new SDKRuntimeException('密钥不能为空!' . '<br>'); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $paraString = $commonUtil->formatQueryParaMap($this->parameters, true); $md5SignUtil = new MD5SignUtil(); return $paraString . '&sign=' . $md5SignUtil->sign($unSignParaString, $commonUtil->trimString($this->getSecretKey())); } catch (SDKRuntimeException $e) { exit($e->errorMessage()); } }
protected function get_sign() { try { if (null == PARTNERKEY || "" == PARTNERKEY) { throw new SDKRuntimeException(""); } if ($this->check_sign_parameters() == false) { throw new SDKRuntimeException(""); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $md5SignUtil = new MD5SignUtil(); return $md5SignUtil->sign($unSignParaString, $commonUtil->trimString(PARTNERKEY)); } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
/** 例如: appid: wxd111665abv58f4f mch_id: 10000100 device_info: 1000 Body: test nonce_str: ibuaiVcKdpRxkhJA 第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下: stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_i d=10000100&nonce_str=ibuaiVcKdpRxkhJA"; 第二步:拼接支付密钥: stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A 9CF3B7" */ protected function get_sign() { define('PARTNERKEY', "4YULIIKklHlMVnp5sVZek2KqVTihAhLt"); try { if (null == PARTNERKEY || "" == PARTNERKEY) { throw new SDKRuntimeException("密钥不能为空!" . "<br>"); } if ($this->check_sign_parameters() == false) { //检查生成签名参数 throw new SDKRuntimeException("生成签名参数缺失!" . "<br>"); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $md5SignUtil = new MD5SignUtil(); return $md5SignUtil->sign($unSignParaString, $commonUtil->trimString(PARTNERKEY)); } catch (SDKRuntimeException $e) { // echo 'get sign error';die; die($e->errorMessage()); } }
function get_sign($obj) { try { if (null == $this->partnerkey || "" == $this->partnerkey) { throw new SDKRuntimeException("密钥不能为空!" . "<br>"); } $commonUtil = new CommonUtil(); ksort($obj); $unSignParaString = $commonUtil->formatQueryParaMap($obj, false); $paraString = $commonUtil->formatQueryParaMap($obj, true); return sha1($paraString); } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
/** * 例如: * appid: wxd930ea5d5a258f4f * mch_id: 10000100 * device_info: 1000 * Body: test * nonce_str: ibuaiVcKdpRxkhJA * 第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下: * stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_i * d=10000100&nonce_str=ibuaiVcKdpRxkhJA"; * 第二步:拼接支付密钥: * stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" * sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A * 9CF3B7" */ protected function get_sign() { try { if (null == $this->apiSecret || "" == $this->apiSecret) { throw new SDKRuntimeException("密钥不能为空!" . "<br>"); } if ($this->check_sign_parameters() == false) { //检查生成签名参数 throw new SDKRuntimeException("生成签名参数缺失!" . "<br>"); } $commonUtil = new CommonUtil(); ksort($this->parameters); $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); $md5SignUtil = new MD5SignUtil(); return $md5SignUtil->sign($unSignParaString, $commonUtil->trimString($this->apiSecret)); } catch (SDKRuntimeException $e) { die($e->errorMessage()); } }
public function orderquery($access_token, $trade) { $url = 'https://api.weixin.qq.com/pay/orderquery?access_token=' . $access_token; // generate package $pkg['out_trade_no'] = $trade['order_sn']; $pkg['partner'] = $this->PARTNERID; $commonUtil = new CommonUtil(); ksort($pkg); $unSignParaString = $commonUtil->formatQueryParaMap($pkg, false); $md5SignUtil = new MD5SignUtil(); $pkg_sign = $md5SignUtil->sign($unSignParaString, $commonUtil->trimString($this->PARTNERKEY)); $package_str = $unSignParaString . '&sign=' . strtoupper($pkg_sign); $data["appid"] = $this->APPID; $data["package"] = $package_str; $data["timestamp"] = strval(time()); $data['app_signature'] = $this->get_biz_sign($data); $data['sign_method'] = 'sha1'; $json_data = json_encode($data); $ret = $this->sendPost($url, $json_data); Log::record('wxpay orderquery order_sn:' . $trade['order_sn'] . ' res:' . print_r($ret, true), Log::INFO); Log::save(); return $ret; }