1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zakzou-weixin-python

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ВЭЙСИН СДК

Предоставляет полный набор функций для входа в систему через WeChat, управления общедоступными аккаунтами, оплаты через WeChat и обмена сообщениями через WeChat.

Документация

Добро пожаловать на отправку Pull requests.

Если вам нужно использовать только некоторые из модулей, вы можете обратиться к конкретному модулю в документации.

Вы можете комбинировать их, обратившись к быстрому старту.

Документация

Установка

Используя pip:

sudo pip install weixin-python

Используя easy_install:

sudo easy_install weixin-python

Текущая версия v0.5.7

Функции

  • Вход в систему через WeChat
  • Платежи через WeChat
  • Общедоступные аккаунты через WeChat
  • Обмен сообщениями через WeChat

Исключения

Имя родительского исключения — WeixinError. Имена дочерних исключений — WeixinLoginError, WeixinPayError, WeixinMPError, WeixinMsgError.

Использование

Параметры

  • WEIXIN_TOKEN обязательно, токен для активного обмена сообщениями WeChat
  • WEIXIN_SENDER необязательно, отправитель сообщений WeChat
  • WEIXIN_EXPIRES_IN необязательно, срок действия сообщений WeChat
  • WEIXIN_MCH_ID обязательно, идентификатор продавца WeChat (числа)
  • WEIXIN_MCH_KEY обязательно, ключ продавца WeChat
  • WEIXIN_NOTIFY_URL обязательно, обратный адрес WeChat
  • WEIXIN_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)

Сообщения WeChat

Если используется 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 "欢迎订阅我们的公众号"

Вход в WeChat

@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

Оплата через WeChat

Обратите внимание: параметр 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zakzou-weixin-python.git
git@api.gitlife.ru:oschina-mirror/zakzou-weixin-python.git
oschina-mirror
zakzou-weixin-python
zakzou-weixin-python
master