Example #1
0
 /**
  * 
  * 查询订单,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;
 }
Example #2
0
  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();
  }