微信投票系统

帮助中心

当前位置: 微投票 > 帮助中心 > 签名生成方法

签名生成方法

2019-09-23 21:50

开发者服务端在与微投票服务器交互的过程中,需要对参数进行加签等操作,下边介绍具体规则。

一、服务端

1、请求微投票接口,需要根据参数生成一个签名(sign)并携带在参数中进行请求,最终的请求形式如下:

http://接口地址?sign=签名&timestamp=当前秒级时间戳&nonce=随机字符串

并且除sign外的其余参数都需要参与签名计算。

2、签名生成方法:

将请求参数按键进行升序排序->将排序好的数组生成url-query参数->进行加密并拼接为最终签名

// php-demo
public function sign($data)
{
    $access_key = '后台获取';
    $secret_key = '后台获取';
    if (is_array($data)) {
        ksort($data);                        // 按照升序排序
        $data = http_build_query($data);     // 转为url-query参数,如:a=1&b=2&c=3
    }
    $sign_temp = hash_hmac('sha1', $data, $secret_key); // 加密
    return $access_key . '_' . strtoupper($sign_temp); // 拼接最终签名
}

# python-demo
import hmac
from urllib.parse import urlencode
def sign(data):
    access_key = '后台获取'
    secret_key = '后台获取'
    sign_data = sorted(data.items(), key=lambda d: d[0])  # 按照升序排序
    sign_data = urlencode(sign_data) # 转为url-query参数,如:a=1&b=2&c=3
    sign_temp = hmac_sha1(secret_key, sign_data)  # 加密
    return access_key + '_' + sign_temp.upper()  # 拼接最终签名

3、接口请求域名

接口地址前缀为:

https://server.weitoupiao.com/api/

然后跟上具体接口地址,如:

https://server.weitoupiao.com/api/tpopen/wxxcxLogin

二、会话保持

调用wxxcxLogin或guestLogin接口后,系统会返回login_token字段,此字段后续接口请求中需要携带在请求头header中,字段名为Token。

三、关于特殊参数的post、get请求

部分接口需要的特殊参数类型,如:array、object等类型

array类型:按 val1,val2,val3 的形式传值

object类型:按 json 形式传值

本篇文章是否对您有所帮助呢?