参考来源:

https://www.php.cn/php-weizijiaocheng-407545.html

https://blog.csdn.net/rain_silently/article/details/79390377

https://blog.csdn.net/chenrui310/article/details/80830798

废话不多说,直接上代码:

 public function demo(){// 获取微信回调的数据$notifiedData = file_get_contents('php://input');//XML格式转换$xmlObj = simplexml_load_string($notifiedData, 'SimpleXMLElement', LIBXML_NOCDATA);$xmlObj = json_decode(json_encode($xmlObj),true);$key = "公众号的key";//请求回来的数据格式
//        $xmlObj = [
//            'appid' => 'wxf546a8df41c2ce18',
//            'attach' => '商品',
//            'bank_type' => 'CFT',
//            'cash_fee' => '1',
//            'fee_type' => 'CNY',
//            'is_subscribe' => 'Y',
//            'mch_id' => '1534940151',
//            'nonce_str' => 'jld6md2ky75emve7spsrf2tolturngrm',
//            'openid' => 'oyljP5y2HbOHsEAuOLpHP2dXQChw',
//            'out_trade_no' => '20190808164259728748651734197807',
//            'result_code' => 'SUCCESS',
//            'return_code' => 'SUCCESS',
//            'sign' => 'A68DC8C8E61DCA90D4454963982A7B12',
//            'time_end' => '20190808164308',
//            'total_fee' => '1',
//            'trade_type' => 'JSAPI',
//            'transaction_id' => '4200000342201908088760422065',
//        ];//是否成功支付if ($xmlObj['return_code'] == "SUCCESS" && $xmlObj['result_code'] == "SUCCESS") {//把签名去掉$xmlSign = $xmlObj['sign'];unset($xmlObj['sign']);$sign = $this -> appgetSign($xmlObj,$key);if ($sign === $xmlSign){//验证通过,确认已经支付
                //告诉微信不用重复通知                return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
            }}}/** 格式化参数格式化成url参数  生成签名sign*/private function appgetSign($Obj,$appwxpay_key){foreach ($Obj as $k => $v){$Parameters[$k] = $v;}//签名步骤一:按字典序排序参数ksort($Parameters);$String = $this -> ToUrlParams($Parameters);//签名步骤二:在string后加入KEYif($appwxpay_key){$String = $String."&key=".$appwxpay_key;}//签名步骤三:MD5加密$String = md5($String);//签名步骤四:所有字符转为大写$result_ = strtoupper($String);return $result_;}private function ToUrlParams($Parameters){$buff = "";foreach ($Parameters as $k => $v){if($k != "sign" && $v != "" && !is_array($v)){$buff .= $k . "=" . $v . "&";}}$buff = trim($buff, "&");return $buff;}

转载于:https://www.cnblogs.com/laijinquan/p/11325249.html

关于微信支付后回调验证的处理相关推荐

  1. java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)

    问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...

  2. java微信支付v3系列——5.微信支付成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  3. python django 微信支付成功回调url(notify_url)

    微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求  1.公网能直接访 ...

  4. django 微信支付成功回调url(notify_url)

    微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求 1.公网能直接访问 ...

  5. PHP微信支付获取回调数据

    微信支付获取回调数据 微信回调接口比较麻烦一点就是不方便测试 微信支付回调函数都是使用以下变量获取POST数据: php配置中,必须启用 always_populate_raw_post_data / ...

  6. 微信支付后“自动”绑定用户手机号与公众号

    微信支付后"自动"绑定用户手机号与公众号 说明: 这里的微信支付是指 微信网页支付(h5) 微信支付的内容必定是和手机号码有关联的(当然交易中涉及的其他用户信息也是可以用同样的办法 ...

  7. 微信回调接口java返回true_java 微信支付异步回调接口

    1.微信支付异步回调接口 @SuppressWarnings("static-access") @RequestMapping("callback") @Res ...

  8. PHP对微信支付v2回调进行验签并将相关数据加入数据库

    PS:对于V2版本微信支付的回调需要在线上环境进行,本文中出现的数据库的相关字段,各位请按照个人需求进行修改,此处只对微信回调数据进行相关解析; 代码方面写的比较杂乱,多看注释,相关代码根据个人需求进 ...

  9. 微信支付退款回调踩坑及解决方案(附解密代码)

    文章目录 1. 回调失败问题(沙箱环境) 2. 解决方案 3. 退款回调的解密代码 1. 回调失败问题(沙箱环境) 问题始末: 最近再弄微信退款回调发现设置的回调的url根本就没有被调用,但是微信支付 ...

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

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

最新文章

  1. Centos+PHP模块+exif扩展 (第三方模块)
  2. legend3---3、lavarel页面post请求错误之后跳转
  3. pageoffice网页提示未安装_Adobe Photoshop CC 2019 详细图文安装教程
  4. solidworks无法获得下列许可standard_SolidWorks2020安装无法获得下列许可SOLIDWORKS Standard怎么解决?...
  5. 隐藏wp login.php,Wordpress 隐藏登陆链接
  6. python模块版本管理工具_【转】Python包管理工具
  7. matlab单元数组和结构,Matlab使用单元数组和结构数组
  8. Android Studio 之 Live Templates 使用
  9. 【LeetCode】231. Power of Two
  10. C#、TypeScript之父Anders Hejlsberg:“会用Excel就是程序员 ”
  11. RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案)
  12. gcj编译java_GCJ:The GNU Compiler for the Java(让你的java程序脱离JRE),GCJ环境的配置
  13. 计算机启动显示不正确的分区表,双硬盘启动失败提示“无效分区表”无法打开机器...
  14. 如何让同步/刷新的图标(el-icon-refresh)旋转起来
  15. 邮箱发信数量被限制了,有什么方法可以解决么?
  16. 神经网络学习笔记(一):全连接层的作用是什么?
  17. A/B Problem(大数)
  18. js 判断IOS版本号
  19. PPT保存为超高清图片
  20. android 对话框 美化,Android修改Dialog样式

热门文章

  1. 浏览器是怎么解析JS的代码
  2. 05月08日 学习列表
  3. CentOS7安装GNOME可视化界面
  4. hdu 3951 博弈
  5. 【原创】软件测试基础流程
  6. 【转】三层架构的业务逻辑层存在的意义
  7. 数据库sql语句杂谈
  8. 10倍提升应用性能的10个建议 (理论篇)
  9. read一个收到RST的socket会返回0?
  10. MySQL error(2014) Commands out of sync; you can't run this command now(情形1)