微信APP统一支付二签方法
微信APP支付二签方法
/** * 2 二次签名返回给APP */ $signParam = array( 'appid' => $result['appid'], 'partnerid' => $result['mch_id'], 'prepayid' => $result['prepay_id'], 'package' => 'Sign=WXPay', 'noncestr' => $wxpay->createNoncestr(), 'timestamp' => time(), //系统时间戳,精确到秒 ); $signParam['sign'] = $wxpay->getSign($signParam, $API_KEY); //转JSON并返回 echo json_encode($signParam); /** * 作用:产生随机字符串,不长于32位 */ public function createNoncestr($length = 32) { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } /** * 作用:生成签名(MD5形式) */ public function getSign($Obj, $api_key) { foreach ($Obj as $k => $v) { $Parameters[$k] = $v; } //签名步骤一:按字典序排序参数 ksort($Parameters); $String = $this->formatBizQueryParaMap($Parameters, false); //签名步骤二:在string后加入KEY $String = $String . "&key=" . $api_key; //签名步骤三:MD5加密 $String = md5($String); //签名步骤四:所有字符转为大写 $result_ = strtoupper($String); return $result_; }