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

OSCHINA-MIRROR/minkedong-wxpay_sdk

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:15 569e50f

wxpay_sdk

微信支付 (временно реализована оплата с помощью сканирования кода, оплаты через приложение и H5-платформу, а также вспомогательные функции для обратных вызовов)

В работе пока используются только эти функции. На основе официальной версии PHP-SDK от WeChat реализован Python-вариант. В будущем планируется продолжить разработку и добавить другие типы платежей.

Если вам нужна эта функция, вы можете использовать её!

Установка: pip install wxpay_sdk

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

1. Оплата с помощью сканирования QR-кода (режим 2)

params = {
    'body': u'Ipad mini  16G  белый', # Краткое описание товара или платёжного поручения, например: Ipad mini  16G  белый
    
    'out_trade_no': '9001231230956', # Внутренний номер заказа в системе продавца, 32 символа, может содержать буквы
    
    'total_fee': 2, # Общая сумма заказа, в единицах
    
    'product_id': '1116', # Идентификатор товара
    
    'notify_url': 'http://145657w88r.iok.la/weixin/pay_callback/',
    
    'trade_type':'NATIVE',
    
}


wechatpay_qrcode_config = {

    'wechatpay_appid': 'xxxxxxx',  # Обязательно, идентификатор публичного аккаунта WeChat, предоставленный WeChat
    
    'wechatpay_key': 'xxxxx',  # Обязательно, ключ appid
    
    'wechatpay_mchid': 'xxxxx',  # Обязательно, номер торгового счёта, предоставленный WeChat для оплаты
    
    'wechatpay_appsecret': 'xxxxxx',
    
}

wxpay = WxPayBasic(conf=wechatpay_qrcode_config)

code_url = wxpay.unifiedorder2_get_code_url(**params)

Последующая обработка превращает code_url в QR-код для оплаты с помощью сканирования.
.........

2. Оплата через приложение

params = {

    'body': u'Ipad mini  16G  белый', # Краткое описание товара или платёжного поручения, например: Ipad mini  16G  белый
    
    'out_trade_no': '9401231230956', # Внутренний номер заказа в системе продавца, 32 символа, может содержать буквы
    
    'total_fee': 2, # Общая сумма заказа, в единицах
    
    'product_id': '2116', # Идентификатор товара
    
    'notify_url': 'http://145657w88r.iok.la/weixin/pay_callback/',
    
    'trade_type':'APP',
    
}

wechatpay_qrcode_config = {

    'wechatpay_appid': 'xxxxx',  # Обязательно, идентификатор публичного аккаунта WeChat, предоставленный WeChat
    
    'wechatpay_key': 'xxxxxxx',  # Обязательно, ключ appid
    
    'wechatpay_mchid': 'xxxxx',  # Обязательно, номер торгового счёта, предоставленный WeChat для оплаты
    
    'wechatpay_appsecret': 'xxxxxx',
    
}

wxpay = WxPayBasic(conf=wechatpay_qrcode_config)

app_result = wxpay.unifiedorder_get_app_url(**params)

Последующая обработка передаёт app_result клиенту приложения, который использует этот параметр для инициирования запроса через SDK клиента.
..........

3. H5-платформа WeChat

params = {

'openid':'',

'body': u'Ipad mini  16G  белый', # Краткое описание товара или платёжного поручения, например: Ipad mini  16G  белый

'out_trade_no': '940123123sdaf956', # Внутренний номер заказа в системе продавца, 32 символа, может содержать буквы

'total_fee': 1, # Общая сумма заказа, в единицах

'product_id': '2116', # Идентификатор товара

'notify_url': 'http://145657w88r.iok.la/weixin/pay_callback/',

'trade_type':'JSAPI',

}

wechatpay_qrcode_config = {

'wechatpay_appid': 'xxxxxxxxxxx',  # Обязательно, идентификатор публичного аккаунта WeChat, предоставленный WeChat

'wechatpay_key': 'xxxxxxxxxxx',

'wechatpay_mchid': 'xxxxxxxxxxx',  # Обязательно, номер торгового счёта, предоставленный WeChat для оплаты

'wechatpay_appsecret': 'xxxxxxxxxxx', # Обязательно, ключ appid

}

wxpay = WxPayBasic(conf=wechatpay_qrcode_config)

app_result = wxpay.get_js_api_parameters(**params)

Последующая обработка передаёт app_result в клиент H5 на WeChat, который использует этот параметр для инициирования запроса через SDK клиента. ..........

4. Определение обратного вызова для оплаты (обратите внимание: для оплаты с использованием сканирования и оплаты через приложение используются разные конфигурации)

(на примере представлений Django)

@csrf_exempt
def wechat_pay_callback(request, *args, **kwargs):

    req_xml_str = request.body

    # Обработка обратного вызова: проверка подписи, проверка заказа
    # Возврат результата проверки (может быть возвращён непосредственно в WeChat в виде xml)
    wechatpay_qrcode_config = {
        'wechatpay_appid': 'xxxxxx',  # Обязательно, идентификатор публичного аккаунта WeChat, предоставленный WeChat
        'wechatpay_key': 'xxxxxx',  # Обязательно, ключ appid
        'wechatpay_mchid': 'xxxxxx',  # Обязательно, номер торгового счёта, предоставленный WeChat для оплаты
        'wechatpay_appsecret': 'xxxxxxx',
    }
    # wechatpay_qrcode_config = {
    #     'wechatpay_appid': 'xxxxx',  # Обязательно, идентификатор публичного аккаунта WeChat, предоставленный WeChat
    #     'wechatpay_key': 'xxxxx',  # Обязательно, ключ appid
    #     'wechatpay_mchid': 'xxxxx',  # Обязательно, номер торгового счёта, предоставленный WeChat для оплаты
    #     'wechatpay_appsecret': 'xxxxx',
    # }
    wxpay = WxPayBasic(conf=wechatpay_qrcode_config)
    res_xml_str = wxpay.wxpay_callback(req_xml_str)

    res_xml_dict = xmltodict.parse(res_xml_str)
    if res_xml_dict['xml']['return_code'] == 'SUCCESS':
        # Обработка логики заказа продавца
        req_xml_dict = xmltodict.parse(req_xml_str)
        total_fee = req_xml_dict['xml']['total_fee']
        out_trade_no = req_xml_dict['xml']['out_trade_no']
        ............
    else:
        print 'wxpay callback error'

    return HttpResponse(res_xml_str, content_type='text/xml')

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/minkedong-wxpay_sdk.git
git@api.gitlife.ru:oschina-mirror/minkedong-wxpay_sdk.git
oschina-mirror
minkedong-wxpay_sdk
minkedong-wxpay_sdk
master