背景描述

  • 当前我在学习 Uniapp 的应用开发,使用的是 Uniapp 官方提供的 服务端PHP源码

根据 微信支付文档-回调通知注意事项可知,支付成功后,回调地址所返回的报文必须是xml格式

  • 从一众路径所知的回调方法中,很多会涉及到这样一句代码
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];

But: PHP7+ 中已经移除了这个全局变量,所以请用 php://input 替代,否则得到数据为空

  • 于是代码优化为:
 $xml = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");

源码参考

   /*** 微信支付回调* @param Request $request*/public function wxNotify(Request $request){//TODO 此代码 是因为 php7之后的版本中已经弃用 HTTP_RAW_POST_DATA,所以...$xml=isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");//将服务器返回的XML数据转化为数组$data = self::xml2array($xml);if (($data['return_code'] == 'SUCCESS') && ($data['result_code'] == 'SUCCESS')) {//获取服务器返回的数据$out_trade_no = $data['out_trade_no'];            //订单单号$data['timestamp'] = date("Y-m-d H:i:s");$json_str_notify = json_encode($data);//TODO 此时可以根据自己的业务逻辑 进行数据库更新操作if ($out_trade_no){//个人业务需求,支付订单号有所设定而已$order_sn = explode("W",$out_trade_no)[0];$orderInfoModel = new XorderInfos();$orderInfoModel->updatePayResultForNotify($order_sn, 0,$json_str_notify);}}}/*** 将xml转为array* @param  string $xml xml字符串* @return array    转换得到的数组*/protected function xml2array($xml){//禁止引用外部xml实体libxml_disable_entity_loader(true);$result = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);return $result;}
  • 为方便后期的退款操作,存入数据表中的格式参考:

{"appid":"wxdd8xxxxxxxxxxx30","bank_type":"CFT","cash_fee":"1","fee_type":"CNY","is_subscribe":"N","mch_id":"1538257171","nonce_str":"8m348zzmez4o52mt6rzjds6rri836840","openid":"ozBhy5j_xxxxxxxxxxxxxxxxx5w","out_trade_no":"201906122044331501W103158","result_code":"SUCCESS","return_code":"SUCCESS","sign":"CBBC7A6B82A22B72F6CDC393AB88E52F","time_end":"20190613150556","total_fee":"1","trade_type":"APP","transaction_id":"4200000327201906131737890110","timestamp":"2019-06-13 15:05:57"}

参考文章:

  1. 关于php://input、$_POST、$HTTP_RAW_POST_DATA的理解及区别
  2. 微信支付遇到的大坑 WxpayAPI_php_v3

APP (UniAPP) 微信支付回调的 HTTP_RAW_POST_DATA 报错情况 (wxpayv3)相关推荐

  1. 微信支付invalid total_fee 的报错

    因为我的测试商品是0.01的 原因是微信支付的金额是不能带小数点的 直接在提交的时候 乘以 100操作 ,因为里面设置参数的时候是 以分为单位的 [packageParams setObject: p ...

  2. Hbuildx 使用vue打包的App实现微信支付功能

    很多兄弟在做App微信支付的时候出现报错,code:62000? code:-1? code:-100? 那是你没看本博主的文章! 前言: 本文章使用的是vue+h5+plus技术,结合hbuildx ...

  3. uni-app app平台微信支付

    一.App平台支付流程 流程:支付平台功能申请 -> manifest.json 里配置支付参数 -> uni-app 里调用 API 进行支付 二.微信App支付功能申请 到 微信开放平 ...

  4. python wechatpay微信支付回调_python服务器 实现app微信支付:支付异步通知

    # -*- coding: utf-8 -*- import tornado.httpserver import tornado.ioloop import tornado.options impor ...

  5. uni-app app 端 微信支付

    uni-app微信支付 失败  掉不起来 1,检查 appid 是否 一致 2. 微信端 是对象形式   支付宝 是字符串 3.微信端对象形式 所以 对象属性 小写   packageValue  改 ...

  6. 微信小程序、app集成微信支付

    一.微信小程序支付 开发文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_11&index=2 申请小程序 ...

  7. 微信境外支付php_PHP实现 APP端微信支付功能

    前面已经写了手机APP支付宝支付,今天再把手机APP微信支付补上,前期的准备工作在这里就不多说了,可以参考微信支付开发文档,一定要仔细阅读开发文档,可以让你少踩点坑:准备工作完成后就是配置参数,调用统 ...

  8. php 企业微信指令回调借款_php处理微信支付回调改变订单支付状态的代码

    本篇文章给大家带来的内容是关于php服务端APP微信支付回调验证签名改变订单支付状态,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.<?php //处理微信支付回调 $time ...

  9. php 微信支付 回调处理,TP微信支付(回调处理)

    1.微信支付回调 此方法从网上查找的 需要配置文件的支持 Paste_Image.png /* *微信支付 * 回调地址 notifyurl * */ public function notifyur ...

最新文章

  1. 4.0以后的新布局方式GridLayout
  2. bootstrap 标签页tab切换js(含报错原因)
  3. MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
  4. python如何连续查找字符串_在另一个字符串Python中多次查找字符串
  5. 《结对-结对编程项目作业名称-结对项目总结》
  6. 将本地项目上传到github详解
  7. 《高翔视觉slam十四讲》学习笔记 第四讲 李群与李代数
  8. 自旋锁spin_lock
  9. restful架构风格设计准则(五)用户认证和session管理
  10. 华为鸿蒙被卖了,8%!被卖掉的荣耀过的日子,与华为越来越不同了!
  11. Centos7 下安装tomcat7
  12. CES2018,三星为何将MicroLED应用于电视而非手机?
  13. win10 远程桌面和向日葵远控哪个好用
  14. 无胁科技-TVD每日漏洞情报-2022-12-15
  15. Sea-thru: A Method For Removing Water From Underwater Images论文研读
  16. 工厂设计模式—java
  17. JAVA连接打印机打印小票、产品信息。标签打印机
  18. Python判断两个字符串是否为父子集
  19. java 百度poi_百度poi接口 查询餐饮、住宿、娱乐等POI数据
  20. 22岁高中学历的我 如何做到CTO年薪50万(1)

热门文章

  1. @Validated和@Valid使用
  2. 淘宝评价显示及记分规则
  3. python 均线斜率怎么计算_高频交易算法研发心得--均线算法
  4. Carla学习2:carla安装与使用
  5. LeetCode 1278. 分割回文串 III
  6. linux下ss工具简介
  7. 关于如何在XP系统上运行opencv生成的C++动态库
  8. 支付宝小程-调起支付宝进行支付
  9. 5毛VS600亿,食品安全问题是卫龙上市最大的拦路虎?
  10. Linux命令_ps 进程管理