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);
这个方法来处理订单相关的逻辑。