Skip to content
gusibi edited this page Apr 30, 2019 · 11 revisions

使用示例

# 微信公号/扫码支付
from weixin.pay import WeixinPay 

wxpay = WeixinPay(appid='appid',
                  mch_id='mchid',
                  notify_url='url',
                  partner_key='key')
                  create_pay_info= {}

# 统一下单
wxpay.unifiedorder(**create_pay_info)
# 查询订单
wxapp.order_query(out_trade_no='out_trade_no')

# 企业付款
wxepay = WeixinEnterprisePay(appid='appid',
                             mch_id='mchid',
                             mch_key='mch_key',
                             mch_cert='mch_cert',
                             partner_key='key')

wxepay.transfers(partner_trade_no,
                 openid,
                 amount,
                 desc=u'结算')

# 企业付款查询
wxepay_query = WeixinEnterprisePayQuery(appid='appid',
                                        mch_id='mchid',
                                        mch_key='mch_key',
                                        mch_cert='mch_cert',
                                        partner_key='key')
wxepay_query.gettransferinfo(partner_trade_no)

文档

微信公号/扫码支付

class WeixinPay(builtin.object)

-----------------------------------------------------------------
Data and other attributes defined here:
BASE_URL = 'https://api.mch.weixin.qq.com/'
PAY_SOURCE = 'weixin'
--------------------------------------------------------------

Methods defined here:

__init__(self, appid, mch_id, *args, **kwargs)# 微信支付接口初始化

参数:

    * :param appid: 微信公众号 appid
    * :param api_key: 商户 key
    * :param mch_id: 商户号
    * :param sub_mch_id: 可选,子商户号,受理模式下必填
    * :param mch_cert: 可选,商户证书路径 申请退款必须
    * :param mch_key: 可选,商户证书私钥路径 申请退款必选
    * :param notify_url: 可选 接收微信支付异步通知回调地址 统一下单接口必选
    * :param partner_key: 商户支付Key

订单关闭

order_close(self, out_trade_no)

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_3

参数

    * :param out_trade_no: 可选,商户订单号,默认自动生成
    * :return: 返回的结果数据

订单查询

order_query(self, transaction_id='', out_trade_no='')

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2

参数:

* :param out_trade_no: 可选,商户订单号,默认自动生成
* :param transaction_id: 可选,微信订单号 和out_trade_no 二选一
* :return: 返回的结果数据

# trade_state 订单状态

SUCCESS—支付成功
REFUND—转入退款
NOTPAY—未支付
CLOSED—已关闭
REVOKED—已撤销(刷卡支付)
USERPAYING--用户支付中
PAYERROR--支付失败(其他原因,如银行返回失败)

退款

refund(self, out_refund_no, total_fee, refund_fee, op_user_id, out_trade_no='', transaction_id='', device_info='', refund_fee_type='CNY')

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4

参数:

* :param out_refund_no: 商户退款单号
* :param total_fee: 总金额
* :param refund_fee: 退款金额
* :param op_user_id: 操作员帐号, 默认为商户号
* :param transaction_id: 可选,商户订单号,默认自动生成
* :param out_trade_no: 可选,微信订单号 以上两个二选一
* :param refund_fee_type: 可选 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
* :param device_info: 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
* :return: 返回的结果数据

退款查询

refundquery(self, out_trade_no='', transaction_id='', out_refund_no='', refund_id='', device_info='')

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5

参数:

* :param transaction_id: 可选,微信订单号
* :param out_trade_no: 可选,商户订单号,默认自动生成
* :param out_refund_no: 可选,商户退款单号
* :param refund_id: 可选,微信退款单号 以上四个四选一
* :param device_info: 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
* :return: 返回的结果数据


# 退款状态:
SUCCESS     退款成功
FAIL        退款失败
PROCESSING  退款处理中
NOTSURE     未确定,需要商户原退款单号重新发起
CHANGE      转入代发,退款到银行发现用户的卡作废或者冻结了,
            导致原路退款银行卡失败,资金回流到商户的现金帐号,
            需要商户人工干预,通过线下或者财付通转账的方式进行退款。


统一下单

unifiedorder(self, body='', out_trade_no='', total_fee='', openid='', detail='', attach='', time_start='', time_expire='', goods_tag='', product_id='', limit_pay='', device_info='', fee_type='CNY', spbill_create_ip='202.106.199.34', trade_type='JSAPI', notify_url='')

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

参数:

* :param trade_type: 交易类型,取值如下:JSAPI,NATIVE,APP,WAP, MWEB
* :param body: 商品描述
* :param total_fee: 总金额,单位分
* :param notify_url: 接收微信支付异步通知回调地址
* :param client_ip: 可选,APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
* :param openid: 可选,用户在商户appid下的唯一标识。trade_type=JSAPI,此参数必传
* :param out_trade_no: 可选,商户订单号,默认自动生成
* :param detail: 可选,商品详情
* :param attach: 可选,附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
* :param fee_type: 可选,符合ISO 4217标准的三位字母代码,默认人民币:CNY
* :param time_start: 可选,订单生成时间,默认为当前时间
* :param time_expire: 可选,订单失效时间,默认为订单生成时间后两小时
* :param goods_tag: 可选,商品标记,代金券或立减优惠功能的参数
* :param product_id: 可选,trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义
* :param device_info: 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
* :param spbill_create_ip: 调用接口的机器Ip地址
* :param limit_pay: 可选,指定支付方式,no_credit--指定不能使用信用卡支付
* :return: 返回的结果数据

微信小程序支付

class WXAppPay(WeixinPay)

微信小程序支付继承自WeixinPay 重写了unifiedorderbuild_wxapp_sign签名生成函数

Data and other attributes defined here:/

BASE_URL = 'https://api.mch.weixin.qq.com/' 
PAY_SOURCE = 'wxapp'

微信小程序统一下单

unifiedorder(self, body='', out_trade_no='', total_fee='', openid='', detail='', attach='', time_start='', time_expire='', goods_tag='', product_id='', limit_pay='', device_info='', fee_type='CNY', spbill_create_ip='202.106.199.34', trade_type='JSAPI', notify_url='') #

官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

参数:

* :param trade_type: 交易类型,取值如下:JSAPI,NATIVE,APP,WAP, MWEB
* :param body: 商品描述
* :param total_fee: 总金额,单位分
* :param notify_url: 接收微信支付异步通知回调地址
* :param client_ip: 可选,APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
* :param openid: 可选,用户在商户appid下的唯一标识。trade_type=JSAPI,此参数必传
* :param out_trade_no: 可选,商户订单号,默认自动生成
* :param detail: 可选,商品详情
* :param attach: 可选,附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
* :param fee_type: 可选,符合ISO 4217标准的三位字母代码,默认人民币:CNY
* :param time_start: 可选,订单生成时间,默认为当前时间
* :param time_expire: 可选,订单失效时间,默认为订单生成时间后两小时
* :param goods_tag: 可选,商品标记,代金券或立减优惠功能的参数
* :param product_id: 可选,trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义
* :param device_info: 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
* :param spbill_create_ip: 调用接口的机器Ip地址
* :param limit_pay: 可选,指定支付方式,no_credit--指定不能使用信用卡支付
* :return: 返回的结果数据

微信移动APP支付

class WeixinAppPay(WeixinPay) # 微信移动APP支付

微信小程序支付继承自WeixinPay 重写了unifiedorderbuild_wxapp_sign签名生成函数

Data and other attributes defined here:

BASE_URL = 'https://api.mch.weixin.qq.com/'

Methods defined here:

  • build_app_sign(self, prepay_id, package='Sign=WXPay')
  • get_base_params(self, is_app=False)
  • prepare_request(self, method, path, params)

微信移动APP统一下单

unifiedorder(self, body='', out_trade_no='', total_fee='', openid='', detail='', attach='', time_start='', time_expire='', goods_tag='', product_id='', limit_pay='', device_info='', fee_type='CNY', spbill_create_ip='202.106.199.34', trade_type='JSAPI', notify_url='') #

官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

参数:

* :param trade_type: 交易类型,取值如下:JSAPI,NATIVE,APP,WAP, MWEB
* :param body: 商品描述
* :param total_fee: 总金额,单位分
* :param notify_url: 接收微信支付异步通知回调地址
* :param client_ip: 可选,APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
* :param openid: 可选,用户在商户appid下的唯一标识。trade_type=JSAPI,此参数必传
* :param out_trade_no: 可选,商户订单号,默认自动生成
* :param detail: 可选,商品详情
* :param attach: 可选,附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
* :param fee_type: 可选,符合ISO 4217标准的三位字母代码,默认人民币:CNY
* :param time_start: 可选,订单生成时间,默认为当前时间
* :param time_expire: 可选,订单失效时间,默认为订单生成时间后两小时
* :param goods_tag: 可选,商品标记,代金券或立减优惠功能的参数
* :param product_id: 可选,trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义
* :param device_info: 可选,终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
* :param spbill_create_ip: 调用接口的机器Ip地址
* :param limit_pay: 可选,指定支付方式,no_credit--指定不能使用信用卡支付
* :return: 返回的结果数据

微信企业支付