在调用微信接口的时候无论是支付还是现金红包等等接口都会用到接口的加密和校验,微信的很多数据签名和调用规则其实都是一样的,首先构建原始数据,然后根据规则去除空值和签名方式(如果与的话),接下来案子点排序后转换为URL格式的字符串,拼接上加密的key,然后生成签名。接下来就是按照规则调用接口了,这里先说一下加密调用的流程,还是看流程图更直观一点。
微信接口加密签名方式及接口调用流程图
下面给出微信签名算法的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相互转换的函数》和《使用PHP基于RESTful风格上传文件或POST字符串》两篇文章。
-
英雄聯盟(League of Legends,簡稱LoL)是一款由美國遊戲開發公司Riot Games開發的多人線上戰鬥競技遊戲(MOBA)。遊戲中玩家需要組織一個由五名英雄組成的隊伍,與對手進行對戰。每個英雄都有不同的技能和特點,玩家需要運用自己的策略和技巧來擊敗對手。(0) 回复 (0)
-
代表团酝酿协商国家机构人员人选离心泵 促销潮蔓延!汽车全面降价已来临上海螺杆泵36 听,两会中的“她”声音上海离心泵11 代表称不要太在乎诺贝尔文学奖上海螺杆泵14 世界最长寿女性去世 享年128岁上海化工泵21 农民工大哥火车上用盆炫10袋泡面污泥螺杆泵27 上海磁力泵14 沈阳一公园整治钻裤裆等不雅舞姿离心泵54 宿迁一文旅局长变装至尊宝磁力泵 高三老师被安排同学生一起考试螺杆泵 今夏是否会遭遇极端高温螺杆泵76 夫妻200万造别墅找陌生人抱团养老磁力泵 中国“民富”50城化工泵 空乘招聘排队7小时面试3分钟污泥螺杆泵46 如何理解多地试点教师退出机制磁力泵107 主妇起诉离婚才知丈夫年薪300万全焊接球阀 网友突击式检查世界各地大熊猫焊接球阀 游客站着看烟花秀遭骂直埋全焊接球阀 有留守儿童为打游戏5天5夜不睡觉埋地全焊接球阀 白宫:不希望冲突 尊重一个中国政策Fully Welded Ball Valve112(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)
-
讨债公司 搬家公司 蓝月传奇辅助(0) 回复 (0)