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

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

微信支付成功后我们可通过设置的回调地址中来处理
PHP处理微信支付成功后的回调处理_第1张图片

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 = '';
		} else {
			$str = '';
		}
		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);

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

你可能感兴趣的:(PHP处理微信支付成功后的回调处理)