以上为微信官方的文档,想要实现微信退款通知处理业务,使用的thinkphp3.2

通过对上述完成

使用php 无论如何对都req_info 无法解密

求大神指导 ,或提供一个dmeo

const CIPHER = MCRYPT_RIJNDAEL_256;

const MCRYPT_MODE = MCRYPT_MODE_ECB;

$tools = new \WxPayNotify();

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];//获取xml回调数据

$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);//转换xml数据为数组

// $data = json_decode('{"return_code":"SUCCESS","appid":"wxa88a657b659971cd","mch_id":"1290531301","nonce_str":"c88807107134237f13d7d6e6cdd1b3a1","req_info":"ujyWCvgLmXzJdHIrf1ltoHtIJX5u\/EBepMYNSXPp9ZsgieGhhdXMtfXF8eL82Gbk1fb4cjk2tFX0GNkKRilfcglxDQVEVqYhMGIIyqTfEYs+So\/V\/EYSvYCOM9TjlzJ4sXzqLOwTh4PaPRAYRN9RFy1w3uN7pmYiDC7mhB2WrhTvTJl5j22u+Ywpb9xk96vMDxo62nlJl7XohdYIPY2TPbYOQp0sfeMCeWoKilUGjJcadjcSiF2LUfrjOdW+AD3Ow6axOFbjpwV\/rheoUzt1REN1jZWD23bwmVrwvz4ZVoBKcUG7F\/9MU8LdI7HDuk2EzICr8R6Uj4rpN8zvm4RHb853bJ6W1Vctvphy5N66q\/DFKu0Xl\/z+Kxn38LEzANomFuV2XF8vdZumWnqVVVUmyQkSXmXSj2lyONkK9jUQgQBsDHa1Gq6e3g54gDqgQdmEYIk5FmSU\/xn\/1pPZB3\/jOG6qXm03VEmD6sw8jSnAypl0vBDJfH7If5bQXihYDmFoipTzhaWOQJO6UTmj1gk\/nAq3BlBz4KuOIFWM7PsyGjzlf+SpCbIlzEje+uYKcrqVRr8qpZSCtRlS59crk3LrHiNfPGImthhHIZO+l9zbmf5LQnQKqCvvwxy7M8Izu\/iVyXjeNz0pN+6oeZ\/VCYAGGCmhSVkT3Pau8ta3xZGUMqduPMTCEp+IkU46a02m2FWArK9vXKoZpehyvCpCSlyrSy6zxUJYQ\/mE8bIuHAJBS7oN9lvltw4\/mRsFSjJ1v0H5F7IU4vZJ7O+wnpnxTmmUa5ziaLEZ\/YQe5AGo78\/ozg8I5toEJzXV3n5bVrNjgSb5b7Y3yaKTXibylfaeV98OzRz09DqJRqUdRWoO2BLU3KtA+1loEQkEoh5pKAEBcmXII4w5CN7Y7A9aP2qXt6Bf\/atP5eJBvspKTZk4aWsfnSbXey961bO6zVA9Ge08965gCObaBCc11d5+W1azY4Em+VaUiNnQCKRVQ9XDZcR96AQ2gnLDZtUg+pqCt2x+pfaOl+4vCVDeWhUkjbfl48UtEwUPCxHlm7Ip69wxYSXFT1hMTSO6OnzGXMH9Q\/6VbNhN7k6KYqB\/W3cMuAFEOthqX4XkmzustCzymRiNslCmuDo="}',true);

// $data = $tools->handle($array_data);

$wxpay = C('payment.wxpay');

//指定初始化向量iv的大小:

$encryptData = base64_decode($array_data['req_info']);

$decryptedData = $this->_decryptAesData($encryptData);

/**

* decrypt data

* @param string $encryptData

* @param string $md5LowerKey

* @return array

*/

private function _decryptAesData( $encryptData, $md5LowerKey = '')

{

if (empty($md5LowerKey)) {

$wxpay = C('payment.wxpay');

$md5LowerKey = strtolower(md5($wxpay['APPID']));

}

// var_dump($wxpay);

$iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER, self::MCRYPT_MODE), MCRYPT_RAND);

$decrypted = mcrypt_decrypt(self::CIPHER, $md5LowerKey, $encryptData, self::MCRYPT_MODE, $iv);

return $this->xml2array($decrypted);

}

/**

* reply to wechat

* @param $xml

*/

public function replyNotify($xml)

{

if (is_array($xml)) {

$xml = $this->toXml($xml);

}

echo $xml;

}

/**

* @param string $xml

* @return array

* @throws \Exception

*/

public function xml2array( $xml)

{

if (empty($xml)) {

throw new \Exception('Error xml data!');

}

$p = xml_parser_create();

xml_parse_into_struct($p, $xml, $values, $index);

xml_parser_free($p);

$result = [];

foreach ($values as $val) {

$result[strtolower($val['tag'])] = $val['value'];

}

return $result;

}

php微信退款回调通知,微信退款异步回调通知相关推荐

  1. php paypal ipn回调,Paypal IPN / Webhook 异步回调流程是怎样的?

    里面提到的内容跟我遇到的差不多,我使用的是 Omnipay Paypal 包. 我之前直以为只要用户在 paypal 端完成支付,无论是否跳转回网站执行同步回调,IPN / Webhook 异步回调都 ...

  2. paypal异步回调超时或无法请求到我们的服务器解决方案

    业务场景 由于我司最近接入海外业务,支付使用了paypal支付,在线上跑一段时间后频频的收到用户反馈购买商品时用户已经支付了,系统却提示用户未购买成功.这导致用户体验相当的差,也影响到了业务正常运作. ...

  3. 转:在 .NET 中实现异步回调访问数据库

    在 .NET 中实现异步回调访问数据库 时间:2009-11-17 19:52来源:网络收集 作者:佚名 点击: 334 次 技术论坛 某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的 ...

  4. android 异步回调中操作UI线程,UI同步、卡死阻塞等性能问题

    android开发中,回调无处不在,整个android开发的框架就是以回调机制建立起来的.如:activity,service,broadcast,fragment,view事件监听,baseadap ...

  5. java异步多线程 判断线程状态_java多线程和异步回调

    在实际开发过程中遇到的多线程情况不多,但是在生产环境中多线程是最基本的情况,java面试时也会考到,所以看看多线程的知识还是很有必要的. Thread,Runnable,Callable,Future ...

  6. 并发编程之进程池,线程池 和 异步回调,协程

    1.进程池和线程池 2.异步回调 3.协程 4.基于TCP使用多线程实现高并发 一.进程池和线程池 什么是进程池和线程池: ''' 池 Pool 指的是一个容器 线程池就是用来存储线程对象的 容器创建 ...

  7. js同步异步 回调函数

    学js这么久 只知道它是一个单线程的语言,同步异步听了这么多从未深思过. 在写ajax请求时再一次看见回调函数,想到在网上去查查详细的知识,没想到查出一大堆讲同步异步的,看了不少人的文章,这才感觉自己 ...

  8. Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)

    一.准备工作 APP绑定微信商户平台获取商户id(mchID).证书(商户后台下载).支付签名密钥(商户后台设置api密钥).退款签名密钥(商户后台设置api密钥ipv3)等 1.导入微信支付SDK ...

  9. 回调函数,回调函数,回调函数,什么是回调函数

    文章 目录 简介 一.回调函数是什么? 二.回调的demo 1.异步回调 2.安卓中的回调onclick 简介 问题引入: 在一个下载系统中,我要实现文件的下载和下载进度的显示.学习过面向对象的人来说 ...

  10. c# .net core 微信、支付宝H5支付链接获取,支付回调方法,退款方法小计

    支付链接获取 //隐藏代码:获取一个订单model实体,并判断此订单是否发起过支付链接吊起,如发起过且链接没过期,则直接返回支付链接(仅限微信)if (//隐藏代码:判断是否为待付款){switch ...

最新文章

  1. 神经网络中的批量归一化Batch Normalization(BN)原理总结
  2. OAF中下载附件之后页面失效,报过时的数据异常,浏览器后退异常
  3. python读取txt文件乱码-python文件乱码
  4. ABAP X类型 和 xstring类型
  5. hdu 2686 Matrix 最大费用最大流
  6. sed 删除某一行_Linux常用命令三剑客之sed,您真的会用吗?
  7. 定时任务的并发_03
  8. 分享一下自己写的PHP函数
  9. java 反射 对象的方法_Java通过反射调用对象的方法
  10. secoclient
  11. 华三ap设置无线服务器,H3C无线控制器V5版本配置AP上线的方法
  12. cocos2dx[2.x](13)--基本绘图DrawPrimitives
  13. c++ IP地址离线查询
  14. 飞腾服务器如何查看cpu型号,飞腾cpu怎么样 飞腾cpu简介及对比评测【详解】
  15. 【绊脚石】安装pycocotools和lap失败
  16. 听力 JAVA_【VOA英语听力】 US Restarts Restrictions on Iran
  17. 有什么数据恢复软件好?
  18. HoloLens2的vuforia模型识别
  19. 线索化二叉树的学习记录
  20. D.E. Shaw:“股涨债跌”的幕后操手竟是各国央行?

热门文章

  1. 如何在三个月内成为一名全栈开发
  2. oracle database vault(数据库保险库)
  3. 最新 Google支付 Google Play 结算库 4.0 版:从创建定价、商品到测试、支付成功等步骤
  4. 计算机一级word基础题,计算机一级练习题(word_、excel、ppt以及计算机基础知识练习)[1].doc...
  5. 查看mongodb是否启动
  6. reac初学者-简介与入门
  7. 三菱PLC FX3U源码,原理图,PCB全套资料
  8. Android视频编解码之MediaCodec简单入门
  9. PRD的编写要点详解
  10. php怎么安装fpm,apache php fpm安装方法详解