【PHP原生】xml和数组互转(微信支付签名算法)

数组转XML

publicfunction arrayToXml($arr)
{
$xml ="<xml>";
foreach($arr as $key => $val){
if(is_numeric($val)){
$xml .="<". $key .">". $val ."</". $key .">";
}else
$xml .="<". $key ."><![CDATA[". $val ."]]></". $key .">";
}
$xml .="</xml>";
return $xml;
}

XML转数组

publicfunction xmltoarray($xml)
{
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml,‘SimpleXMLElement‘, LIBXML_NOCDATA);
$val = json_decode(json_encode($xmlstring),true);
return $val;
}

微信支付签名sign算法

//生成签名
//$data参与签名的关联数组,$key商户appkey
publicfunction createSign(array $data,string $key)
{
ksort($data); //参与签名的数组重新按升序排列
$str =‘‘;
foreach($data as $k => $v){
$str .= $k .‘=‘. $v .‘&‘; //数组转换成URL参数形式
}
$str .=‘key=‘. $key; //拼接商户秘钥
return strtoupper(md5($str)); //MD5加密并转换成大写字母
}

原文地址:https://www.cnblogs.com/php99/p/9797157.html

时间: 2024-10-14 09:35:28

【PHP原生】xml和数组互转(微信支付签名算法)的相关文章

微信支付签名算法JavaScript版,参数名ASCII码从小到大排序;0,A,B,a,b;

// 支付md5加密获取sign paysignjs: function (jsonobj) { var signstr = this.obj2str(jsonobj) signstr = signstr + '&key=' + key; console.log("signstrkey:",signstr) var sign = md5util.hexMD5(signstr); //验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验

微信支付对账单下载

以上是官网文档说明: 下面是根据文档 梳理下思路: /** 关于签名的算法,api提供的原文是: 1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA. 特别注意以下重要规则: 参数名ASCII码从小到大排序(字典序): 如果参数的值为空不参与签名: 参数名区分大小写: 验证调用返回或微信主动

微信支付(.NET版)

前段时间做了网页版微信支付,遇到很多问题,不过最终还是解决了,现在在这里记录下开发流程以及说明,给其他人一些参考. 一.准备工作 首先肯定得先要开通微信支付功能,之前开通微信支付需要三万的押金的,现在不需要了,所以就做了这个功能. 要进行微信支付开发,需要在公众号后台和微信商户后台进行相关的设置. 1.开发目录配置 微信支付需要在公众号后台(微信支付=>开发配置)进行配置支付授权目录.这里授权目录需要是线上地址,也就是可以通过互联网访问到的地址,微信支付系统需要能够通过互联网访问到你的地址. 微

微信支付 jsapi接口

/// <summary> /// 微信支付成功,返回信息 /// </summary> /// <returns></returns> public void WxZhifuInfo() { string post = ""; HttpRequestBase request = Request; using (System.IO.Stream stream = request.InputStream) { Byte[] postByte

JAVA实现微信支付V3

相信很多的码友在项目中都需要接入微信支付,虽说微信支付已成为一个普遍的现象,但是接入的过程中难免会遇到各种各样的坑,这一点支付宝的SDK就做的很好,已经完成的都知道了. 下面就开始我们的代码之旅,这里我将给大家提供两种支付一个是微信公众号支付,一个是APP微信支付. 一 微信公众号支付 流程: 1.获取用户openid 2.获取token,注意获取的token是有时效的而且接口是有获取上线,具体看微信API文档 3.拿商品信息(金额,名字等)去请求统一下单接口 4.统一下单接口获取预支付ID,后

&lt;正则吃饺子&gt; :关于微信支付的简单总结说明(一)

关于支付,一直想参与开发,现在根据项目中已有及参见的微信开发文档,将自己对于微信开发的流程进行简单的总结,以备后用和帮助后来者. 一.相关官方文档 微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 二.参考博文 (待添加,等我找找..) 三.自己参看文档时候的简单文档整理, ps:只为了方便自己记忆和联想 四.根据官方文档中,标记后台主要做的工作流程 五.参看项目代码时候,整理的demo,来源于网络 (1)MD5Util  --

微信支付的那些坑!!!

微信支付的那些坑! 开通和审核 微信支付和支付宝商家平台一样,都是要审核资质的,支付宝个人认证可以使用担保支付,虽然需要用户确认收货之后才能收到资金,但是好歹也是能用的.微信直接不让个人使用支付.只有企业以上级别的服务号才能申请. 开通&认证 支付宝注册企业账号,进行企业认证,我总共就花了10分钟,包括公司资质审核,打款到公账确认公账等步骤.效率高到简直无法想象. 微信支付需要已经认证过的服务号才能开通支付.提交完资质,等待审核,花了5个工作日的时间才告诉我资质审核过了,对,没错,是5个工作日,

微信支付开发教程-静态链接Native原生支付开发

微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版.V3版的微信支付没有paySignKey参数.v2的相关介绍请参考方倍工作室的其他文章.本文介绍的为微信支付v3. 一.静态链接二维码生成 静态链接二维码的生成过程中,核心是sign签名.下面介绍sign签名过程. 1. 参数准备 唯一要确定的参数是产品的ID号.其他的是支付参数或者由程序生成.程序生成的部分如下. $this->parameters["appid"] = WxPayCon

JavaScript实现XML与JSON互转代码(转载)

下面来分享一个关于JavaScript实现XML与JSON互转例子,这里面介绍了国外的三款xml转json的例子,希望这些例子能给你带来帮助. 最近在开发在线XML编辑器,打算使用JSON做为中间格式.因为JSON相对于XML,有着容易阅读.解析速度快.占用空间小等优点,更易于在WEB上传递数据.但在实际使用中还是发现了一些易于忽略的细节,对于需要严格保证XML原始结构的情况,在转换成JSON时需要一些注意. XML转换成JSON的格式大概如下: //XML形式 <article> <h