/** * * 支付结果通用通知 */ public static function notify($callback, &$msg) { //获取通知的数据 $xml = $GLOBALS['HTTP_RAW_POST_DATA']; //如果返回成功则验证签名 try { $wxpay_data_base = new WxPayDataBase(); $result = $wxpay_data_base->FromXml($xml); $result = $wxpay_data_base->GetValues(); } catch (WxPayException $e) { $msg = $e->errorMessage(); return false; } return call_user_func($callback, $result); }
/** * 设置签名 * @param string $value **/ public function SetSign() { $this->values['sign'] = parent::SetSign(); }
//参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay $timestamp = time(); $arr = array(); //公众账号ID $arr['appid'] = trim(WxPayConfig::APPID); //商户号 $arr['partnerid'] = trim(WxPayConfig::MCHID); //预支付交易会话标识 $arr['prepayid'] = $order['prepay_id']; //包的格式 $arr['package'] = 'Sign=WXPay'; //随机字符串 $arr['noncestr'] = $order['nonce_str']; //时间戳 $arr['timestamp'] = $timestamp; $obj = new WxPayDataBase(); $obj->SetValues($arr); $sign = $obj->SetSign(); $data = array(); $data['return_code'] = $order['return_code']; $data['return_msg'] = $order['return_msg']; $data['prepay_id'] = $order['prepay_id']; $data['trade_type'] = $order['trade_type']; $data['nonce_str'] = $order['nonce_str']; $data['timestamp'] = $timestamp; $data['sign'] = $sign; $data['out_trade_no'] = $outTradeNo; $order = json_encode($order); file_put_contents("log.txt", "\n\n预支付成功----{$order}", FILE_APPEND); echo json_encode(array('code' => 1, 'msg' => '成功', 'data' => $data)); }