php微信签名_微信接口签名及调用流程详解

在调用微信接口的时候无论是支付还是现金红包等等接口都会用到接口的加密和校验,微信的很多数据签名和调用规则其实都是一样的,首先构建原始数据,然后根据规则去除空值和签名方式(如果与的话),接下来案子点排序后转换为URL格式的字符串,拼接上加密的key,然后生成签名。接下来就是按照规则调用接口了,这里先说一下加密调用的流程,还是看流程图更直观一点。

**微信接口加密签名方式及接口调用流程图** ![微信数据签名流程](http://wx1.sinaimg.cn/large/62610579ly1fnpds6vhzoj20e406zjso.jpg "微信数据签名流程")

下面给出微信签名算法的PHP代码:

~~~php

class Sign

{

const KEY = '微信支付后台获取';

/**

* 获取签名

* @param array $arr

* @return string

*/

public function getSign($arr){

//去除空值

$arr = array_filter($arr);

if(isset($arr['sign'])){

unset($arr['sign']);

}

//按照键名字典排序

ksort($arr);

//生成url格式的字符串

$str = $this->arrToUrl($arr) . '&key=' . self::KEY;

return strtoupper(md5($str));

}

/**

* 获取带签名的数组

* @param array $arr

* @return array

*/

public function setSign($arr){

$arr['sign'] = $this->getSign($arr);;

return $arr;

}

/**

* 数组转URL格式的字符串

* @param array $arr

* @return string

*/

public function arrToUrl($arr){

return urldecode(http_build_query($arr));

}

}

~~~

以上PHP代码完成了整个签名过程,对于将数据转换为XML并发送到微信接口的代码可以参照[《PHP数组和XML相互转换的函数》](https://www.liminghulian.com/article/32)和[《使用PHP基于RESTful风格上传文件或POST字符串》](https://www.liminghulian.com/article/30)两篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值