appid;$postData['mch_id']=$this->mchId;$postData['nonce_str']=$this->createNoncestr();$postData['body']='应用支付';$postData['out_trade_no']=date("YmdHis");$postData['total_fee']=$params['total_fee'];$postData["spbill_create_ip"]=$_SERVER["REMOTE_ADDR"];$postData['notify_url']=$params['notify_url'];$post数据ta['交易类型']='APP';$postData["sign"]=$this->createSign($postData);//将数组转换为xml格式$xmlData=$this->arrayToXml($postData);$res=$this->curl_post($this->payUrl,$xmlData);$res=simplexml_load_string($res,NULL,LIBXML_NOCDATA);//生成正式的支付参数$data=array();$data['appid']=$this->appid;$data['noncestr']=$postData['nonce_str'];//微信修改接口参数,否则IOS报解析失败$data['package']='Sign=WXPay';$data['partnerid']=$this->mchId;$data['prepayid']=(string)$res->prepay_id;$data['时间戳']=时间();$data['sign']=$this->createSign($data);//踩坑,这里必须重新签名,不能用上面的,也不能用返回的return$data;}//发送curlpostprivatefunctioncurl_post($url='',$param=array(),$headers=array()){if(empty($url)){返回false;}$ch=curl_init();//初始化curlcurl_setopt($ch,CURLOPT_URL,$url);//抓取指定网页curl_setopt($ch,CURLOPT_HEADER,0);//设置headercurl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//要求结果为字符串并输出到屏幕curl_setopt($ch,CURLOPT_POST,1);//后提交方式curl_setopt($ch,CURLOPT_POSTFIELDS,$param);如果($headers)curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);$data=curl_exec($ch);//运行curlcurl_close($ch);return$data;}//生成签名privatefunctioncreateSign($params){//签名步骤一:按字典顺序对参数进行排序ksort($params);$String=$this->formatBizQueryParaMap($params,false);//签名步骤2:在字符串后添加KEY$String=$String."&key=".$this->key;//签名步骤3:MD5加密$String=md5($String);//签名步骤4:将所有字符转换为大写$result_=strtoupper($String);return$result_;}//按字典顺序对参数进行排序privatefunctionformatBizQueryParaMap($params,$urlencode=false){ksort($params);$buff='';foreach($paramsas$key=>$val){$buff.=$key.“=”。$瓦尔。"&";}$reqPar=substr($buff,0,strlen($buff)-1);return$reqPar;}//将数组转为xml格式privatefunctionarrayToXml($arr){$xml="
