-
Notifications
You must be signed in to change notification settings - Fork 401
微信支付
zwc edited this page Sep 24, 2016
·
10 revisions
- 统一下单
- 查询订单
- 关闭订单
- 申请退款
- 查询退款
- 下载对账单
微信详细文档请点击
注意: 默认spbill_create_ip
的值为request.remote_addr
,如果没有安装flask,请在参数后面带上spbill_create_ip
必填参数
- out_trade_no 商户订单号
- body 商品描述
- total_fee 商品描述
- trade_type 交易类型
条件参数
- openid 如果
trade_type
为JSAPI
时必须 - product_id 如果
type_type
为NATIVE
时必须
举例
try:
out_trade_no = wx_pay.nonce_str
raw = weixin.pay.unified_order(trade_type="JSAPI", openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1, attach="other info")
print raw
except WeixinError, e:
print e.message
必填参数
- out_trade_no 商户订单号
- body 商品描述
- total_fee 商品描述
- openid 用户标识
返回参数
- package 订单详情扩展字符串
- timeStamp 时间戳
- appId 公众号id
- nonceStr 随机字符串
- signType 清明方式
- sign 签名
try:
out_trade_no = wx_pay.nonce_str
raw = weixin.pay.jsapi(openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1, attach="other info")
print raw
except WeixinError, e:
print e
参数,二选其一
- out_trade_no 商户订单号
- transaction_id 微信订单号
使用 out_trade_no
查询订单
print weixin.pay.order_query(out_trade_no=out_trade_no)
或者使用 transaction_id
查询
print weixin.pay.order_query(transaction_id='transaction_id')
必填参数
- out_trade_no 商户订单号
举例
print weixin.pay.order_close(out_trade_no=out_trade_no)
参数,二选其一
- out_trade_no 商户订单号
- transaction_id 微信订单号
使用 out_trade_out
退款
print weixin.pay.refund(out_trade_no=out_trade_no)
或者使用 transaction_id
退款
print weixin.pay.refund(transaction_id='transaction_id')
参数,4选一
- out_trade_no 商户订单号
- transaction_id 微信订单号
- out_refund_no 商户退款单号
- refund_id 微信退款单号
使用 out_trade_no
退款
print weixin.pay.refund_query(out_trade_no=out_trade_no)
sign = weixin.pay.sign(dict(a='b', b=2, c=3))
weixin.pay.check(data(a='b', b=2, c=3, sign=sign))
weixin.pay.reply("OK", True)
weixin.pay.reply("签名验证失败", False)
必填参数
- bill_date 账单日期
举例
print weixin.pay.download_bill('20140603')
# -*- coding: utf-8 -*-
from flask import Flask, request, jsonify
from flask.ext.weixin_pay import WeixinPay, WeixinPayError
app = Flask(__name__)
config = {
"WEIXIN_APP_ID": "wxapp_id",
"WEIXIN_MCH_ID": "100000010",
"WEIXIN_MCH_KEY": "138bad2e99a79312e25b2c162c9bab34",
"WEIXIN_NOTIFY_URL": "http://www.example.com/pay/weixin/notify",
}
app.config.update(config)
wx_pay = WeixinPay()
wx_pay.init_app(app)
@app.route("/pay/create")
def pay_create():
"""
微信JSAPI创建统一订单,并且生成参数给JS调用
"""
try:
out_trade_no = wx_pay.nonce_str
raw = wx_pay.jsapi(openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1)
return jsonify(raw)
except WeixinPayError, e:
print e.message
return e.message, 400
@app.route("/pay/notify")
def pay_notify():
"""
微信异步通知
"""
data = wx_pay.to_dict(request.data)
if not wx_pay.check(data):
return wx_pay.reply("签名验证失败", False)
# 处理业务逻辑
return wx_pay.reply("OK", True)
if __name__ == '__main__':
app.run()