å¾®ä¿¡å®æ¹æ¥å£æä½ WechatBasic
=================================
.. py:class:: wechat_sdk.basic.WechatBasic(token=None, appid=None, appsecret=None, partnerid=None, partnerkey=None, paysignkey=None, access_token=None, access_token_expires_at=None, jsapi_ticket=None, jsapi_ticket_expires_at=None, checkssl=False)
å¾®ä¿¡åºæ¬åè½ç±»
:param str token: 微信 Token
:param str appid: App ID
:param str appsecret: App Secret
:param str partnerid: è´¢ä»éåæ·èº«ä»½æ è¯, æ¯ä»æéä¸ç¨
:param str partnerkey: è´¢ä»éåæ·æéå¯é¥ Key, æ¯ä»æéä¸ç¨
:param str paysignkey: åæ·ç¾åå¯é¥ Key, æ¯ä»æéä¸ç¨
:param str access_token: ç´æ¥å¯¼å
¥ç ``access_token`` å¼, 该å¼éè¦å¨ä¸ä¸æ¬¡è¯¥ç±»å®ä¾åä¹åæå¨è¿è¡ç¼å并卿¤å¤ä¼ å
¥, 妿ä¸ä¼ å
¥, å°ä¼å¨éè¦æ¶èªå¨éæ°è·å
:param str access_token_expires_at: ç´æ¥å¯¼å
¥ç ``access_token`` çè¿ææ¥æï¼è¯¥å¼éè¦å¨ä¸ä¸æ¬¡è¯¥ç±»å®ä¾åä¹åæå¨è¿è¡ç¼å并卿¤å¤ä¼ å
¥, 妿ä¸ä¼ å
¥, å°ä¼å¨éè¦æ¶èªå¨éæ°è·å
:param str jsapi_ticket: ç´æ¥å¯¼å
¥ç ``jsapi_ticket`` å¼, 该å¼éè¦å¨ä¸ä¸æ¬¡è¯¥ç±»å®ä¾åä¹åæå¨è¿è¡ç¼å并卿¤å¤ä¼ å
¥, 妿ä¸ä¼ å
¥, å°ä¼å¨éè¦æ¶èªå¨éæ°è·å
:param str jsapi_ticket_expires_at: ç´æ¥å¯¼å
¥ç ``jsapi_ticket`` çè¿ææ¥æï¼è¯¥å¼éè¦å¨ä¸ä¸æ¬¡è¯¥ç±»å®ä¾åä¹åæå¨è¿è¡ç¼å并卿¤å¤ä¼ å
¥, 妿ä¸ä¼ å
¥, å°ä¼å¨éè¦æ¶èªå¨éæ°è·å
:param boolean checkssl: æ¯å¦æ£æ¥ SSL, é»è®¤ä¸º False, å¯é¿å
urllib3 ç InsecurePlatformWarning è¦å
**å®ä¾å说æï¼**
1. å½å®ä¾å WechatBasic æ¶ï¼ä½ å¯ä»¥ä¼ éä¸è¿°åæ°è¯´æä¸ä»»æå¤ä¸ªåæ°è¿å»ï¼ä½æ¯ä¼ éåæ°ä¸è¶³å°ä¼å¨ä½¿ç¨é¨ååè½æ¶å¼å对åºçå¼å¸¸ã
**è½ç¶è®¤è¯è®¢é
å·ãæªè®¤è¯æå¡å·æ¥æ appid å appsecretï¼ä½ä¸ä»£è¡¨å
¶è½è°ç¨é«çº§æ¥å£** ï¼è¿ä¸¤ç§ç±»åçè´¦å·ä»
è½è¿è¡èªå®ä¹èååJSç¸å
³æä½ï¼è¿è¡å
¶ä»æé夿ä½ä»ç¶ä¼æåºå¼å¸¸ ``OfficialAPIError``
2. **详ç»è¯´æä¸ä¸ access_token, access_token_expires_at, jsapi_ticket, jsapi_ticket_expires_at åæ°çä¼ å
¥é®é¢ï¼**
å 为æ¤å¼åå
并䏿ç®ä»¥æå¡å¨çæ¹å¼å¸¸é©»ï¼æä»¥ï¼æ¯æ¬¡è¯·æ±åä¼éæ°å®ä¾å ``WechatBasic`` ï¼è微信ç ``access_token`` å ``jsapi_ticket`` çæææä¸º 7200 ç§ï¼ä¸å¯è½æ¯æ¬¡å®ä¾åçæ¶åå»éæ°è·åï¼æä»¥éè¦ä½ ä»¥ä½ èªå·±çæ¹å¼å»ä¿åä¸ä¸æ¬¡è¯·æ±ä¸å®ä¾ååç ``WechatBasic`` ä¸ ``access_token``, ``access_token_expires_at``, ``jsapi_ticket``, ``jsapi_ticket_expires_at`` åæ°ï¼å¹¶å¨ä¸ä¸æ¬¡çå®ä¾åçè¿ç¨ä¸ä¼ å
¥ï¼ä»¥æ¤æ¥ä¿è¯ ``access_token`` å ``jsapi_ticket`` çæä¹
æ§ã
è·å ``access_token`` å ``access_token_expires_at`` çæ¹å¼ä¸ºè°ç¨ :func:`get_access_token` æ¹æ³
è·å ``jsapi_ticket`` å ``jsapi_ticket_expires_at`` çæ¹å¼ä¸ºè°ç¨ :func:`get_jsapi_ticket` æ¹æ³
ä¸ä¸çæ¬å°ä¼èèæ´ä¸ºç®åéç¨çæ¹æ³ï¼å¨æ°çæ¬åå¸ä¹åï¼è¯·ç¨ä½ èªå·±çæ¹å¼æå¾å°ç ``access_token``, ``access_token_expires_at``, ``jsapi_ticket``, ``jsapi_ticket_expires_at`` ä¿åèµ·æ¥ï¼ä¸ç®¡æ¯æä»¶ï¼ç¼åè¿æ¯æ°æ®åºé½å¯ä»¥ï¼è·åå®ä»¬çæ¶é´å¯ä»¥é常èªç±ï¼ä¸ç®¡æ¯ååå®ä¾åå®æè¿æ¯å¾å°ååºç»æä¹å齿²¡æé®é¢ï¼å¨è°ç¨å¯¹åºå½æ°æ¶å¦ææ²¡æ ``access_token`` æ ``jsapi_ticket`` çè¯ä¼èªå¨è·åç :)
.. py:method:: check_signature(signature, timestamp, nonce)
éªè¯å¾®ä¿¡æ¶æ¯ç宿§
è¿è¡æ¶æ£æ¥ï¼``token``
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str signature: 微信å å¯ç¾å
:param str timestamp: æ¶é´æ³
:param str nonce: éæºæ°
:return: éè¿éªè¯è¿å ``True``, æªéè¿éªè¯è¿å ``False``
.. py:method:: generate_jsapi_signature(timestamp, noncestr, url, jsapi_ticket=None)
ä½¿ç¨ jsapi_ticket 对 url è¿è¡ç¾å
彿ªæä¾ ``jsapi_ticket`` åæ°æ¶æ£æ¥ï¼``appid``, ``appsecret``
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·ï¼è®¤è¯/æªè®¤è¯æå¡å·
:param str timestamp: æ¶é´æ³
:param str noncestr: éæºæ°
:param str url: è¦ç¾åç urlï¼ä¸å
å« # åå
¶åé¢é¨å
:param str jsapi_ticket: (å¯éåæ°) jsapi_ticket å¼ (å¦ä¸æä¾å°èªå¨éè¿ appid å appsecret è·å)
:return: è¿å sha1 ç¾åç hexdigest å¼
.. py:method:: parse_data(data)
è§£æå¾®ä¿¡æå¡å¨åéè¿æ¥çæ°æ®å¹¶ä¿åç±»ä¸
è¿è¡æ¶æ£æ¥ï¼æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str data: HTTP Request ç Body æ°æ®
:raises: ParseError è§£æå¾®ä¿¡æå¡å¨æ°æ®é误, æ°æ®ä¸åæ³
.. py:method:: get_message()
è·åè§£æå¥½ç :class:`WechatMessage` 对象
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:return: è§£æå¥½ç WechatMessage 对象
.. py:attribute:: message
åè½å :func:`get_message`
.. py:method:: get_access_token()
è·å Access Token å Access Token è¿ææ¥æ, ä»
ä¾ç¼å使ç¨, 妿叿å¾å°åçç Access Token è¯·æ±æ°æ®è¯·ä½¿ç¨ :func:`grant_token`
è¿è¡æ¶æ£æ¥ï¼``appid``, ``appsecret``
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:return: dict 对象, key å
æ¬ ``access_token`` å ``access_token_expires_at``
.. py:method:: get_jsapi_ticket()
è·å Jsapi Ticket å Jsapi Ticket è¿ææ¥æ, ä»
ä¾ç¼å使ç¨, 妿叿å¾å°åçç Jsapi Ticket è¯·æ±æ°æ®è¯·ä½¿ç¨ :func:`grant_jsapi_ticket`
è¿è¡æ¶æ£æ¥ï¼``appid``, ``appsecret``
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:return: dict 对象, key å
æ¬ `jsapi_ticket` å `jsapi_ticket_expires_at`
.. py:method:: response_text(content, escape=False)
å°æåä¿¡æ¯ content ç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str content: å夿å
:param boolean escape: æ¯å¦è½¬ä¹è¯¥ææ¬å
容 (é»è®¤ä¸è½¬ä¹)
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: response_image(media_id)
å° media_id æä»£è¡¨çå¾çç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str media_id: å¾çç MediaID
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: response_voice(media_id)
å° media_id æä»£è¡¨çè¯é³ç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str media_id: è¯é³ç MediaID
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: response_video(media_id [, title=None, description=None])
å° media_id æä»£è¡¨çè§é¢ç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str media_id: è§é¢ç MediaID
:param str title: è§é¢æ¶æ¯çæ é¢
:param str description: è§é¢æ¶æ¯çæè¿°
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: response_music(music_url [, title=None, description=None, hq_music_url=None, thumb_media_id=None])
å°é³ä¹ä¿¡æ¯ç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param str music_url: é³ä¹é¾æ¥
:param str title: é³ä¹æ é¢
:param str description: é³ä¹æè¿°
:param str hq_music_url: é«è´¨éé³ä¹é¾æ¥, WIFIç¯å¢ä¼å
使ç¨è¯¥é¾æ¥ææ¾é³ä¹
:param str thumb_media_id: 缩ç¥å¾ç MediaID
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: response_news(articles)
å°æ°é»ä¿¡æ¯ç»è£
为符å微信æå¡å¨è¦æ±çååºæ°æ®
è¿è¡æ¶æ£æ¥ï¼æ¯å¦å·²è°ç¨ :func:`parse_data` è¿è¡è§£æ
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯/æªè®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
:param list articles: list 对象, æ¯ä¸ªå
ç´ ä¸ºä¸ä¸ª dict 对象, key å
å« ``title``, ``description``, ``picurl``, ``url``
:return: 符å微信æå¡å¨è¦æ±ç XML ååºæ°æ®
.. py:method:: grant_token(override=True)
è·å Access Token
è¿è¡æ¶æ£æ¥ï¼``appid``, ``appsecret``
å¯ç¨å
¬ä¼å·ç±»åï¼è®¤è¯è®¢é
å·, 认è¯/æªè®¤è¯æå¡å·
详æ
请åè `