做了两天微信支付,各种问题,还好一切已经OK。
一:记录下的坑
1,<a href="http://aaa.sss.com/Home/Wxpay/new_pay"><span class="submit">立即开通</span></a>
这个链接背后不能跟参数,如果跟了参数,微信返回错误
7,微信支付成功后调用的接口,同时写入数据库:
微信支付成功后调用接口: /** 企业:支付结果通知 (第三步:支付成功回调) * @param 接受微信服务器参数 * @author wymDon 2016.11.22 */ function firmnotify_post() { /*获取微信返回数据*/ $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //写入日志 $this->logger($postStr); $msg = $this->wechatpay->xmlstr_to_array($postStr); if($msg['return_code'] == 'SUCCESS' && $msg['result_code'] == 'SUCCESS') { /* 检测签名是否一致 */ $remote_sign = $msg['sign']; unset($msg['sign']); $s = $this->wechatpay->getSign($msg); if($s != $remote_sign) { $this->response(array('return_code'=>'FAIL','return_msg'=>'签名错误'), REST_Controller::HTTP_OK); exit; } /* 获取商户服务器订单 */ $orders = $this->order->getOrderBySid($msg['out_trade_no']); if(!empty($orders) && $orders['pay_status'] != '2') { $data = array( 'pay_status'=>'2', 'pay_time'=>$msg['time_end'], 'transaction_id'=>$msg['transaction_id'], 'openid'=>$msg['openid'], ); $this->order->updateOrder($data,$where = array('order_sn' => $msg['out_trade_no'])); /* 更新会员到期日期 */ $this->firm->updateFirmById($orders['user_id'],array('expire_time'=>strtotime('+1 months'))); $this->response(array('return_code'=>'SUCCESS','return_msg'=>'OK'), REST_Controller::HTTP_OK); } $this->response(array('return_code'=>'SUCCESS','return_msg'=>'OK'), REST_Controller::HTTP_OK); } else { $this->response(array('return_code'=>'FAIL','return_msg'=>'NO DATA'), REST_Controller::HTTP_OK); } } //日志记录 function logger($log_content) { $max_size = 100000; $log_filename = "/alidata/www/xml.txt"; if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);} file_put_contents($log_filename, date('H:i:s')." ".$log_content." ", FILE_APPEND); }