Package: jd-wechatpay
jd-wechatpayJD 微信支付 V3 版 python 库。安装pip install jd-wechatpay适用对象jd-wechatpay同时支持微信支付直连模式及服务商模式，接口说明详见官网。项目参考https://gitee.com/minibear2021/wechatpayv3，区别和其区别是，调用方法时，做了分类。 对 Core.request 方法做了扩展。github导入from jd_wechatpay import WeChatPay, WeChatPayType使用方法准备参考微信官方文档准备好密钥, 证书文件和配置(证书/密钥/签名介绍)商户 API 证书私钥：PRIVATE_KEY。商户申请商户 API 证书时，会生成商户私钥，并保存在本地证书文件夹的文件api_client_key.pem中。:warning: 不要把私钥文件暴露在公共场合，如上传到 Github，写在客户端代码等。商户 API 证书序列号：CERT_SERIAL_NO。每个证书都有一个由 CA 颁发的唯一编号，即证书序列号。扩展阅读如何查看证书序列号。**微信支付 APIv3 密钥：API_V3_KEY**，是在回调通知和微信支付平台证书下载接口中，为加强数据安全，对关键信息AES-256-GCM加密时使用的对称加密密钥。一个最小的后端以下代码演示一个带有Native 支付下单接口和支付通知接口的后端。
服务商模式import os
import logging
from flask import Flask, jsonify
from jd_wechatpay import WeChatPay, WeChatPayType
from jd_tools import get_nonce


# 微信支付商户号，服务商模式下为服务商户号，即官方文档中的sp_mchid。
SP_MCHID = '1230000109'
SUB_MCH_ID = '1230000000'   # 服务商下子商户号

# 商户证书私钥，此文件不要放置在下面设置的CERT_DIR目录里。
with open('path_to_key/api_client_key.pem') as f:
    PRIVATE_KEY = f.read()

# 商户证书序列号
CERT_SERIAL_NO = '444F4864EA9B34415...'

# API v3密钥， https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_2.shtml
API_V3_KEY = 'MIIEvwIBADANBg1qh2iG9w0B5QE...'

# APPID，应用ID，服务商模式下为服务商应用ID，即官方文档中的sp_appid，也可以在调用接口的时候覆盖。
APPID = 'wxd678efh567hg6787'

# 回调地址，也可以在调用接口的时候覆盖。
NOTIFY_URL = 'https://www.xxxx.com/notify_v3'

# 微信支付平台证书缓存目录，初始调试的时候可以设为None，首次使用确保此目录为空目录。
CERT_DIR = './cert'

# 日志记录器，记录web请求和回调细节，便于调试排错。 请根据自己项目要求，配置日志模块
logging.basicConfig(filename=os.path.join(os.getcwd(), 'demo.log'), level=logging.DEBUG, filemode='a', format='%(asctime)s - %(process)s - %(levelname)s: %(message)s')
LOGGER = logging.getLogger('demo')

# 接入模式：False=直连商户模式，True=服务商模式。
PARTNER_MODE = True

# 代理设置，None或者{"https": "http://10.10.1.10:1080"}，详细格式参见 requests 库说明文档
PROXY = None


# 接下来初始化 WechatPay 实例并配置一个合适的接口：
wxpay = WeChatPay(
    WeChatPayType.NATIVE,
    mch_id=SP_MCHID,
    private_key=PRIVATE_KEY,
    cert_serial_no=CERT_SERIAL_NO,
    app_id=APPID,
    api_v3_key=API_V3_KEY,
    notify_url=NOTIFY_URL,
    cert_dir=CERT_DIR,
    logger=LOGGER,
    partner_mode=PARTNER_MODE,
    proxy=PROXY)

app = Flask(__name__)


@app.route('/pay', methods=['POST', 'GET'])
def pay():
    # 以native下单为例，下单成功后即可获取到 'code_url'，将 'code_url' 转换为二维码，并用微信扫码即可进行支付测试。
    out_trade_no = get_nonce(8)
    description = 'demo-description'
    amount = 1
    code, message = wxpay.pay.pay(
        description=description,
        out_trade_no=out_trade_no,
        amount={'total': amount},
        sub_mch_id=SUB_MCH_ID,
        pay_type=WeChatPayType.NATIVE
    )
    return jsonify({'code': code, 'message': message})检查一下参数无误，现在就可以用 python 解释器来运行：$pythonexamples_sp.py*ServingFlaskapp"examples_sp"(lazyloading)*Environment:productionWARNING:Thisisadevelopmentserver.Donotuseitinaproductiondeployment.UseaproductionWSGIserverinstead.*Debugmode:off*Runningonhttp://127.0.0.1:5000/(PressCTRL+Ctoquit)现在访问http://127.0.0.1:5000/pay，如果一切正常，你会看到下面一串 json 字符串：{
  "code": 200,
  "message": "{\"code_url\":\"weixin://wxpay/bizpayurl?pr=abcdefghi\"}"
}模块内方法说明函数、对象名称类型说明WeChatPay对象微信支付对象，V3版本API，支持服务商 和 直连商户接口清单已适配的微信支付 V3 版 API 接口列表如下：大类小类接口接口函数直连商户服务商公用公用调起支付签名sign是是公用公用回调通知callback是是公用公用敏感信息参数解密decrypt是是公用公用                           pay下载账单download_bill是是商户进件特约商户进件、小微商户进件     apply提交申请单applyment×是商户进件特约商户进件、小微商户进件     apply查询申请单状态applyment_query×是商户进件特约商户进件、小微商户进件     apply修改结算账号settlement_modify×是商户进件特约商户进件、小微商户进件     apply查询结算账号settlement_query×是基础支付JSAPI、APP、H5、Native、小程序支付  pay统一下单pay是是基础支付JSAPI、APP、H5、Native、小程序支付  pay查询订单query是是基础支付JSAPI、APP、H5、Native、小程序支付  pay关闭订单close是是基础支付合单支付                            pay统一下单combine_pay是是基础支付合单支付                            pay查询订单combine_query是是基础支付合单支付                            pay关闭订单combine_close是是基础支付JSAPI、APP、H5、Native、小程序、合单支付申请退款        payrefund是是基础支付JSAPI、APP、H5、Native、小程序、合单支付查询单笔退款    payquery_refund是是基础支付JSAPI、APP、H5、Native、小程序、合单支付申请交易账单    paytrade_bill是是基础支付JSAPI、APP、H5、Native、小程序、合单支付申请资金账单    payfund_flow_bill是是基础支付JSAPI、APP、H5、Native、小程序、合单支付申请单个子商户资金账单sub_merchant_fund_flow_bill×是基础支付JSAPI、APP、H5、Native、小程序、合单支付下载账单        paydownload_bill是是经营能力微信支付分（免确认模式）      pay_score创单结单合并direct_complete是×经营能力微信支付分（免确认预授权模式）pay_score商户预授权permission是×经营能力微信支付分（免确认预授权模式）pay_score查询用户授权记录permission_query是×经营能力微信支付分（免确认预授权模式）pay_score解除用户授权关系permission_terminate是×经营能力微信支付分（公共 API）        pay_score创建支付分订单create是×经营能力微信支付分（公共 API）        pay_score查询支付分订单query是×经营能力微信支付分（公共 API）        pay_score取消支付分订单cancel是×经营能力微信支付分（公共 API）        pay_score修改订单金额modify是×经营能力微信支付分（公共 API）        pay_score完结支付分订单complete是×经营能力微信支付分（公共 API）        pay_score商户发起催收扣款pay是×经营能力微信支付分（公共 API）        pay_score同步服务订单信息sync是×经营能力微信支付分（公共 API）        pay_score申请退款refund是×经营能力微信支付分（公共 API）        pay_score查询单笔退款refund_query是×经营能力微信支付分（公共 API）        pay_score商户申请获取对账单merchant_bill是×经营能力支付即服务                    guide服务人员注册register是是经营能力支付即服务                    guide服务人员分配assign是是经营能力支付即服务                    guide服务人员查询guides_query是是经营能力支付即服务                    guide服务人员信息更新update是是经营能力点金计划                      gold点金计划管理plan_change×是经营能力点金计划                      gold商家小票管理custom_page_change×是经营能力点金计划                      gold同业过滤标签管理advertising_filter×是经营能力点金计划                      gold开通广告展示advertising_open×是经营能力点金计划                      gold关闭广告展示advertising_close×是行业方案电商收付通尚未适配尚未适配×是行业方案智慧商圈             business_circle商圈积分同步points_notify是是行业方案智慧商圈             business_circle商圈积分授权查询user_authorization是是行业方案智慧商圈             business_circle商圈会员待积分状态查询business_point_status是是行业方案智慧商圈             business_circle商圈会员停车状态同步business_parking_sync是是行业方案微信支付分停车服务   parking查询车牌服务开通信息find是是行业方案微信支付分停车服务   parking创建停车入场parking_enter是是行业方案微信支付分停车服务   parking扣费受理order是是行业方案微信支付分停车服务   parking查询订单order_query是是营销工具代金券         marketing创建代金券批次favor_stocks_create是是营销工具代金券         marketing激活代金券批次favor_stocks_start是是营销工具代金券         marketing发放代金券批次favor_stocks_send是是营销工具代金券         marketing暂停代金券批次favor_stocks_pause是是营销工具代金券         marketing重启代金券批次favor_stocks_restart是是营销工具代金券         marketing条件查询批次列表favor_stocks_list是是营销工具代金券         marketing查询批次详情favor_stocks_detail是是营销工具代金券         marketing查询代金券详情favor_stocks_coupons_detail是是营销工具代金券         marketing查询代金券可用商户favor_stocks_merchants是是营销工具代金券         marketing查询代金券可用单品favor_stocks_items是是营销工具代金券         marketing根据商户号查用户的券favor_stocks_user_coupon是是营销工具代金券         marketing下载批次核销明细favor_stocks_use_flow是是营销工具代金券         marketing下载批次退款明细favor_stocks_refund_flow是是营销工具代金券         marketing设置消息通知地址favor_stocks_callback_update是是营销工具商家券         marketing创建商家券bi_favor_stocks_create是是营销工具商家券         marketing查询商家券详情bi_favor_stocks_query是是营销工具商家券         marketing核销用户券bi_favor_stocks_use是是营销工具商家券         marketing根据过滤条件查询用户券bi_favor_user_coupon是是营销工具商家券         marketing查询用户单张券详情bi_favor_coupon_detail是是营销工具商家券         marketing上传预存 codebi_favor_coupon_code_upload是是营销工具商家券         marketing设置商家券事件通知地址bi_favor_callback_update是是营销工具商家券         marketing查询商家券事件通知地址bi_favor_callback_query是是营销工具商家券         marketing关联订单信息bi_favor_coupon_associate是是营销工具商家券         marketing取消关联订单信息bi_favor_coupon_disassociate是是营销工具商家券         marketing修改批次预算bi_favor_stocks_budget是是营销工具商家券         marketing修改商家券基本信息bi_favor_stocks_modify是是营销工具商家券         marketing申请退券bi_favor_stocks_return是是营销工具商家券         marketing使券失效bi_favor_stocks_deactivate是是营销工具商家券         marketing营销补差付款bi_favor_stocks_subsidy_pay是是营销工具商家券         marketing查询营销补差付款单详情bi_favor_stocks_subsidy_query是是营销工具委托营销       marketing建立合作关系partnership_build是是营销工具委托营销       marketing查询合作关系列表partnership_query是是营销工具消费卡         marketing发放消费卡card_send是×营销工具支付有礼       marketing创建全场满额送活动pay_gift_activity_create是是营销工具支付有礼       marketing查询活动详情接口pay_gift_activity_detail是是营销工具支付有礼       marketing查询活动发券商户号pay_gift_merchants_list是是营销工具支付有礼       marketing查询活动指定商品列表pay_gift_goods_list是是营销工具支付有礼       marketing终止活动pay_gift_activity_terminate是是营销工具支付有礼       marketing新增活动发券商户号pay_gift_merchants_add是是营销工具支付有礼       marketing获取支付有礼活动列表pay_gift_activity_list是是营销工具支付有礼       marketing删除活动发券商户号pay_gift_merchants_delete是是营销工具代扣服务切卡组件  marketing出行券切卡组件预下单industry_coupon_token是是营销工具图片上传        marketing图片上传(营销专用)image_upload是是资金应用商家转账到零钱  transfer发起商家转账transfer_batch是×资金应用商家转账到零钱  transfer微信批次单号查询批次单transfer_query_batch是×资金应用商家转账到零钱  transfer微信明细单号查询明细单transfer_query_detail_id是×资金应用商家转账到零钱  transfer商家批次单号查询批次单transfer_query_out_batch_no是×资金应用商家转账到零钱  transfer商家明细单号查询明细单transfer_query_out_detail_no是×资金应用商家转账到零钱  transfer转账电子回单申请受理transfer_bill_receipt是×资金应用商家转账到零钱  transfer查询转账电子回单transfer_query_bill_receipt是×资金应用商家转账到零钱  transfer转账明细电子回单受理transfer_detail_receipt是×资金应用商家转账到零钱  transfer查询转账明细电子回单受理结果transfer_query_receipt是×资金应用分账            profit_sharing请求分账orders是是资金应用分账            profit_sharing查询分账结果orders_query是是资金应用分账            profit_sharing请求分账回退return_orders是是资金应用分账            profit_sharing查询分账回退结果return_orders_query是是资金应用分账            profit_sharing解冻剩余资金unfreeze是是资金应用分账            profit_sharing查询剩余待分金额amounts_query是是资金应用分账            profit_sharing查询最大分账比例config_query×是资金应用分账            profit_sharing添加分账接收方receivers_add是是资金应用分账            profit_sharing删除分账接收方receivers_delete是是资金应用分账            profit_sharing申请分账账单bills是是资金应用分账            pay下载账单download_bill是是资金应用连锁品牌分账    profit_sharing请求分账brand_order×是资金应用连锁品牌分账    profit_sharing查询分账结果brand_order_query×是资金应用连锁品牌分账    profit_sharing请求分账回退brand_return×是资金应用连锁品牌分账    profit_sharing查询分账回退结果brand_return_query×是资金应用连锁品牌分账    profit_sharing完结分账brand_unfreeze×是资金应用连锁品牌分账    profit_sharing查询剩余待分金额brand_amount_query×是资金应用连锁品牌分账    profit_sharing查询最大分账比例brand_config_query×是资金应用连锁品牌分账    profit_sharing添加分账接收方brand_add_receiver×是资金应用连锁品牌分账    profit_sharing删除分账接收方brand_delete_receiver×是资金应用连锁品牌分账    profit_sharing申请分账账单bills×是资金应用连锁品牌分账    pay下载账单download_bill是是风险合规商户开户意愿确认     apply4subject提交申请单applyment×是风险合规商户开户意愿确认     apply4subject撤销申请单cancel×是风险合规商户开户意愿确认     apply4subject查询申请单审核结果query×是风险合规商户开户意愿确认     apply4subject获取商户开户意愿确认状态state×是风险合规消费者投诉 2.0       complaint查询投诉单列表list_query是是风险合规消费者投诉 2.0       complaint查询投诉单详情details是是风险合规消费者投诉 2.0       complaint查询投诉协商历史history_query是是风险合规消费者投诉 2.0       complaint创建投诉通知回调地址notification_create是是风险合规消费者投诉 2.0       complaint查询投诉通知回调地址notification_query是是风险合规消费者投诉 2.0       complaint更新投诉通知回调地址notification_update是是风险合规消费者投诉 2.0       complaint删除投诉通知回调地址notification_delete是是风险合规消费者投诉 2.0       complaint提交回复response是是风险合规消费者投诉 2.0       complaint反馈处理完成complete是是风险合规消费者投诉 2.0       complaint更新退款审批结果update_refund是是风险合规消费者投诉 2.0       complaint商户上传反馈图片image_upload是是风险合规消费者投诉 2.0       complaint图片下载image_download是是风险合规商户违规通知回调          risk创建商户违规通知回调地址callback_create×是风险合规商户违规通知回调          risk查询商户违规通知回调地址callback_query×是风险合规商户违规通知回调          risk修改商户违规通知回调地址callback_update×是风险合规商户违规通知回调          risk删除商户违规通知回调地址callback_delete×是其他能力图片上传                  media图片上传image_upload是是其他能力视频上传                  media视频上传video_upload是是其他电子发票（公共API）       invoice创建电子发票卡券模板card_template是是其他电子发票（公共API）       invoice配置开发选项merchant_config是是其他电子发票（公共API）       invoice查询商户配置的开发选项get_merchant_config是是其他电子发票（公共API）       invoice获取抬头填写链接title_url是是其他电子发票（公共API）       invoice获取用户填写的抬头title是是其他电子发票(区块链模式)      invoice获取商品和服务税收分类对照表tax_codes是是其他电子发票(区块链模式)      invoice获取商户开票基础信息merchant_base_info是是其他电子发票(区块链模式)      invoice开具电子发票applications是是其他电子发票(区块链模式)      invoice查询电子发票invoice_query是是其他电子发票(区块链模式)      invoice冲红电子发票invoice_reverse是是其他电子发票(自建平台模式)    invoice上传电子发票文件invoice_upload_file是是其他电子发票(自建平台模式)    invoice将电子发票插入微信用户卡包invoice_insert_cards是是其他银行组件                  capital获取对私银行卡号开户银行search_bank_number是是其他银行组件                  capital查询支持个人业务的银行列表personal_banks是是其他银行组件                  capital查询支持对公业务的银行列表corporate_banks是是其他银行组件                  capital查询省份列表provinces是是其他银行组件                  capital查询城市列表cities是是其他银行组件                  capital查询支行列表branches是是修改记录修改记录