微信支付接口¶
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
-
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>¶ 订单接口
-
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)[源代码]¶ -
-
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 – 可选,微信支付分配的终端设备号
返回: 返回的结果信息
-
代金券接口¶
-
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 – 可选,微信支付分配的终端设备号
返回: 返回的结果信息
-
订单接口¶
-
class
wechatpy.pay.api.
WeChatOrder
(client=None)[源代码]¶ -
-
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 – 可选,随机字符串,默认自动生成
返回: 签名
-
退款接口¶
-
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 – 可选,异步接收微信支付退款结果通知的回调地址
返回: 返回的结果数据
-
工具类接口¶
-
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的压缩包账单。 不传则默认为数据流形式。
-
公众号网页 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 为大写
返回: 参数
-
代扣接口¶
-
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
返回: 返回的结果信息
-