让代码更简单

当前位置:代码狗 > 经验教程 > 实用教程 > 正文

微信支付PHP开发教程五关闭订单

前面我们已经完成了微信支付的正常下单,并且能够正常收款。如果用户在支付过程中放弃了购买行为,那么为了保证订单正确,微信官方要求我们关闭订单,据我测试关不关都没多大影响,可能运气好,哈哈。在开发中切记不能抱有侥幸心理,特别是涉及到钱的事儿,一定要谨慎,严格按照官方要求去做。下面来学习下如果关闭微信支付订单吧,本文接前面教程,不清楚的地方自己去看。

商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。

注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。

微信支付

微信支付-关闭订单

接口地址:https://api.mch.weixin.qq.com/pay/closeorder

是否需要证书:否

文档地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_3

请求参数:

字段名 变量名 必填 类型
公众账号ID appid String(32)
商户号 mch_id String(32)
商户订单号 out_trade_no String(32)
随机字符串 nonce_str String(32)
签名 sign String(32)
签名类型 sign_type String(32)

返回结果

字段名 变量名 必填 类型
返回状态码 return_code String(16)
返回信息 return_msg String(128)

更多返回信息自己看文档,以后就不多介绍了。

PHP关闭微信订单源码

//关闭订单
	public function closeorder($order){
		$apiparams=[
		'appid'=>self::appid,
		'mch_id'=>self::mch_id,
		'out_trade_no'=>$order,
		'nonce_str'=>Util::getNonceStr(),
		];
		$apiparams['sign']=$this->GetSign($apiparams);
		
		$xml=Util::ArrToXml($apiparams);
		$result=Util::postXmlCurl($xml,'https://api.mch.weixin.qq.com/pay/closeorder');
		$arr=Util::XmlToArr($result);
		if($arr['return_code']=='SUCCESS'){
			file_put_contents('./log.txt',$result);
			return 'success';
		}else{
			file_put_contents('./error.txt',$result);
			return false;
		}
	}

这段源码是接前面写的支付类的,把这个关闭订单方法放进支付类中进行调用即可。该方法执行结果将会在当前文件夹中生成一个log.txt文件,里面记录了本次请求的结果。如果发生错误,可以通过阅读该文件中的记录内容进行排查!

感觉很棒!可以赞赏支持我哟~

赞(1) 打赏

评论 2

  1. #1

    什么时候出免签约工具

    奶爸de笔记6个月前 (06-01)回复
    • 你想多了,免签,我都没得用。

      代码狗6个月前 (06-01)回复
×

请作者吃根烤肠!

支付宝