微信支付接口#

WeChatPay#

class wechatpy.pay.WeChatPay(*args, **kwargs)[源代码]#

微信支付接口

参数
  • appid – 微信公众号 appid

  • sub_appid – 当前调起支付的小程序APPID

  • api_key – 商户 key,不要在这里使用小程序的密钥

  • mch_id – 商户号

  • sub_mch_id – 可选,子商户号,受理模式下必填

  • mch_cert – 必填,商户证书路径

  • mch_key – 必填,商户证书私钥路径

  • timeout – 可选,请求超时时间,单位秒,默认无超时设置

  • sandbox – 可选,是否使用测试环境,默认为 False

app_auth = <wechatpy.pay.api.appauth.WeChatAppAuth object>#

实名认证接口

coupon = <wechatpy.pay.api.coupon.WeChatCoupon object>#

代金券接口

classmethod get_payment_data(xml)[源代码]#

解析微信支付结果通知,获得appid, mch_id, out_trade_no, transaction_id 如果你需要进一步判断,请先用appid, mch_id来生成WeChatPay, 然后用`wechatpay.parse_payment_result(xml)`来校验支付结果

使用示例:

from wechatpy.pay import WeChatPay
# 假设你已经获取了微信服务器推送的请求中的xml数据并存入xml变量
data = WeChatPay.get_payment_appid(xml)
{
    "appid": "公众号或者小程序的id",
    "mch_id": "商户id",
}
jsapi = <wechatpy.pay.api.jsapi.WeChatJSAPI object>#

公众号网页 JS 支付接口

micropay = <wechatpy.pay.api.micropay.WeChatMicroPay object>#

刷卡支付接口

order = <wechatpy.pay.api.order.WeChatOrder object>#

订单接口

parse_payment_result(xml)[源代码]#

解析微信支付结果通知

parse_refund_notify_result(xml)[源代码]#

解析微信退款结果通知

profit_sharing = <wechatpy.pay.api.profitsharing.WechatProfitSharing object>#

分账接口

redpack = <wechatpy.pay.api.redpack.WeChatRedpack object>#

红包接口

refund = <wechatpy.pay.api.refund.WeChatRefund object>#

退款接口

tools = <wechatpy.pay.api.tools.WeChatTools object>#

工具类接口

transfer = <wechatpy.pay.api.transfer.WeChatTransfer object>#

企业付款接口

withhold = <wechatpy.pay.api.withhold.WeChatWithhold object>#

代扣接口

现金红包接口#

class wechatpy.pay.api.WeChatRedpack(client=None)[源代码]#
query(out_trade_no, bill_type='MCHT')[源代码]#

查询红包发放记录

参数
  • out_trade_no – 商户订单号

  • bill_type – 可选,订单类型,目前固定为 MCHT

返回

返回的红包发放记录信息

send(user_id, total_amount, send_name, act_name, wishing, remark, total_num=1, client_ip=None, out_trade_no=None, scene_id=None, consume_mch_id=None)[源代码]#

发送现金红包

参数
  • user_id – 接收红包的用户在公众号下的 openid

  • total_amount – 红包金额,单位分

  • send_name – 商户名称

  • act_name – 活动名称

  • wishing – 红包祝福语

  • remark – 备注

  • client_ip – 可选,调用接口的机器 IP 地址

  • total_num – 可选,红包发放总人数,默认为 1

  • out_trade_no – 可选,商户订单号,默认会自动生成

  • scene_id – 可选,发放红包使用场景,红包金额大于200时必传

  • consume_mch_id – 可选,资金授权商户号。服务商替特约商户发放时使用

返回

返回的结果数据字典

send_group(user_id, total_amount, send_name, act_name, wishing, remark, total_num, client_ip=None, amt_type='ALL_RAND', out_trade_no=None, scene_id=None, consume_mch_id=None)[源代码]#

发送裂变红包

参数
  • user_id – 接收红包的用户在公众号下的 openid

  • total_amount – 红包金额,单位分

  • send_name – 商户名称

  • act_name – 活动名称

  • wishing – 红包祝福语

  • remark – 备注

  • total_num – 红包发放总人数

  • client_ip – 可选,调用接口的机器 IP 地址

  • amt_type – 可选,红包金额设置方式 ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额

  • out_trade_no – 可选,商户订单号,默认会自动生成

  • scene_id – 可选,发放红包使用场景,红包金额大于200时必传

  • consume_mch_id – 可选,资金授权商户号。服务商替特约商户发放时使用

返回

返回的结果数据字典

企业付款接口#

class wechatpy.pay.api.WeChatTransfer(client=None)[源代码]#
query(out_trade_no)[源代码]#

企业付款查询接口

参数

out_trade_no – 商户调用企业付款API时使用的商户订单号

返回

返回的结果数据

query_bankcard(out_trade_no)[源代码]#

企业付款查询接口

参数

out_trade_no – 商户调用企业付款API时使用的商户订单号

返回

返回的结果数据

transfer(user_id, amount, desc, client_ip=None, check_name='OPTION_CHECK', real_name=None, out_trade_no=None, device_info=None)[源代码]#

企业付款接口

参数
  • user_id – 接受收红包的用户在公众号下的 openid

  • amount – 付款金额,单位分

  • desc – 付款说明

  • client_ip – 可选,调用接口机器的 IP 地址

  • check_name – 可选,校验用户姓名选项, NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账), OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功), 默认为 OPTION_CHECK

  • real_name – 可选,收款用户真实姓名, 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名

  • out_trade_no – 可选,商户订单号,需保持唯一性,默认自动生成

  • device_info – 可选,微信支付分配的终端设备号

返回

返回的结果信息

transfer_bankcard(true_name, bank_card_no, bank_code, amount, desc=None, out_trade_no=None)[源代码]#

企业付款到银行卡接口

参数
  • true_name – 开户人名称

  • bank_card_no – 银行卡号

  • bank_code – 银行编号

  • amount – 付款金额,单位分

  • desc – 付款说明

  • out_trade_no – 可选,商户订单号,需保持唯一性,默认自动生成

返回

返回的结果信息

代金券接口#

class wechatpy.pay.api.WeChatCoupon(client=None)[源代码]#
query_coupon(coupon_id, user_id, op_user_id=None, device_info=None)[源代码]#

查询代金券信息

参数
  • coupon_id – 代金券 ID

  • user_id – 用户在公众号下的 openid

  • op_user_id – 可选,操作员账号,默认为商户号

  • device_info – 可选,微信支付分配的终端设备号

返回

返回的结果信息

query_stock(stock_id, op_user_id=None, device_info=None)[源代码]#

查询代金券批次

参数
  • stock_id – 代金券批次 ID

  • op_user_id – 可选,操作员账号,默认为商户号

  • device_info – 可选,微信支付分配的终端设备号

返回

返回的结果信息

send(user_id, stock_id, op_user_id=None, device_info=None, out_trade_no=None)[源代码]#

发放代金券

参数
  • user_id – 用户在公众号下的 openid

  • stock_id – 代金券批次 ID

  • op_user_id – 可选,操作员账号,默认为商户号

  • device_info – 可选,微信支付分配的终端设备号

  • out_trade_no – 可选,商户订单号,需保持唯一性,默认自动生成

返回

返回的结果信息

订单接口#

class wechatpy.pay.api.WeChatOrder(client=None)[源代码]#
close(out_trade_no)[源代码]#

关闭订单

参数

out_trade_no – 商户系统内部的订单号

返回

返回的结果数据

create(trade_type, body, total_fee, notify_url, client_ip=None, user_id=None, out_trade_no=None, detail=None, attach=None, fee_type='CNY', time_start=None, time_expire=None, goods_tag=None, product_id=None, device_info=None, limit_pay=None, scene_info=None, sub_user_id=None, **kwargs)[源代码]#

统一下单接口

参数
  • trade_type – 交易类型,取值如下:JSAPI,NATIVE,APP,WAP, MWEB

  • body – 商品描述

  • total_fee – 总金额,单位分

  • notify_url – 接收微信支付异步通知回调地址

  • client_ip – 可选,APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP

  • user_id – 可选,用户在商户appid下的唯一标识。trade_type=JSAPI和appid已设定,此参数必传

  • sub_user_id – 可选,小程序appid下的唯一标识。trade_type=JSAPI和sub_appid已设定,此参数必传

  • out_trade_no – 可选,商户订单号,默认自动生成

  • detail – 可选,商品详情

  • attach – 可选,附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据

  • fee_type – 可选,符合ISO 4217标准的三位字母代码,默认人民币:CNY

  • time_start – 可选,订单生成时间,默认为当前时间

  • time_expire – 可选,订单失效时间,默认为订单生成时间后两小时

  • goods_tag – 可选,商品标记,代金券或立减优惠功能的参数

  • product_id – 可选,trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义

  • device_info – 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传”WEB”

  • limit_pay – 可选,指定支付方式,no_credit–指定不能使用信用卡支付

  • scene_info (dict) – 可选,上报支付的场景信息

  • kwargs – 其他未列举在上述参数中的统一下单接口调用参数,例如电子发票入口开放标识receipt

返回

返回的结果数据

get_appapi_params(prepay_id, timestamp=None, nonce_str=None)[源代码]#

获取 APP 支付参数

参数
  • prepay_id – 统一下单接口返回的 prepay_id 参数值

  • timestamp – 可选,时间戳,默认为当前时间戳

  • nonce_str – 可选,随机字符串,默认自动生成

返回

签名

query(transaction_id=None, out_trade_no=None)[源代码]#

查询订单

参数
  • transaction_id – 微信的订单号,优先使用

  • out_trade_no – 商户系统内部的订单号,当没提供transaction_id时需要传这个。

返回

返回的结果数据

reverse(transaction_id=None, out_trade_no=None)[源代码]#

撤销订单

参数
  • transaction_id – 可选,微信的订单号,优先使用

  • out_trade_no – 可选,商户系统内部的订单号, transaction_id、out_trade_no二选一, 如果同时存在优先级:transaction_id> out_trade_no

返回

返回的结果数据

退款接口#

class wechatpy.pay.api.WeChatRefund(client=None)[源代码]#
apply(total_fee, refund_fee, out_refund_no, transaction_id=None, out_trade_no=None, fee_type='CNY', op_user_id=None, device_info=None, refund_account='REFUND_SOURCE_UNSETTLED_FUNDS', refund_desc=None, notify_url=None)[源代码]#

申请退款

参数
  • total_fee – 订单总金额,单位为分

  • refund_fee – 退款总金额,单位为分

  • out_refund_no – 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔

  • transaction_id – 可选,微信订单号

  • out_trade_no – 可选,商户系统内部的订单号,与 transaction_id 二选一

  • fee_type – 可选,货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY

  • op_user_id – 可选,操作员帐号, 默认为商户号

  • device_info – 可选,终端设备号

  • refund_desc – 可选,退款原因

  • refund_account – 可选,退款资金来源,仅针对老资金流商户使用,默认使用未结算资金退款

  • notify_url – 可选,异步接收微信支付退款结果通知的回调地址

返回

返回的结果数据

query(refund_id=None, out_refund_no=None, transaction_id=None, out_trade_no=None, device_info=None)[源代码]#

查询退款

参数
  • refund_id – 微信退款单号

  • out_refund_no – 商户退款单号

  • transaction_id – 微信订单号

  • out_trade_no – 商户系统内部的订单号

  • device_info – 可选,终端设备号

返回

返回的结果数据

工具类接口#

class wechatpy.pay.api.WeChatTools(client=None)[源代码]#
auto_code_to_openid(auth_code)[源代码]#

授权码查询 openid 接口

参数

auth_code – 扫码支付授权码,设备读取用户微信中的条码或者二维码信息

返回

返回的结果数据

download_bill(bill_date, bill_type='ALL', device_info=None)[源代码]#

下载对账单

参数
  • bill_date – 下载对账单的日期

  • bill_type – 账单类型,ALL,返回当日所有订单信息,默认值 SUCCESS,返回当日成功支付的订单, REFUND,返回当日退款订单, REVOKED,已撤销的订单

  • device_info – 微信支付分配的终端设备号,填写此字段,只下载该设备号的对账单

返回

返回的结果数据

download_fundflow(bill_date, account_type='Basic', tar_type=None)[源代码]#

下载资金账单 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18&index=7

参数
  • bill_date – 下载对账单的日期

  • account_type – 账单的资金来源账户 Basic 基本账户 Operation 运营账户 Fees 手续费账户

  • tar_type – 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。 不传则默认为数据流形式。

short_url(long_url)[源代码]#

长链接转短链接

参数

long_url – 长链接

返回

返回的结果数据

公众号网页 JS 支付接口#

class wechatpy.pay.api.WeChatJSAPI(client=None)[源代码]#
get_jsapi_params(prepay_id, timestamp=None, nonce_str=None, jssdk=False)[源代码]#

获取 JSAPI 参数

参数
  • prepay_id – 统一下单接口返回的 prepay_id 参数值

  • timestamp – 可选,时间戳,默认为当前时间戳

  • nonce_str – 可选,随机字符串,默认自动生成

  • jssdk – 前端调用方式,默认使用 WeixinJSBridge 使用 jssdk 调起支付的话,timestamp 的 s 为小写 使用 WeixinJSBridge 调起支付的话,timeStamp 的 S 为大写

返回

参数

get_jsapi_signature(prepay_id, timestamp=None, nonce_str=None)[源代码]#

获取 JSAPI 签名

参数
  • prepay_id – 统一下单接口返回的 prepay_id 参数值

  • timestamp – 可选,时间戳,默认为当前时间戳

  • nonce_str – 可选,随机字符串,默认自动生成

返回

签名

代扣接口#

class wechatpy.pay.api.WeChatWithhold(client=None)[源代码]#
apply_cancel_signing(contract_id=None, plan_id=None, contract_code=None, contract_termination_remark=None, version='1.0')[源代码]#

申请解约

https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=18_4&index=6

参数
  • contract_id – 合同ID

  • plan_id – 模板ID

  • contract_code – 合同号

  • contract_termination_remark – 解约原因

  • version – 版本号

返回

apply_deduct(body, total_fee, contract_id, notify_url, out_trade_no=None, detail=None, attach=None, fee_type='CNY', goods_tag=None, clientip=None, deviceid=None, mobile=None, email=None, qq=None, openid=None, creid=None, outerid=None)[源代码]#

申请扣款 api

参数
  • body – 商品描述 商品或支付单简要描述

  • out_trade_no – 可选 商户订单号 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号

  • total_fee – 总金额 订单总金额,单位为分,只能为整数,详见支付金额

  • contract_id – 委托代扣协议id 签约成功后,微信返回的委托代扣协议id

  • notify_url – 回调通知url 接受扣款结果异步回调通知的url

  • detail – 可选 商品详情 商品名称明细列表

  • attach – 可选 附加数据 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据

  • fee_type – 可选 货币类型 符合ISO 4217标准的三位字母代码,默认人民币:CNY

  • goods_tag – 可选 商品标记 商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠

  • clientip – 可选 客户端 IP 点分IP格式(客户端IP)

  • deviceid – 可选 设备ID android填imei的一次md5; ios填idfa的一次md5

  • mobile – 可选 手机号 用户手机号

  • email – 可选 邮箱地址 用户邮箱地址

  • qq – 可选 QQ号 用户QQ号

  • openid – 可选 微信open ID 用户微信open ID

  • creid – 可选 身份证号 用户身份证号

  • outerid – 可选 商户侧用户标识 用户在商户侧的标识

返回

返回的结果信息

apply_signing(plan_id, contract_code, contract_display_account, notify_url, version='1.0', clientip=None, deviceid=None, mobile=None, email=None, qq=None, request_serial=None, openid=None, creid=None, outerid=None)[源代码]#

申请签约 api

https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=18_1&index=1

参数
  • plan_id – 模板id 协议模板id,设置路径见开发步骤。

  • contract_code – 签约协议号 商户侧的签约协议号,由商户生成

  • contract_display_account – 用户账户展示名称 签约用户的名称,用于页面展示,页面样例可见案例与规范

  • notify_url – 回调通知url 用于接收签约成功消息的回调通知地址,以http或https开头。

  • version – 版本号 固定值1.0

  • request_serial – 可选 请求序列号 商户请求签约时的序列号,商户侧须唯一。序列号主要用于排序,不作为查询条件

  • clientip – 可选 客户端 IP 点分IP格式(客户端IP)

  • deviceid – 可选 设备ID android填imei的一次md5; ios填idfa的一次md5

  • mobile – 可选 手机号 用户手机号

  • email – 可选 邮箱地址 用户邮箱地址

  • qq – 可选 QQ号 用户QQ号

  • openid – 可选 微信open ID 用户微信open ID

  • creid – 可选 身份证号 用户身份证号

  • outerid – 可选 商户侧用户标识 用户在商户侧的标识

返回

返回的结果数据字典

query_order(transaction_id=None, out_trade_no=None)[源代码]#

查询订单 api

参数
  • transaction_id – 二选一 微信订单号 微信的订单号,优先使用

  • out_trade_no – 二选一 商户订单号 商户系统内部的订单号,当没提供transaction_id时需要传这个。

返回

返回的结果信息

query_signing(contract_id=None, plan_id=None, contract_code=None, openid=None, version='1.0')[源代码]#

查询签约关系 api

参数
  • contract_id – 可选 委托代扣协议id 委托代扣签约成功后由微信返回的委托代扣协议id,选择contract_id查询,则此参数必填

  • plan_id – 可选 模板id 商户在微信商户平台配置的代扣模板id,选择plan_id+contract_code查询,则此参数必填

  • contract_code – 可选 签约协议号 商户请求签约时传入的签约协议号,商户侧须唯一。选择plan_id+contract_code查询,则此参数必填

  • openid – 可选 openid 用户标识,必须保证与传入appid对应

  • version – 版本号 固定值1.0

返回

返回的结果信息