关于微信支付后回调验证的处理
参考来源:
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
关于微信支付后回调验证的处理相关推荐
- java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)
问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...
- java微信支付v3系列——5.微信支付成功回调
目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...
- python django 微信支付成功回调url(notify_url)
微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求 1.公网能直接访 ...
- django 微信支付成功回调url(notify_url)
微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 首先 这个 notify_url 有俩个要求 1.公网能直接访问 ...
- PHP微信支付获取回调数据
微信支付获取回调数据 微信回调接口比较麻烦一点就是不方便测试 微信支付回调函数都是使用以下变量获取POST数据: php配置中,必须启用 always_populate_raw_post_data / ...
- 微信支付后“自动”绑定用户手机号与公众号
微信支付后"自动"绑定用户手机号与公众号 说明: 这里的微信支付是指 微信网页支付(h5) 微信支付的内容必定是和手机号码有关联的(当然交易中涉及的其他用户信息也是可以用同样的办法 ...
- 微信回调接口java返回true_java 微信支付异步回调接口
1.微信支付异步回调接口 @SuppressWarnings("static-access") @RequestMapping("callback") @Res ...
- PHP对微信支付v2回调进行验签并将相关数据加入数据库
PS:对于V2版本微信支付的回调需要在线上环境进行,本文中出现的数据库的相关字段,各位请按照个人需求进行修改,此处只对微信回调数据进行相关解析; 代码方面写的比较杂乱,多看注释,相关代码根据个人需求进 ...
- 微信支付退款回调踩坑及解决方案(附解密代码)
文章目录 1. 回调失败问题(沙箱环境) 2. 解决方案 3. 退款回调的解密代码 1. 回调失败问题(沙箱环境) 问题始末: 最近再弄微信退款回调发现设置的回调的url根本就没有被调用,但是微信支付 ...
- 微信支付同时回调多次的解决办法
遇到一个问题,微信支付成功回调,再本地使用ngrok做内网穿透,也不知到是ngrok的问题,还是微信的问题,支付成功回调会执行多次,2分钟内5,6次左右,但是debug只拦截到一次请求,其他的请求会跟 ...
最新文章
- Centos+PHP模块+exif扩展 (第三方模块)
- legend3---3、lavarel页面post请求错误之后跳转
- pageoffice网页提示未安装_Adobe Photoshop CC 2019 详细图文安装教程
- solidworks无法获得下列许可standard_SolidWorks2020安装无法获得下列许可SOLIDWORKS Standard怎么解决?...
- 隐藏wp login.php,Wordpress 隐藏登陆链接
- python模块版本管理工具_【转】Python包管理工具
- matlab单元数组和结构,Matlab使用单元数组和结构数组
- Android Studio 之 Live Templates 使用
- 【LeetCode】231. Power of Two
- C#、TypeScript之父Anders Hejlsberg:“会用Excel就是程序员 ”
- RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案)
- gcj编译java_GCJ:The GNU Compiler for the Java(让你的java程序脱离JRE),GCJ环境的配置
- 计算机启动显示不正确的分区表,双硬盘启动失败提示“无效分区表”无法打开机器...
- 如何让同步/刷新的图标(el-icon-refresh)旋转起来
- 邮箱发信数量被限制了,有什么方法可以解决么?
- 神经网络学习笔记(一):全连接层的作用是什么?
- A/B Problem(大数)
- js 判断IOS版本号
- PPT保存为超高清图片
- android 对话框 美化,Android修改Dialog样式