微信开放平台-第三方平台开发实录
第一次开发微信开放平台很多流程都不了解还是倒叙的,而且官网文档上很多细节都没有说明白,比如:请求方式,接收参数方式等等,只能看日志来调试。吐槽结束,收!
用户公众号/小程序授权
Method: GET
URL: https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx
component_appid: 申请的第三方平台的id
pre_auth_code: 预权码,需要一系列操作才能等到下面会说,重点!!!
redirect_uri: 回调地址,上面的query参数要保存起来
auth_type: 微信扫描时显示的是公众号还是小程序,可不填
接下来的重点内容:获取pre_auth_code
1.获取component_verify_ticket
微信服务器会每十分钟推送一次component_verify_ticket,推送地址在第三方平台详情中。官方推送的component_verify_ticket进行了加密处理,需要先验签再解密。官方的解密方法
另外:文档中说component_verify_ticket最好保存起来
WeChat Server -> Your Server
Method: POST
URL: 你预留的推送地址?signature=xxx×tamp=xxx&nonce=xxx&encrypt_type=xxx&msg_signature=xxx
QueryParams:
signature: 没什么用
timestamp: 时间戳,验签时使用
nonce: 验签时使用
encrypt_type: 加密类型,没用
msg_signature: 密文,验签用
BodyParams:
<xml>
<AppId> </AppId>
<CreateTime>1413192605 </CreateTime>
<InfoType> </InfoType>
<ComponentVerifyTicket> </ComponentVerifyTicket>
</xml>
xml结构,需要解析获取ComponentVerifyTicket中的内容
2.获取component_access_token(时效2小时)
Your Server -> WeChat Server
Method: POST
URL: https://api.weixin.qq.com/cgi-bin/component/api_component_token
RequestBody:
{
"component_appid":"appid_value" , //第三方平台id
"component_appsecret": "appsecret_value", //第三方平台秘钥
"component_verify_ticket": "ticket_value" //刚刚获取的component_verify_ticket
}
ResponseBody:
{
"component_access_token":"xxx", // component_access_token,这个要存起来,不能每十分钟请求一次
"expires_in":7200 //过期时间
}
3. 获取pre_auth_code(时效10分钟,用存起来的component_access_token再次获取)
Your Server -> WeChat Server
Method: POST
URL: https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=刚刚的component_access_token
RequestBody:
{
"component_appid":"appid_value"
}
ResponseBody:
{
"pre_auth_code":"xxx", //朝思暮想的东东
"expires_in":600
}