django之微信支付JSAPI

本文介绍如何在Django项目中集成微信JSAPI支付,包括配置支付接口、生成支付预订单及处理支付回调等关键步骤。
摘要由CSDN通过智能技术生成
import hashlib
import json
import time
import xml.etree.ElementTree as ET
import requests

from common.common import generate_uid, get_timestamp
from mall.config import WEIXIN_NOTIFY_URL
from yaozc import settings


def get_spbill_create_ip(meta):
    if 'HTTP_X_FORWARDED_FOR' in meta:
        spbill_create_ip = meta['HTTP_X_FORWARDED_FOR']
    else:
        spbill_create_ip = meta['REMOTE_ADDR']
    return spbill_create_ip


def key_value_url(value):
    """将将键值对转为 key1=value1&key2=value2
    """
    string_sign = ''
    for k in sorted(value.keys()):
        string_sign += "{0}={1}&".format(k, value[k])
    return string_sign


def get_sign(params, is_need_openid):
    """生成sign
    """
    params = generate_params(params, is_need_openid)
    stringA = key_value_url(params)
    stringSignTemp = stringA + 'key=' + settings.WEIXIN_PAY_APIKEY  # APIKEY, API密钥,需要在商户后台设置
    sign = hashlib.md5(stringSignTemp.encode('utf-8')).hexdigest().upper()
    params['sign'] = sign
    return params


def generate_params(params, is_need_openid):
    '''根据微信支付不同调用方式生成不同params'''
    if not is_need_openid:
        # params.pop('openid')
        del params['openid']
    else:
        # params.pop('scene_info')
        del params['scene_info']
    return params


def re_sign_and_generate_params(prpay_id):
    '''JSAPI支付获取到prepay_id后重新生成签名以及参数'''
    params = {
        'appId': settings.WEIXIN_PUBLIC_APPID,
        'timeStamp': get_timestamp(),
        'nonceStr': generate_uid(length=30),
        'package': 'prepay_id={}'.format(prpay_id),
        'signType': 'MD5',
    }
    stringA = key_value_url(params)
    stringSignTemp = stringA + 'key=' + settings.WEIXIN_PAY_APIKEY  # APIKEY, API密钥,需要在
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值