微信支付

做了两天微信支付,各种问题,还好一切已经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);
}
原文地址:https://www.cnblogs.com/xiaoxiaomengxiangjia/p/6110337.html