/** * * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个 * appid、mchid、spbill_create_ip、nonce_str不需要填入 * @param WxPayOrderQuery $inputObj * @param int $timeOut * @throws WxPayException * @return 成功时返回,其他抛异常 */ public static function orderQuery($inputObj, $timeOut = 6) { $url = "https://api.mch.weixin.qq.com/pay/orderquery"; //检测必填参数 if (!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) { throw new WxPayException("订单查询接口中,out_trade_no、transaction_id至少填一个!"); } $inputObj->SetAppid(WxPayConfig::APPID); //公众账号ID $inputObj->SetMch_id(WxPayConfig::MCHID); //商户号 $inputObj->SetNonce_str(self::getNonceStr()); //随机字符串 $inputObj->SetSign(); //签名 $xml = $inputObj->ToXml(); $startTimeStamp = self::getMillisecond(); //请求开始时间 $response = self::postXmlCurl($xml, $url, false, $timeOut); $result = WxPayResults::Init($response); self::reportCostTime($url, $startTimeStamp, $result); //上报请求花费时间 return $result; }
public function wx_notify(){ require_once getcwd()."/Wxpay/lib/WxPay.Api.php"; $rrmodel = M('record_remark'); $rrdata['type'] = 2; $rrdata['rid'] = 0; if($_POST){ $rrdata['info'] = serialize($_POST); }else{ $rrdata['info'] = file_get_contents('php://input'); } $xml = $GLOBALS['HTTP_RAW_POST_DATA']; $xml = '<xml><appid><![CDATA[wx2be892adc35c8c7d]]></appid> <attach><![CDATA[test]]></attach> <bank_type><![CDATA[CFT]]></bank_type> <cash_fee><![CDATA[1]]></cash_fee> <fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[N]]></is_subscribe> <mch_id><![CDATA[1241883502]]></mch_id> <nonce_str><![CDATA[wtk0c2zlxxx9yk10poxa4zpcrhr2prql]]></nonce_str> <openid><![CDATA[oNjyPs7mmMVX7xf0qsScaRq4RRpY]]></openid> <out_trade_no><![CDATA[124188350220150604143444]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[D07549833387139CF68B97D6A50B4E6B]]></sign> <time_end><![CDATA[20150604143150]]></time_end> <total_fee>1</total_fee> <trade_type><![CDATA[JSAPI]]></trade_type> <transaction_id><![CDATA[1009530519201506040206996268]]></transaction_id> </xml>'; $array_data = WxPayResults::FromXml($xml); dump(unserialize('a:17:{s:5:"appid";s:18:"wx2be892adc35c8c7d";s:6:"attach";s:4:"test";s:9:"bank_type";s:3:"CFT";s:8:"cash_fee";s:1:"1";s:8:"fee_type";s:3:"CNY";s:12:"is_subscribe";s:1:"Y";s:6:"mch_id";s:10:"1241883502";s:9:"nonce_str";s:32:"ciqfhznmzsxcxwl6j9olwio9y3jeumkz";s:6:"openid";s:28:"oNjyPs7mmMVX7xf0qsScaRq4RRpY";s:12:"out_trade_no";s:24:"124188350220150604170134";s:11:"result_code";s:7:"SUCCESS";s:11:"return_code";s:7:"SUCCESS";s:4:"sign";s:32:"F35BD87FAC7D03C4B53AD0A4539A06C7";s:8:"time_end";s:14:"20150604165822";s:9:"total_fee";s:1:"1";s:10:"trade_type";s:5:"JSAPI";s:14:"transaction_id";s:28:"1009530519201506040207633897";}'));exit; dump($array_data);exit; //微信签名认证 $result = WxPayResults::Init2($xml); if($result){ $rrdata['error_msg'] = '签名通过'; }else{ $rrdata['error_msg'] = '签名错误'; return false; } $transaction_id = $array_data['transaction_id']; $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); $result = WxPayApi::orderQuery($input); dump(serialize($result));exit; $rrdata['rstatus'] = 0; $rrdata['order_id'] = 0;//微信订单 $rrdata['oid'] = $array_data['out_trade_no'];//我方订单 $rrdata['create_time'] = time(); $remark_id = $rrmodel->add($rrdata); //echo "SUCCESS";EXIT; }
public function _initialize(){ require_once C('INTERFACE_PATH')."Wxpay/lib/WxPay.Api.php"; require_once C('INTERFACE_PATH')."Wxpay/unit/WxPay.JsApiPay.php"; $xml = $GLOBALS['HTTP_RAW_POST_DATA']; $xml = '<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <device_info><![CDATA[1000]]></device_info> <nonce_str><![CDATA[FvYSnPuFFPkAr77M]]></nonce_str> <sign><![CDATA[63238039D6E43634297CF2A6EB5F3B72]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></openid> <is_subscribe><![CDATA[Y]]></is_subscribe> <trade_type><![CDATA[JSAPI]]></trade_type> <bank_type><![CDATA[CCB_CREDIT]]></bank_type> <total_fee>100</total_fee> <coupon_fee>0</coupon_fee> <fee_type><![CDATA[CNY]]></fee_type> <transaction_id><![CDATA[1008450740201407220000058756]]></transaction_id> <out_trade_no><![CDATA[20150519975154104261,20150529101555658541]]></out_trade_no> <attach><![CDATA[pay_type|2]]></attach> <time_end><![CDATA[20140722160655]]></time_end> </xml>'; /* $xml = '<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <device_info><![CDATA[1000]]></device_info> <nonce_str><![CDATA[sthBJ9QyUG6vkrjJ]]></nonce_str> <sign><![CDATA[6277A96D7875D4FF23AA7B6A4C3046AB]]></sign> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[PAYERROR]]></err_code> <err_code_des><![CDATA[支付错误]]></err_code_des> </xml> '; */ $this->data = WxPayResults::FromXml($xml); //dump($this->data);exit; $checkSign = WxPayResults::Init2($xml); if($checkSign){ $transaction_id = $this->data['transaction_id']; $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); $order = WxPayApi::orderQuery($input); if($order['result_code']=='SUCCESS'){ $order_status = 1; $error_msg = '订单验证成功'; }else{ $order_status = 0; $error_msg = serialize($order); } }else{ $error_msg = '签名错误'; } //配置 if($checkSign !== FALSE){ //记录传值信息 $rrmodel = M('pay_notify'); $rrdata['type'] = 2; $rrdata['rid'] = 0; $rrdata['info'] = $xml; $rrdata['error_msg'] = $error_msg; $rrdata['rstatus'] = 0; $rrdata['order_id'] = $this->data['transaction_id'];//微信订单 $rrdata['oid'] = $this->data['out_trade_no'];//我方订单 $rrdata['create_time'] = time(); $remark_id = $rrmodel->add($rrdata); $this->remark_id = $remark_id; if($order_status==0){ //订单支付失败 //exit; } //echo $rrmodel->getlastsql();exit; }else{ $returnXml = $notify->returnXml(); //Common_util_pub::postXmlSSLCurl($returnXml,'localhost'); //dump($returnXml); $rrmodel = M('pay_notify'); $rrdata['type'] = 2; $rrdata['rid'] = 0; $rrdata['info'] = $xml; $rrdata['error_msg'] = $error_msg; $rrdata['rstatus'] = 0; $rrdata['order_id'] = $this->data['transaction_id'];//微信订单 $rrdata['oid'] = $this->data['out_trade_no'];//我方订单 $rrdata['create_time'] = time(); $rrmodel->add($rrdata); //exit; } $this->ReplyNotify(); }