微信支付接口

WeChatPay

class wechatpy.pay.WeChatPay(appid, api_key, mch_id, sub_mch_id=None, mch_cert=None, mch_key=None, timeout=None, sandbox=False, sub_appid=None)[源代码]

微信支付接口

参数:
  • appid – 微信公众号 appid
  • sub_appid – 当前调起支付的小程序APPID
  • api_key – 商户 key,不要在这里使用小程序的密钥
  • mch_id – 商户号
  • sub_mch_id – 可选,子商户号,受理模式下必填
  • mch_cert – 必填,商户证书路径
  • mch_key – 必填,商户证书私钥路径
  • timeout – 可选,请求超时时间,单位秒,默认无超时设置
  • sandbox – 可选,是否使用测试环境,默认为 False
coupon = <wechatpy.pay.api.coupon.WeChatCoupon object>

代金券接口

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)[源代码]

解析微信支付结果通知

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)[源代码]

统一下单接口

参数:
  • 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) – 可选,上报支付的场景信息
返回:

返回的结果数据

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', 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_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
返回:

返回的结果信息