appid;//微信appid $mch_id = $xmlObj->mch_id; //商户号 $nonce_str = $xmlObj->nonce_str;//随机字符串 $sign = $xmlObj->sign;//签名 $result_code = $xmlObj->result_code;//业务结果 $openid = $xmlObj->openid;//用户标识 $is_subscribe = $xmlObj->is_subscribe;//是否关注公众帐号 $trace_type = $xmlObj->trade_type;//交易类型,JSAPI,NATIVE,APP $bank_type = $xmlObj->bank_type;//付款银行,银行类型采用字符串类型的银行标识。 $total_fee = $xmlObj->total_fee;//订单总金额,单位为分 $fee_type = $xmlObj->fee_type;//货币类型,符合ISO4217的标准三位字母代码,默认为人民币:CNY。 $transaction_id = $xmlObj->transaction_id;//微信支付订单号 $out_trade_no = $xmlObj->out_trade_no;//商户订单号 $attach = $xmlObj->attach;//商家数据包,原样返回 $time_end = $xmlObj->time_end;//支付完成时间 $cash_fee = $xmlObj->cash_fee; $return_code = $xmlObj->return_code; if(!empty($_SESSION["SHOPUSER"])){ php_toheader("../../wxresult.php?a=pay"); } if($return_code =="SUCCESS"){ //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //进行签名验证B $signA ="appid=$appid&mch_id=$mch_id&nonce_str=$nonce_str&transaction_id=$transaction_id"; $strSignTmp = $signA."&key=".$wxpay[2]; //拼接字符串 注意顺序微信有个测试网址 顺序按照他的来 直接点下面的校正测试 包括下面XML 是否正确 $sign = strtoupper(MD5($strSignTmp)); // MD5 后转换成大写 $post_data = " $appid $mch_id $nonce_str $transaction_id $sign ";//拼接成XML 格式 $url = "https://api.mch.weixin.qq.com/pay/orderquery";//微信传参地址 $dataxml = curl_post_https($url,$post_data); //后台POST微信传参地址 同时取得微信返回的参数 POST 方法我写下面了 $objectxml = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA); //将微信返回的XML 转换成数组 //进行签名验证E if($objectxml["trade_state"]=="SUCCESS"){ //自己逻辑代码B $sql="select * from yjcode_dingdang where ddbh='".$out_trade_no."' and ifok=0";mysql_query("SET NAMES 'gbk'");$res=mysql_query($sql); if($row=mysql_fetch_array($res)){ if(1==$row[ifok]){echo "success";exit;} $sj=date("Y-m-d H:i:s"); $uip=$_SERVER["REMOTE_ADDR"]; updatetable("yjcode_dingdang","sj='".$sj."',uip='".$uip."',alipayzt='TRADE_SUCCESS',ddzt='交易成功',ifok=1 where id=".$row[id]); $money1=$row[money1]; PointIntoM($row[userid],"微信充值".$money1."元",$money1,4,$transaction_id); PointUpdateM($row[userid],$money1); if(!empty($row[sxf])){ $sxf=$row[sxf]*(-1); PointIntoM($row[userid],"支付接口手续费",$sxf,0,$transaction_id); PointUpdateM($row[userid],$sxf); } echo "success";exit; } //自己逻辑代码E } echo success; } ?>