ВЭЙСИН СДК
Предоставляет полный набор функций для входа в систему через WeChat, управления общедоступными аккаунтами, оплаты через WeChat и обмена сообщениями через WeChat.
Добро пожаловать на отправку Pull requests.
Если вам нужно использовать только некоторые из модулей, вы можете обратиться к конкретному модулю в документации.
Вы можете комбинировать их, обратившись к быстрому старту.
Используя pip:
sudo pip install weixin-python
Используя easy_install:
sudo easy_install weixin-python
Текущая версия v0.5.7
Имя родительского исключения — WeixinError
.
Имена дочерних исключений — WeixinLoginError
, WeixinPayError
, WeixinMPError
, WeixinMsgError
.
WEIXIN_TOKEN
обязательно, токен для активного обмена сообщениями WeChatWEIXIN_SENDER
необязательно, отправитель сообщений WeChatWEIXIN_EXPIRES_IN
необязательно, срок действия сообщений WeChatWEIXIN_MCH_ID
обязательно, идентификатор продавца WeChat (числа)WEIXIN_MCH_KEY
обязательно, ключ продавца WeChatWEIXIN_NOTIFY_URL
обязательно, обратный адрес WeChatWEIXIN_MCH_CERT_FILE
необязательноWEIXIN_APP_ID
обязательно, ID приложения WeChat для общедоступных аккаунтовWEIXIN_APP_SECRET
обязательно, секретный ключ приложения WeChat для общедоступных аккаунтовВсе обязательные параметры зависят от конкретной включенной функции. Если вам нужен только вход в систему через WeChat, вам нужны только WEIXIN_APP_ID
и WEIXIN_APP_SECRET
.
Сообщения WeChat:
WEIXIN_TOKEN
WEIXIN_SENDER
WEIXIN_EXPIRES_IN
Вход в WeChat:
WEIXIN_APP_ID
WEIXIN_APP_SECRET
Платформа WeChat для общедоступных аккаунтов:
WEIXIN_APP_ID
WEIXIN_APP_SECRET
Оплата через WeChat:
WEIXIN_APP_ID
WEIXIN_MCH_ID
WEIXIN_MCH_KEY
WEIXIN_NOTIFY_URL
WEIXIN_MCH_KEY_FILE
WEIXIN_MCH_CERT_FILE
При использовании Flask:
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from flask import Flask, jsonify, request, url_for
from weixin import Weixin, WeixinError
app = Flask(__name__)
app.debug = True
# 具体导入配
# 根据需求导入仅供参考
app.config.fromobject(dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET=''))
# 初始化微信
weixin = Weixin()
weixin.init_app(app)
# 或者
# weixin = Weixin(app)
Если не используется Flask:
# 根据需求导入仅供参考
config = dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET='')
weixin = Weixin(config)
Если используется Django, добавьте функцию просмотра как:
url(r'^/$', weixin.django_view_func(), name='index'),
Если это Flask, добавьте функцию просмотра как:
app.add_url_rule("/", view_func=weixin.view_func)
@weixin.all
def all(**kwargs):
"""
监听所有没有更特殊的事件
"""
return weixin.reply(kwargs['sender'], sender=kwargs['receiver'], content='all')
@weixin.text()
def hello(**kwargs):
"""
监听所有文本消息
"""
return "hello too"
@wexin.text("help")
def world(**kwargs):
"""
监听help消息
"""
return dict(content="hello world!")
@weixin.subscribe
def subscribe(**kwargs):
"""
监听订阅消息
"""
print kwargs
return "欢迎订阅我们的公众号"
@app.route("/login")
def login():
"""登陆跳转地址"""
openid = request.cookies.get("openid")
next = request.args.get("next") or request.referrer or "/",
if openid:
return redirect(next)
callback = url_for("authorized", next=next, _external=True)
url = weixin.authorize(callback, "snsapi_base")
return redirect(url)
@app.route("/authorized")
def authorized():
"""登陆回调函数"""
code = request.args.get("code")
if not code:
return "ERR_INVALID_CODE", 400
next = request.args.get("next", "/")
data = weixin.access_token(code)
openid = data.openid
resp = redirect(next)
expires = datetime.now() + timedelta(days=1)
resp.set_cookie("openid", openid, expires=expires)
return resp
Обратите внимание: параметр timestamp для оплаты через веб-сайт WeChat должен быть строкой.
@app.route("/pay/jsapi")
def pay_jsapi():
"""Запрос на оплату через WeChat на веб-сайте"""
try:
out_trade_no = weixin.nonce_str
raw = weixin.jsapi(openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1)
return jsonify(raw)
except WeixinError, e:
print e.message
return e.message, 400 ```
@app.route("/pay/notify")
def pay_notify():
"""
微信异步通知
"""
data = weixin.to_dict(request.data)
if not weixin.check(data):
return wexin.reply("Подпись не проверена", False)
# Обработка бизнес-логики
return weixin.reply("OK", True)
Внимание: если используется распределённая система, необходимо самостоятельно реализовать функции access_token
и jsapi_ticket
.
access_token
по умолчанию хранится в файле ~/.access_token
.
jsapi_ticket
по умолчанию хранится в файле ~/.jsapi_ticket
.
По умолчанию файлы находятся в каталоге (HOME), если необходимо изменить каталог на другой, можно импортировать библиотеку и затем изменить его следующим образом:
import weixin
DEFAULT_DIR = "/tmp"
Получение уникального сертификата публичного аккаунта:
weixin.access_token
Получение билета:
weixin.jsapi_ticket
Создание временного QR-кода:
data = weixin.qrcode_create(123, 30)
print weixin.qrcode_show(data.ticket)
Создание постоянного QR-кода:
# scene_id тип
weixin.qrcode_create_limit(123)
# scene_str тип
weixin.qrcode_create_limit("456")
Преобразование длинного URL в короткий:
weixin.shorturl("http://example.com/test")
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )