python 微信支付 小程序红包 发放红包接口
python 微信支付 小程序红包 发放红包接口
文章目录
- python 微信支付 小程序红包 发放红包接口
- 前言
- 一、官方文档
- 二、使用步骤
- 1.引入,直接复制粘贴以下代码,新建wx_pay.py
- 2.使用,在同级目录下
- 总结
前言
随着小程序的不断发展,需要给用户发送小程序红包来增加留存。
小程序红包是微信支付提供给商户在小程序场景下向用户发放红包的营销工具。区别于普通现金红包通过公众号消息推送红包的方式,小程序红包可以实现用户直接在小程序页面中领取红包,领取流程更加顺畅。
开通小程序红包要先开通应用场景,我这里的场景是企业内部福利
一、官方文档
产品说明
https://pay.weixin.qq.com/wiki/doc/api/tools/miniprogram_hb.php?chapter=18_4&index=1
二、使用步骤
1.引入,直接复制粘贴以下代码,新建wx_pay.py
这个项目的原地址,以下的代码是我修改过的,新增了发送小程序红包的函数
https://github.com/Jolly23/wx_pay_python
代码如下(示例):
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import hashlib
import random
import string
import time
import urllib.request as urllib2
import urllib
import requeststry:from flask import request
except ImportError:request = Nonetry:from xml.etree import cElementTree as ETree
except ImportError:from xml.etree import ElementTree as ETreeclass WxPayError(Exception):def __init__(self, msg):super(WxPayError, self).__init__(msg)class WxPay(object):def __init__(self, wx_app_id, wx_mch_id, wx_mch_key, wx_notify_url):self.opener = urllib2.build_opener(urllib2.HTTPSHandler())self.WX_APP_ID = wx_app_idself.WX_MCH_ID = wx_mch_idself.WX_MCH_KEY = wx_mch_keyself.WX_NOTIFY_URL = wx_notify_url@staticmethoddef user_ip_address():return request.remote_addr if request else None@staticmethoddef nonce_str(length=32):char = string.ascii_letters + string.digitsreturn "".join(random.choice(char) for _ in range(length))@staticmethoddef to_utf8(raw):return raw.encode("utf-8") if isinstance(raw, str) else raw@staticmethoddef to_dict(content):raw = {}root = ETree.fromstring(content)for child in root:raw[child.tag] = child.textreturn raw@staticmethoddef random_num(length):digit_list = list(string.digits)random.shuffle(digit_list)return ''.join(digit_list[:length])def sign(self, raw):"""生成签名参考微信签名生成算法https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3"""raw = [(k, str(raw[k]) if isinstance(raw[k], (int, float)) else raw[k]) for k in sorted(raw.keys())]s = "&".join("=".join(kv) for kv in raw if kv[1])s += "&key={0}".format(self.WX_MCH_KEY)return hashlib.md5(self.to_utf8(s)).hexdigest().upper()def check(self, raw):"""验证签名是否正确"""sign = raw.pop("sign")return sign == self.sign(raw)def to_xml(self, data):"""将 dict 对象转换成微信支付交互所需的 XML 格式数据:param data: dict 对象:return: xml 格式数据"""xml = []for k in sorted(data.keys()):v = data.get(k)if k == 'detail' and not v.startswith('<![CDATA['):v = '<![CDATA[{}]]>'.format(v)xml.append('<{key}>{value}</{key}>'.format(key=k, value=v))return '<xml>{}</xml>'.format(''.join(xml))def fetch(self, url, data):req = urllib2.Request(url, data=self.to_xml(data))try:resp = self.opener.open(req, timeout=20)except urllib.error.URLError as e:resp = eprint(type(resp))re_info = resp.read()try:return self.to_dict(re_info)except ETree.ParseError:return re_infodef fetch_with_ssl(self, url, data, api_client_cert_path, api_client_key_path):req = requests.post(url, data=(self.to_xml(data)).encode('utf-8'),cert=(api_client_cert_path, api_client_key_path))return self.to_dict(req.content)def reply(self, msg, ok=True):code = "SUCCESS" if ok else "FAIL"return self.to_xml(dict(return_code=code, return_msg=msg))def unified_order(self, **data):"""统一下单详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1:param data: out_trade_no, body, total_fee, trade_typeout_trade_no: 商户订单号body: 商品描述total_fee: 标价金额, 整数, 单位 分trade_type: 交易类型user_ip 在flask框架下可以自动填写, 非flask框架需传入spbill_create_ip:return: 统一下单生成结果"""url = "https://api.mch.weixin.qq.com/pay/unifiedorder"# 必填参数if "out_trade_no" not in data:raise WxPayError(u"缺少统一支付接口必填参数out_trade_no")if "body" not in data:raise WxPayError(u"缺少统一支付接口必填参数body")if "total_fee" not in data:raise WxPayError(u"缺少统一支付接口必填参数total_fee")if "trade_type" not in data:raise WxPayError(u"缺少统一支付接口必填参数trade_type")# 关联参数if data["trade_type"] == "JSAPI" and "openid" not in data:raise WxPayError(u"trade_type为JSAPI时,openid为必填参数")if data["trade_type"] == "NATIVE" and "product_id" not in data:raise WxPayError(u"trade_type为NATIVE时,product_id为必填参数")user_ip = self.user_ip_address()if not user_ip and "spbill_create_ip" not in data:raise WxPayError(u"当前未使用flask框架,缺少统一支付接口必填参数spbill_create_ip")data.setdefault("appid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("notify_url", self.WX_NOTIFY_URL)data.setdefault("nonce_str", self.nonce_str())data.setdefault("spbill_create_ip", user_ip)data.setdefault("sign", self.sign(data))raw = self.fetch(url, data)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])err_msg = raw.get("err_code_des")if err_msg:raise WxPayError(err_msg)return rawdef js_pay_api(self, **kwargs):"""生成给JavaScript调用的数据详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6:param kwargs: openid, body, total_feeopenid: 用户openidbody: 商品名称total_fee: 标价金额, 整数, 单位 分out_trade_no: 商户订单号, 若未传入则自动生成:return: 生成微信JS接口支付所需的信息"""kwargs.setdefault("trade_type", "JSAPI")if "out_trade_no" not in kwargs:kwargs.setdefault("out_trade_no", self.nonce_str())raw = self.unified_order(**kwargs)package = "prepay_id={0}".format(raw["prepay_id"])timestamp = int(time.time())nonce_str = self.nonce_str()raw = dict(appId=self.WX_APP_ID, timeStamp=timestamp,nonceStr=nonce_str, package=package, signType="MD5")sign = self.sign(raw)return dict(package=package, appId=self.WX_APP_ID,timeStamp=timestamp, nonceStr=nonce_str, sign=sign)def order_query(self, **data):"""订单查询详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2:param data: out_trade_no, transaction_id至少填一个out_trade_no: 商户订单号transaction_id: 微信订单号:return: 订单查询结果"""url = "https://api.mch.weixin.qq.com/pay/orderquery"if "out_trade_no" not in data and "transaction_id" not in data:raise WxPayError(u"订单查询接口中,out_trade_no、transaction_id至少填一个")data.setdefault("appid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("sign", self.sign(data))raw = self.fetch(url, data)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef close_order(self, out_trade_no):"""关闭订单详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_3:param out_trade_no: 商户订单号:return: 申请关闭订单结果"""url = "https://api.mch.weixin.qq.com/pay/closeorder"data = {'out_trade_no': out_trade_no,'appid': self.WX_APP_ID,'mch_id': self.WX_MCH_ID,'nonce_str': self.nonce_str(),}data["sign"] = self.sign(data)raw = self.fetch(url, data)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef refund(self, api_cert_path, api_key_path, **data):"""申请退款详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4:param api_cert_path: 微信支付商户证书路径,此证书(apiclient_cert.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param api_key_path: 微信支付商户证书路径,此证书(apiclient_key.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param data: out_trade_no、transaction_id至少填一个, out_refund_no, total_fee, refund_feeout_trade_no: 商户订单号transaction_id: 微信订单号out_refund_no: 商户退款单号(若未传入则自动生成)total_fee: 订单金额refund_fee: 退款金额:return: 退款申请返回结果"""url = "https://api.mch.weixin.qq.com/secapi/pay/refund"if "out_trade_no" not in data and "transaction_id" not in data:raise WxPayError(u"订单查询接口中,out_trade_no、transaction_id至少填一个")if "total_fee" not in data:raise WxPayError(u"退款申请接口中,缺少必填参数total_fee")if "refund_fee" not in data:raise WxPayError(u"退款申请接口中,缺少必填参数refund_fee")if "out_refund_no" not in data:data.setdefault("out_refund_no", self.nonce_str())data.setdefault("appid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("op_user_id", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("sign", self.sign(data))raw = self.fetch_with_ssl(url, data, api_cert_path, api_key_path)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef refund_query(self, **data):"""查询退款提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5:param data: out_refund_no、out_trade_no、transaction_id、refund_id四个参数必填一个out_refund_no: 商户退款单号out_trade_no: 商户订单号transaction_id: 微信订单号refund_id: 微信退款单号:return: 退款查询结果"""url = "https://api.mch.weixin.qq.com/pay/refundquery"if "out_refund_no" not in data and "out_trade_no" not in data \and "transaction_id" not in data and "refund_id" not in data:raise WxPayError(u"退款查询接口中,out_refund_no、out_trade_no、transaction_id、refund_id四个参数必填一个")data.setdefault("appid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("sign", self.sign(data))raw = self.fetch(url, data)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef download_bill(self, bill_date, bill_type=None):"""下载对账单详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_6:param bill_date: 对账单日期:param bill_type: 账单类型(ALL-当日所有订单信息,[默认]SUCCESS-当日成功支付的订单, REFUND-当日退款订单):return: 数据流形式账单"""url = "https://api.mch.weixin.qq.com/pay/downloadbill"data = {'bill_date': bill_date,'bill_type': bill_type if bill_type else 'SUCCESS','appid': self.WX_APP_ID,'mch_id': self.WX_MCH_ID,'nonce_str': self.nonce_str()}data['sign'] = self.sign(data)raw = self.fetch(url, data)return rawdef send_red_pack(self, api_cert_path, api_key_path, **data):"""发给用户微信红包详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3:param api_cert_path: 微信支付商户证书路径,此证书(apiclient_cert.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param api_key_path: 微信支付商户证书路径,此证书(apiclient_key.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param data: send_name, re_openid, total_amount, wishing, client_ip, act_name, remarksend_name: 商户名称 例如: 天虹百货re_openid: 用户openidtotal_amount: 付款金额wishing: 红包祝福语 例如: 感谢您参加猜灯谜活动,祝您元宵节快乐!client_ip: 调用接口的机器Ip地址, 注:此地址为服务器地址act_name: 活动名称 例如: 猜灯谜抢红包活动remark: 备注 例如: 猜越多得越多,快来抢!:return: 红包发放结果"""url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"if "send_name" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数send_name")if "re_openid" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数re_openid")if "total_amount" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数total_amount")if "wishing" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数wishing")if "client_ip" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数client_ip")if "act_name" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数act_name")if "remark" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数remark")data.setdefault("wxappid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("mch_billno", u'{0}{1}{2}'.format(self.WX_MCH_ID, time.strftime('%Y%m%d', time.localtime(time.time())), self.random_num(10)))data.setdefault("total_num", 1)data.setdefault("scene_id", 'PRODUCT_4')data.setdefault("sign", self.sign(data))raw = self.fetch_with_ssl(url, data, api_cert_path, api_key_path)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef enterprise_payment(self, api_cert_path, api_key_path, **data):"""使用企业对个人付款功能详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2:param api_cert_path: 微信支付商户证书路径,此证书(apiclient_cert.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param api_key_path: 微信支付商户证书路径,此证书(apiclient_key.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param data: openid, check_name, re_user_name, amount, desc, spbill_create_ipopenid: 用户openidcheck_name: 是否校验用户姓名re_user_name: 如果 check_name 为True,则填写,否则不带此参数amount: 金额: 企业付款金额,单位为分desc: 企业付款描述信息spbill_create_ip: 调用接口的机器Ip地址, 注:此地址为服务器地址:return: 企业转账结果"""url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"if "openid" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数openid")if "check_name" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数check_name")if data['check_name'] and "re_user_name" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数re_user_name")if "amount" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数amount")if "desc" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数desc")if "spbill_create_ip" not in data:raise WxPayError(u"企业付款申请接口中,缺少必填参数spbill_create_ip")data.setdefault("mch_appid", self.WX_APP_ID)data.setdefault("mchid", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("partner_trade_no", u'{0}{1}{2}'.format(self.WX_MCH_ID, time.strftime('%Y%m%d', time.localtime(time.time())), self.random_num(10)))data['check_name'] = 'FORCE_CHECK' if data['check_name'] else 'NO_CHECK'data.setdefault("sign", self.sign(data))raw = self.fetch_with_ssl(url, data, api_cert_path, api_key_path)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return rawdef swiping_card_payment(self, **data):"""提交刷卡支付详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1:param data: body, out_trade_no, total_fee, auth_code, (可选参数 device_info, detail, goods_tag, limit_pay)body: 商品描述*out_trade_no: 商户订单号total_fee: 标价金额, 整数, 单位 分auth_code: 微信支付二维码扫描结果*device_info: 终端设备号(商户自定义,如门店编号)user_ip 在flask框架下可以自动填写, 非flask框架需传入spbill_create_ip:return: 统一下单生成结果"""url = "https://api.mch.weixin.qq.com/pay/micropay"# 必填参数if "body" not in data:raise WxPayError(u"缺少刷卡支付接口必填参数body")if "total_fee" not in data:raise WxPayError(u"缺少刷卡支付接口必填参数total_fee")if "out_trade_no" not in data:data.setdefault("out_trade_no", self.nonce_str())user_ip = self.user_ip_address()if not user_ip and "spbill_create_ip" not in data:raise WxPayError(u"当前未使用flask框架,缺少刷卡支付接口必填参数spbill_create_ip")data.setdefault("appid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("nonce_str", self.nonce_str())data.setdefault("spbill_create_ip", user_ip)data.setdefault("sign", self.sign(data))raw = self.fetch(url, data)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])err_msg = raw.get("err_code_des")if err_msg:raise WxPayError(err_msg)return rawdef send_miniprogram_red_pack(self, api_cert_path, api_key_path, **data):"""发给用户微信红包详细规则参考 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_xcx.php?chapter=18_2&index=3:param api_cert_path: 微信支付商户证书路径,此证书(apiclient_cert.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param api_key_path: 微信支付商户证书路径,此证书(apiclient_key.pem)需要先到微信支付商户平台获取,下载后保存至服务器:param data: send_name, re_openid, total_amount, wishing, act_name, remarksend_name: 商户名称 例如: 天虹百货re_openid: 用户openidtotal_amount: 付款金额wishing: 红包祝福语 例如: 感谢您参加猜灯谜活动,祝您元宵节快乐!act_name: 活动名称 例如: 猜灯谜抢红包活动remark: 备注 例如: 猜越多得越多,快来抢!:return: 红包发放结果"""url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb" # 小程序红包if "send_name" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数send_name")if "re_openid" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数re_openid")if "total_amount" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数total_amount")if "wishing" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数wishing")if "act_name" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数act_name")if "remark" not in data:raise WxPayError(u"向用户发送红包接口中,缺少必填参数remark")data.setdefault("wxappid", self.WX_APP_ID)data.setdefault("mch_id", self.WX_MCH_ID)data.setdefault("notify_way", 'MINI_PROGRAM_JSAPI') # 小程序data.setdefault("nonce_str", self.nonce_str())data.setdefault("mch_billno", u'{0}{1}{2}'.format(self.WX_MCH_ID, time.strftime('%Y%m%d', time.localtime(time.time())), self.random_num(10)))data.setdefault("total_num", 1)data.setdefault("scene_id", 'PRODUCT_4')data.setdefault("sign", self.sign(data))print(data)raw = self.fetch_with_ssl(url, data, api_cert_path, api_key_path)if raw["return_code"] == "FAIL":raise WxPayError(raw["return_msg"])return raw
2.使用,在同级目录下
代码如下(示例):
from .wx_pay import WxPaywx_pay = WxPay(wx_app_id='WX_APP_ID', # 微信平台appidwx_mch_id='WX_MCH_ID', # 微信支付商户号wx_mch_key='WX_MCH_KEY',# wx_mch_key 微信支付重要密钥,请登录微信支付商户平台,在 账户中心-API安全-设置API密钥设置wx_notify_url='http://www.example.com/pay/weixin/notify'# wx_notify_url 接受微信付款消息通知地址(通常比自己把支付成功信号写在js里要安全得多,推荐使用这个来接收微信支付成功通知)# wx_notify_url 开发详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
)wx_pay.send_miniprogram_red_pack(# 证书获取方法请阅读:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3# api_cert_path: 微信支付商户证书(apiclient_cert.pem)的本地保存路径api_cert_path='/home/xxx/SERVER/ext_file/apiclient_cert.pem',# api_cert_path: 微信支付商户证书(apiclient_key.pem)的本地保存路径api_key_path='/home/xxx/SERVER/ext_file/apiclient_key.pem',send_name=u'***公众号发送红包测试***', # 红包名称re_openid=u'***to_user_openid***', # 要接收红包的用户openidtotal_amount=100, # total_fee 单位是 分, 100 = 1元, 最大499元wishing=u'***感谢参与测试***', # 祝福语act_name=u'***微信支付测试系统***', # 活动名称remark=u'***感谢参与***' # 备注
)
该处使用的小程序发送红包接口。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了python 微信支付 小程序红包 发放红包接口的使用,还有其他的函数和方法。
python 微信支付 小程序红包 发放红包接口相关推荐
- Python微信订餐小程序课程汇总
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 你将收获 从基础语法入手,构建MVC架构 增进对小程序和后端API的理解认识 从项 ...
- 微信支付(小程序)使用通联扣款通道
微信支付(小程序)使用通联扣款通道 前言 具体步骤 前言 之前公司的小程序的微信支付使用的是微信自己的扣款通道,现在觉得费率太高想更换,通联那边工作人员说是可以支持,但是问他怎么跟现有微信支付打通确说 ...
- jsapi支付签名_微信支付小程序支付全流程
点击蓝色字关注我们! 一个努力中的公众号 长的好看的人都关注了 本文给大家讲解微信小程序支付全流程,以及相关功能源代码,项目不开放,带来不便尽请谅解.小程序支付主要包含如下几步骤,1.预下单-调用微信 ...
- python 微信自动回复小程序
#微信自动回复小程序,需要pip安装itchat,codesc,祝福语可以自己调整,数量自定,i_wm = int(round(random.random()*30,0))调整30的数量即可. #运行 ...
- 微信支付-小程序支付全流程
点击蓝色字关注我们! 一个努力中的公众号 长的好看的人都关注了 本文给大家讲解微信小程序支付全流程,以及相关功能源代码,项目不开放,带来不便尽请谅解.小程序支付主要包含如下几步骤,1.预下单-调用微信 ...
- nodejs实现微信支付小微商户申请入驻接口
微信支付小微商户可以通过小程序<微信买单服务商助手>来进件,也可以通过API接口来进件(详情可查阅小微商户专属接口文档). 2种方式进件后的商户是有区别的 不同进件方式下的小微商户对比 ...
- 企业付款到零钱「微信小程序别样发放红包」
目录 一.开发前的准备工作 二.接入微信企业付款到零钱API 1)接入「企业付款到零钱」API 2)接入「查询企业付款」API 三.开发过程的参数封装以及工具类封装 四.调试注意事项汇总 一.开发前的 ...
- 微信支付小程序支付和APP支付
这里介绍的是微信小程序支付和APP支付 引入的依赖是微信支付第三方jar weixin-java-pay github:WxJava <dependency><groupId> ...
- 微信支付:小程序支付/扫码支付
0.yml文件配置 1.微信支付controller import io.swagger.annotations.Api; import io.swagger.annotations.ApiOpera ...
最新文章
- xcode升级xcode9 1之后报错swift stdlib tool error
- [ c++] cmake 编译时 undefined reference to `std::cout‘ 错误的解决方案
- Redis集群配置和常见异常解决
- 老司机带你深入浅出 Collection
- Linux TCP队列相关参数的总结
- ML之Anaconda:关于Anaconda集成平台简介、安装、使用方法的详细攻略
- NG RouteReuseStrategy(路由复用策略)
- 程序员放弃月薪2W的工作,改行做销售,结果垫底,网友:瞎折腾
- 什么是RUTP协议?RUDP协议在视频会议系统中的应用
- c++调用python接口_PySpark源码解析,教你用Python调用高效Scala接口,搞定大规模数据分析...
- 第129天:node.js安装方法
- SystemVue介绍
- Markdown编辑器语法之代码高亮、标记和文字颜色
- VSCode加入右键功能菜单
- Unite之夜|千人派对开启狂欢周末,多重惊喜为你呈现!
- android模拟器字体,真正免root的ifont字体软件详细使用教程
- 微信支付.商家转账到零钱案例
- var foo =function (){}与function foo()的区别
- android 高德地图GPS点校正
- Lost connection to MySQL server during query问题
热门文章
- 快手的推广方法以及引流技巧
- windows7系统笔记本设置成虚拟WiFi热点(即“无线路由器”)
- 忽然发现Google拼音输入法还有个好处 中文分词
- 智能视频分析在数字城管中的应用
- 【IoT】什么是物联网?其发展前景如何?
- 达利欧《原则》读书思考笔记
- IRIS 2021 技术文档 First Look 28 - InterSystems 公钥基础设施 (PKI)
- FFplay源码分析-avformat_open_input
- 全国各省及城市的市场主体、企业数量排名,粤苏鲁浙分列前四
- PDF怎么转CAD?这些方法值得收藏