PHP处理微信支付成功后的回调处理

PHP处理微信支付成功后的回调处理

微信支付成功后我们可通过设置的回调地址中来处理
在这里插入图片描述

public function wx_notify(){
		$xml = file_get_contents("php://input");

		//xml数据转数组
		$data = json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);
		//保存微信服务器返回的签名sign
		$data_sign = $data['sign'];
		//sign不参与签名算法
		unset($data['sign']);
		$sign = $this->makeSign($data);

		//判断签名是否正确,判断支付状态
		if (($sign===$data_sign) && ($data['return_code'] == 'SUCCESS') && ($data['result_code'] == 'SUCCESS')) {
			$results = $data;
			//获取服务器返回的数据
			$order_sn = $data['out_trade_no'];	//订单号
			$order_id = $data['attach'];		//附加参数,选择传递订单ID
			$openid = $data['openid'];			//付款人openID
			$total_fee = $data['total_fee'];	//付款金额

			//更新状态
			$this->updatePsDB($order_sn,$order_id,$openid,$total_fee);
		} else {
			$results = false;
		}

		//返回状态给微信服务器
		if ($results) {
			$str = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
		} else {
			$str = '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>';
		}
		echo $str;
		return $results;
	}

签名验证

/*生成签名*/
protected function makeSign($data){
	//获取微信支付秘钥
	include_once "./WxPay.Api.php";
	$key = \WxPayConfig::KEY;
	//去空
	$data = array_filter($data);
	//字典排序
	ksort($data);
	$string_a = http_build_query($data);
	$string_a = urldecode($string_a);
	$string_sign_temp = $string_a."&key=".$key;
	$sign = md5($string_sign_temp);
	$result = strtoupper($sign);
	return $result;
}

最后我们可通过

$this->updatePsDB($order_sn,$order_id,$openid,$total_fee);

这个方法来处理订单相关的逻辑。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值