微信回调接口比较麻烦一点就是不方便测试

微信支付回调函数都是使用以下变量获取POST数据:

php配置中,必须启用 always_populate_raw_post_data//php.ini 配置

always_populate_raw_post_data = On

不过一般都是开启的,所以暂时不用管它。

由于之前的项目PHP版本为:php<7.0,所以使用 $GLOBALS['HTTP_RAW_POST_DATA'] 还是OK的;

项目PHP版本升级到7.0之后的版本,微信支付回调使用上面的方法 ,获取不到数据

解决的方法也很简单,只要使用php://input来代替就行。

比如$data = $GLOBALS['HTTP_RAW_POST_DATA'];

改为$data = file_get_contents('php://input');

特别提醒如果你的微信支付,小程序支付,app支付中,以前使用HTTP_RAW_POST_DATA来获取微信支付异步处理结果的,升级到php7后,一定要记得按照上面的方法改过来,

否则有些功能使用不了。

原因是PHP 7版本中已经移除了这个全局变量:'HTTP_RAW_POST_DATA',用 php://input 替代,使用 always_populate_raw_post_data 会导致在填充 $HTTP_RAW_POST_DATA 时产生 E_DEPRECATED 错误。

亲测

方法完整代码:public function callback(){

// $xml = $GLOBALS['HTTP_RAW_POST_DATA'];

$xml = file_get_contents("php://input"); //7.0以上

$arr = xmlToArray($xml);

if($arr['return_code']=='SUCCESS'){ //到这里说明已经付款成功了

//修改订单状态

OrderModel::where('no', $arr['out_trade_no']) ->update(['status' => 2]);

//告诉微信,我已经处理了,否则微信那边会重复发送数据过来的哦

$mes=array(

'return_code'=>'SUCCESS',

'return_msg'=>'OK'

);

return xml($mes);

}

}

回调返回的数据:[appid] => wx0debacb93cb90fe5

[bank_type] => CFT

[cash_fee] => 1

[fee_type] => CNY

[is_subscribe] => N

[mch_id] => 1238270202

[nonce_str] => 44wugpcoqff9guhpp30e60rok50eb0td

[openid] => ozUTy0PeBNzlPx2cTIjq40T6kUVA

[out_trade_no] => 2017091311090393

[result_code] => SUCCESS

[return_code] => SUCCESS

[sign] => 9C1F65C03B475017864261ADCD2D750D

[time_end] => 20170913110908

[total_fee] => 1

[trade_type] => JSAPI

[transaction_id] => 4000542001201709131822508410

php获取微信账单,微信支付获取回调数据相关推荐

  1. 微信公众号支付的回调地址 不起作用的问题

    用户在微信公众号里面付款,输入支付密码后会弹出一个微信页面,页面里面有一个"完成"的按钮. 如果支付后不点击完成按钮,那么:钱已经支付,但是框住的这段代码不会执行. 只有点击完成按 ...

  2. 微信扫码支付notify_url回调接收通知问题

    很多童鞋在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程. 1. html中根据前台支付后反馈信息成功与否跳转到相关页面 if (res. ...

  3. 微信支付重复回调,java微信支付回调问题

    这几天一直在研究微信支付回调这个问题,发现之前微信支付回调都是正常的也没怎么在意,今天在自己项目上测试的时候发现相同的代码在我这个项目上微信支付回调老是重复执行导致支付成功之后的回调逻辑一直在执行,很 ...

  4. 微信支付同时回调多次的解决办法

    遇到一个问题,微信支付成功回调,再本地使用ngrok做内网穿透,也不知到是ngrok的问题,还是微信的问题,支付成功回调会执行多次,2分钟内5,6次左右,但是debug只拦截到一次请求,其他的请求会跟 ...

  5. 微擎支付返回商户单号_一步一步教你在SpringBoot中集成微信扫码支付

    一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...

  6. 【微信】Java 微信扫码支付(模式二)

    一.前言 今天是一个有意义的日子,八月十五中秋节. 在这个这么有意义的日子里,小编写下这篇博客,自己的记忆肯定非常深,哈哈哈,先自嘲一下. 记得小编的前一篇关于微信的博客中提到了,微信是一种生活方式, ...

  7. 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付

    一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...

  8. SpringBoot 搭建微信小程序支付(JSAPI) 纯后端

    一.支付流程 PS:做这个之前  ,先去下载官方的SDK吧  https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 1.首先要拿到 ...

  9. 微信小程序webview(H5页面)调用微信小程序支付

    1.业务描述:微信小程序商城入口进入的页面是商城H5页面,在H5页面进行微信支付如何实现: 2.微信小程序(webview访问H5页面)必须使用微信小程序支付: 如何实现以及实现方式以及支付后页面返回 ...

最新文章

  1. C#自定义异常 统一异常处理
  2. OpenStack 2018 年终盘点
  3. 【GAN优化】GAN优化专栏栏主小米粥自述,脚踏实地,莫问前程
  4. VS2017/2019 F12无法导航到定义
  5. 【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
  6. python简单爬虫入门一_Python爬虫快速入门:基本结构简单实例
  7. 你觉得你有那些特质让你比别人更适合做产品经理?
  8. 如何破解几乎所有的求职面试
  9. css连续选取几个li_CSS高级选择器:nth-child()应用大全
  10. crossentropy java_示例CrossEntropyLoss用于pytorch中的3D语义分段
  11. pp什么叫php的事务,ThinkPHP5.0框架事务处理操作简单示例
  12. IIS下载无后缀文件的设置
  13. iphone抓包调试神器—Stream安装和使用
  14. opencv下载百度网盘链接及安装
  15. 蒙圣光:2018年IT行业的八大趋势
  16. 微信小程序video控件的使用
  17. 使用wps进行数据去重
  18. 外文图书免费下载网站
  19. 自动化学科前沿讲座作业 基于深度学习的工厂人员监测系统设计
  20. tp框架获取服务器信息,tp5获取服务器地址

热门文章

  1. c语言实验报告绘制钟表,单片机时钟程序实验报告
  2. 前端系统和后端服务器怎么通信,Kubernetes前端和后端之间的通信
  3. 鱼c笔记——Python 的 GUI 编程(一):接触 Tkinter
  4. 人脸识别5- insight-face-paddle-以及insightface代码实战笔记
  5. word批量删除空格,巨简单
  6. UE4Android聚光灯投影,ue4商城资源Volumetric Spotlight with Shadow带阴影的体积聚光灯
  7. 解决无效驱动器的问题
  8. ABP学习实践(十二)--模块系统
  9. 西电设置utorrent不走ipv4流量
  10. QQ帐户的申请与登陆