微信支付接口#
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>#
订单接口
- 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)[源代码]#
-
- 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
- 返回
返回的结果信息