1. //将xml字符串转换为数组
  2. public function xmlToArray($xml){
  3. $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  4. return $array_data;
  5. }
  1. /*
  2. * 对要发送到微信统一下单接口的数据进行签名
  3. */
  4. public function getSign($Obj,$apiKey){
  5. foreach ($Obj as $k => $v){
  6. $param[$k] = $v;
  7. }
  8. //签名步骤一:按字典序排序参数
  9. ksort($param);
  10. $String = $this->formatBizQueryParaMap($param, false);
  11. //签名步骤二:在string后加入KEY
  12. $String = $String."&key=" . $apiKey;
  13. //签名步骤三:MD5加密
  14. $String = md5($String);
  15. //签名步骤四:所有字符转为大写
  16. $result_ = strtoupper($String);
  17. return $result_;
  18. }
  19.  
  20. /*
  21. *排序并格式化参数方法,签名时需要使用
  22. */
  23. public function formatBizQueryParaMap($paraMap, $urlencode)
  24. {
  25. $buff = "";
  26. ksort($paraMap);
  27. foreach ($paraMap as $k => $v)
  28. {
  29. if($urlencode)
  30. {
  31. $v = urlencode($v);
  32. }
  33. //$buff .= strtolower($k) . "=" . $v . "&";
  34. $buff .= $k . "=" . $v . "&";
  35. }
  36. $reqPar = "";
  37. if (strlen($buff) > 0)
  38. {
  39. $reqPar = substr($buff, 0, strlen($buff)-1);
  40. }
  41. return $reqPar;
  42. }
  1. //数组转字符串方法
  2. public function arrayToXml($arr){
  3. $xml = "<xml>";
  4. foreach ($arr as $key=>$val)
  5. {
  6. if (is_numeric($val)){
  7. $xml.="<".$key.">".$val."</".$key.">";
  8. }else{
  9. $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
  10. }
  11. }
  12. $xml.="</xml>";
  13. return $xml;
  14. }
  1. //发送xml请求方法
  2. private static function postXmlCurl($xml, $url, $second = 30)
  3. {
  4. $ch = curl_init();
  5. //设置超时
  6. curl_setopt($ch, CURLOPT_TIMEOUT, $second);
  7. curl_setopt($ch, CURLOPT_URL, $url);
  8. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  9. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //严格校验
  10. //设置header
  11. curl_setopt($ch, CURLOPT_HEADER, FALSE);
  12. //要求结果为字符串且输出到屏幕上
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  14. //post提交方式
  15. curl_setopt($ch, CURLOPT_POST, TRUE);
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  17. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
  18. curl_setopt($ch, CURLOPT_TIMEOUT, 40);
  19. set_time_limit(0);
  20. //运行curl
  21. $data = curl_exec($ch);
  22. //返回结果
  23. if ($data) {
  24. curl_close($ch);
  25. return $data;
  26. } else {
  27. $error = curl_errno($ch);
  28. curl_close($ch);
  29. throw new WxPayException("curl出错,错误码:$error");
  30. }
  31. }
  1. //生成随机数字
  2. function getNonceNums($numLen = 4)
  3. {
  4. $chars = "0123456789";
  5. $str = "";
  6. for ($i = 0; $i < $numLen; $i++) {
  7. $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  8. }
  9. return $str;
  10. }
  1. /*
  2. * 生成随机字符串方法
  3. */
  4. public function createNoncestr($length = 32)
  5. {
  6. $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
  7. $str = "";
  8. for ($i = 0; $i < $length; $i++) {
  9. $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  10. }
  11. return $str;
  12. }

微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)的更多相关文章

  1. 发送HTTP请求方法- 留着自用

    /** * 发送HTTP请求方法,目前只支持CURL发送请求 * @param string $url 请求URL * @param array $data POST的数据,GET请求时该参数无效 * ...

  2. 一个简单xml数据转换为数组的方法

    本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ...

  3. php发送http请求方法实例及详解

    http请求有get,post. php发送http请求有三种方式[我所知道的有三种,有其他的告诉我]. file_get_contents();详情见:http://www.whosmall.com ...

  4. Php发送post请求方法

    因为自己时常用到 所以还是发布一下吧 /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @r ...

  5. 微信开发中access_token,js_ticket,时间戳,签名生成工具

    Access_token生成工具 工具地址:https://mp.weixin.qq.com/debug 这个工具主要用来验证和生成微信公众号access_token,主要有正确的app_id和app ...

  6. Okhttp3发送xml、json、文件的请求方法

    1.引入依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okht ...

  7. php模拟HTTP协议发送post请求方法

    今天用到php模拟http发送post请求记录 代码如下: <?php $url = 'xxxx.com'; $data = 'a=one&b=two'; $data = urlenco ...

  8. PHP实现微信开发中提现功能(企业付款到用户零钱)

    一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https://pay.weixin.qq.com/wiki/do ...

  9. Android深入理解JNI(二)类型转换、方法签名和JNIEnv

    相关文章 Android深入理解JNI系列 前言 上一篇文章介绍了JNI的基本原理和注册,这一篇接着带领大家来学习JNI的数据类型转换.方法签名和JNIEnv. 1.数据类型的转换 首先给出上一篇文章 ...

  10. C#微信开发之旅--基本信息的回复

    上一篇说到配置和验证<C#微信开发之旅--准备阶段> 下面来实现一下简单的信息回复. 也就是接收XML,返回XML 可以去看下微信开发文档的说明:http://mp.weixin.qq.c ...

随机推荐

  1. Android夜神模拟器

    夜神安卓模拟器 NOX,是一个可以让手机应用程序运行在电脑上的软件,也是电脑玩手游的新一代神器, 与传统安卓模拟器相比,基于基于Android5.1.1,兼容X86/AMD,在性能.稳定性.兼容性等方 ...

  2. SASRec 实践

    SASRec--2018,ICDM,论文<Self-Attentive Sequential Recommendation> 源代码链接:https://github.com/kang20 ...

  3. js数组快速排序和冒泡排序

    1.快速排序 var arr = [1, 2, 5, 6, 3, 1, 4]; function mySort(arr) { if (arr.length <= 1) { return arr; ...

  4. 落谷 P4052 [JSOI2007]文本生成器

    题目链接.只要有一个可读就行,容斥会好做一点. 可读数量 \(=\) 总数 \(-\) 不可读数量 总数显然是 \(26 ^ n\). 求解不可读数量 不可读数量可以利用 AC 自动机的模型进行 DP ...

  5. 配置nginx支持THINKPHP的PATH_INFO

    ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件. location ...

  6. 使用Swiper快速实现3D效果轮播

    最近经常接到轮播图3D效果的需求, 特在此记录一下以备之后使用. 具体实现效果如下: 在这里介绍两种使用方式, 一种原生的html+php后端渲染, 一种是使用vue. 原生实现 引入 首先我们介绍原 ...

  7. 三、LoadRunner卸载

    由于安装的时候没看提前了解清楚,LoadRunner社区版只能模拟50个用户,满足不了工作需求,删了重装吧. 1-打开"控制面板"-点击"卸载程序" 2-找到H ...

  8. 模拟sql注入实现远程桌面登录

    首先用sql注入文件命令y url+一句话 into outfile 绝对路径/test.php 用蚁剑连接打开连接的终端 先看用户的权限 创建一个用户将它放入队列中 查看3389端口是否开启 0xd ...

  9. QEMU网络模式(一)——bridge

    网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...

  10. Python Cvxopt安装及LP求解

    Python 2.7 Pycharm 1.直接File>Settings>Project>InterPreter ,点击右侧'+' 弹出Available packages窗口,搜索 ...