//字典排序拼接字符串
function getWxPaySignature($arr){ksort($arr);$str = '';foreach ($arr as $k=>$a){$str .= $k;$str .= '='.$a.'&';}$str = trim($str,'&');return $str;
}
//微信回调验证
function weCallbackCheck($xml){$sign = $xml->sign;$appid = $xml->appid;$bank_type = $xml->bank_type;$cash_fee = $xml->cash_fee;$fee_type = $xml->fee_type;$is_subscribe = $xml->is_subscribe;$mch_id = $xml->mch_id;$nonce_str = $xml->nonce_str;$openid = $xml->openid;$out_trade_no = $xml->out_trade_no;$result_code = $xml->result_code;$return_code = $xml->return_code;$time_end = $xml->time_end;$total_fee = $xml->total_fee;$trade_type = $xml->trade_type;$transaction_id = $xml->transaction_id;$device_info = $xml->device_info;$signArr = array('appid' => "$appid",'bank_type' => "$bank_type",'cash_fee' => "$cash_fee",'device_info' => "$device_info",'fee_type' => "$fee_type",'is_subscribe' => "$is_subscribe",'mch_id' => "$mch_id",'nonce_str' => "$nonce_str",'openid' => "$openid",'out_trade_no' => "$out_trade_no",'result_code' => "$result_code",'return_code' => "$return_code",'time_end' => "$time_end",'total_fee' => "$total_fee",'trade_type' => "$trade_type",'transaction_id' => "$transaction_id");foreach ($signArr as $key => $value) {if($value == ''){unset($signArr[$key]);}}$stringA = getWxPaySignature($signArr);//数组字典排序拼接字符串$stringSignTemp = $stringA.'&key=???';//设置的key$signValue = md5($stringSignTemp);$signValue = strtoupper($signValue);if($signValue == $sign){return 'success';//支付成功}else{file_put_contents('failure.txt',json_encode($signArr).PHP_EOL,FILE_APPEND);return 'failure';}}
$xmlstr = file_get_contents("php://input");
$xml=simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA);
if(weCallbackCheck($xml)=="success"){echo "支付成功";
}

  

转载于:https://www.cnblogs.com/mracale/p/9437829.html

php微信支付回调验证相关推荐

  1. php 微信支付md5签名,微信支付回调验证签名处理

    微信支付回调验证签名:一定要验证签名,可能不造成伪造数据,或者数据库造到灌水: /** * 微信支付回调类 * @name callbackaction.class.php * @author yan ...

  2. php微信回调验证签名,微信支付回调验证签名处理

    <?php /** * 微信支付回调类 * @name CallbackAction.class.php * @author yangzl * @date(20180820) */ class ...

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

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

  4. PHP判断ip是否在指定IP段内(微信支付回调IP段验证)

    需求: 项目中需要判断发起微信支付回调的IP在不在微信商户出口IP中,以防止私钥泄露别人发起伪装过的假回调造成损失 1获取客户端IP /*** @explain 获取用户IP* @param int ...

  5. php验证支付回调,php对微信支付回调处理的方法(合集)

    public function wycz(){//我要充值 if(session('uid') ==NULL || session('uid') == "" || session( ...

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

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

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

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

  8. 使用NATAPP.cn测试微信支付回调接口

    个人资源与分享网站:http://xiaocaoshare.com/ 1.在工作中,开发微信支付有点的难度的地方就是微信支付回调接口的测试,现在推荐一款在线调试工具https://natapp.cn ...

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

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

  10. 微信小程序(微信支付回调函数)

    /*** 微信支付回调函数** @param body* @param request* @return 所有逻辑完成, 返回true, 完成支付, 并将订单状态改变*/@Override@Trans ...

最新文章

  1. bzoj 3223: Tyvj 1729 文艺平衡树
  2. 《STL源码剖析》学习--6章--power算法分析
  3. java office文件加水印_永中Office与统一操作系统UOS完成适配,开辟高效智能办公新领域...
  4. 6000毫安以上智能手机_展望2021年智能手机市场:这5大技术要爆发
  5. mysql json mybatis_mybatis支持json,Spring boot配置
  6. CodeIgniter 合作 Authorize.net
  7. Linux如何检查目录inode占用,linux – 如何确定哪个文件/ inode占用给定扇区
  8. 弦论 —— 宇宙的琴弦
  9. 10 Python - Python列表list
  10. Docker与容器化-01-Docker简介及Docker在CentOS7环境下安装
  11. tensorflow 变量共享
  12. 常用z变换及其收敛域
  13. 计算机网络复习重点/经典考试知识点
  14. PS如何删除智能图层为可编辑状态
  15. 人工智能、机器学习、深度学习 三者关系
  16. 防火墙的原理、主要技术、部署及其优缺点
  17. “请珍惜”震撼心灵的感动;当我们老了,还能一起真三么?
  18. Substrate框架:平行链及跨链技术简析 结合ETH和IPFS能否成为第一跨链系统?
  19. mysql 显示表_显示MYSQL表信息的方法
  20. 燕十八ajax笔记,燕十八商城笔记资料.doc

热门文章

  1. poj 2828 Buy Tickets 线段树!!!
  2. 读掘金小册组件精讲总结1
  3. WPF中如何选择合适的元数据标记?(英文)
  4. mysql 空值处理
  5. Cache【硬盘缓存工具类(包含内存缓存LruCache和磁盘缓存DiskLruCache)】
  6. Java语言速览:StackOverflow
  7. 使用RecyclerView替代ListView(一)
  8. Get与Post区别与范例讲解
  9. Vue项目部署到SpringBoot工程下
  10. iOS 使用SourceTree注意事项