def order_query_example(): """ 查询订单 example """ wx_pay = WxPay( wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='http://www.example.com/pay/weixin/notify' ) data = wx_pay.order_query( # 下面两个参数二选一 out_trade_no=u'***商户订单号***', # transaction_id=u'***微信订单号***' )
def swiping_card_example(): """ 刷卡支付 example """ wx_pay = WxPay( wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='http://www.example.com/pay/weixin/notify' ) wx_pay.swiping_card_payment( body=u'***商品名称/付款显示名称***', # 例如:综合超市 total_fee=100, # total_fee 消费金额 单位是 分 auth_code='131336161431593669', # 获取到的客户微信付款码 spbill_create_ip='222.222.222.222', # 调用微信企业付款接口服务器公网IP地址 )
def refund_query_example(): """ 退款查询 example """ wx_pay = WxPay( wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='http://www.example.com/pay/weixin/notify' ) data = wx_pay.refund_query( # 以下传入参数四选一即可 out_refund_no=u'***商户退款单号***', # out_trade_no=u'***商户订单号***', # transaction_id=u'***微信订单号***', # refund_id=u'***微信退款单号***', )
def zhihu_pre(request): if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] logger.debug("qujun zhihu_pre post data: %s", request.POST) # 支付者id openid = request.POST.get('openid') # 被查看者id userid = request.POST.get('userid') body = request.POST.get('body') or u'查看电话' useropenid = UserProfileBase.objects.filter(id=userid).first().openId out_trade_no = time.strftime('%Y%m%d%M%S', time.localtime( time.time())) + "".join(random.choice(CHAR) for _ in range(5)) wx_pay = WxPay( wx_app_id=WEIXIN_APPID, # 微信平台appid wx_mch_id=ZHIHU_ID, # 微信支付商户号 wx_mch_key=ZHIHU_KEY, # wx_mch_key 微信支付重要密钥,请登录微信支付商户平台,在 账户中心-API安全-设置API密钥设置 wx_notify_url='http://ewosugong.com/wxpay/notify/' # wx_notify_url 接受微信付款消息通知地址(通常比自己把支付成功信号写在js里要安全得多,推荐使用这个来接收微信支付成功通知) # wx_notify_url 开发详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 ) try: pay_data = wx_pay.js_pay_api(openid=openid, body=body, total_fee=100, out_trade_no=out_trade_no, spbill_create_ip=ip) User_view_pay = UserVisible(transation_no=out_trade_no, user_payed=openid, user_visible=useropenid, pay_status='prepay', request_time=time.time()) User_view_pay.paysign = pay_data.get('sign', "wrongkey") User_view_pay.save() return HttpResponse(json.dumps(pay_data)) # 订单生成后将请将返回的json数据 传入前端页面微信支付js的参数部分 except WxPayError, e: logge.error("WxPayError: %s", e.message) return HttpResponse("zhifu some thing wrong!")
def refund_example(): """ 申请退款 example """ wx_pay = WxPay(wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='WX_NOTIFY_URL') data = wx_pay.refund( # 证书获取方法请阅读:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 # api_client_cert_path: 微信支付商户证书(apiclient_cert.pem)的本地保存路径 api_cert_path='/home/xxx/SERVER/ext_file/apiclient_cert.pem', # api_client_cert_path: 微信支付商户证书(apiclient_key.pem)的本地保存路径 api_key_path='/home/xxx/SERVER/ext_file/apiclient_key.pem', out_trade_no=u'***商户订单号***', # out_refund_no=u'***商户退款单号***', 商户退款单号可自动生成,按需使用 total_fee=500, # 支付时下单总金额 单位分 refund_fee=500, # 要退款的金额 单位分 )
def send_red_pack_to_user_example(): """ 向个人用户发红包example """ wx_pay = WxPay(wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='WX_NOTIFY_URL') wx_pay.send_red_pack( # 证书获取方法请阅读:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 # api_cert_path: 微信支付商户证书(apiclient_cert.pem)的本地保存路径 api_cert_path='/home/xxx/SERVER/ext_file/apiclient_cert.pem', # api_cert_path: 微信支付商户证书(apiclient_key.pem)的本地保存路径 api_key_path='/home/xxx/SERVER/ext_file/apiclient_key.pem', send_name=u'微信支付测试', # 红包名称 re_openid=u'***to_user_openid***', # 要接收红包的用户openid total_amount=100, # total_fee 单位是 分, 100 = 1元, 最大499元 wishing=u'感谢参与测试', # 祝福语 client_ip=u'222.222.222.222', # 调用微信发红包接口服务器公网IP地址 act_name=u'微信支付测试系统', # 活动名称 remark=u'感谢参与' # 备注 )
def send_red_pack(openid, amount): """ 向个人用户发红包example """ data = { 'send_name': u'禾梓先生', 're_openid': openid, 'total_amount': amount, 'wishing': u'感谢使用本平台', 'client_ip': u'139.199.96.148', 'act_name': u'提现', 'remark': u'请12小时内领取红包' } wx_pay = WxPay(wx_app_id='wx61e83ce648e7b691', wx_mch_id='1507994731', wx_mch_key='b8uww0npq5b53m1bqfv6c4wi8kln4giv', wx_notify_url='http://www.example.com/pay/weixin/notify') ''' raw = wx_pay.send_red_pack( # 证书获取方法请阅读:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 # api_cert_path: 微信支付商户证书(apiclient_cert.pem)的本地保存路径 api_cert_path='/home/ubuntu/pem/apiclient_cert.pem', # api_cert_path: 微信支付商户证书(apiclient_key.pem)的本地保存路径 api_key_path='/home/ubuntu/pem/apiclient_key.pem', send_name=u'红包测试', # 红包名称 re_openid=u'ot0Np01VZKOO3fz6ki6BA0VPCupc', # 要接收红包的用户openid total_amount=100, # total_fee 单位是 分, 100 = 1元, 最大499元 wishing=u'***感谢参与测试***', # 祝福语 client_ip=u'139.199.96.148', # 调用微信发红包接口服务器公网IP地址 act_name=u'***微信支付测试系统***', # 活动名称 remark=u'***感谢参与***' # 备注 ) ''' raw = wx_pay.send_red_pack(api_cert_path, api_key_path, **data) for k in raw: print(k, raw[k]) return raw
def create_pay_example(): # 普通下单example wx_pay = WxPay( wx_app_id='WX_APP_ID', # 微信平台appid wx_mch_id='WX_MCH_ID', # 微信支付商户号 wx_mch_key='WX_MCH_KEY', # wx_mch_key 微信支付重要密钥,请登录微信支付商户平台,在 账户中心-API安全-设置API密钥设置 wx_notify_url='http://www.example.com/pay/weixin/notify' # wx_notify_url 接受微信付款消息通知地址(通常比自己把支付成功信号写在js里要安全得多,推荐使用这个来接收微信支付成功通知) # wx_notify_url 开发详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 ) try: pay_data = wx_pay.js_api( openid=u'***user_openid***', # 付款用户openid body=u'***商品名称/付款显示名称***', # 例如:饭卡充值100元 total_fee=100 # total_fee 单位是 分, 100 = 1元 ) print pay_data # 订单生成后将请将返回的json数据 传入前端页面微信支付js的参数部分 return jsonify(pay_data) except WxPayError, e: return e.message, 400
def enterprise_payment_to_wallet(): """ 直接转账到客户微信钱包 """ wx_pay = WxPay(wx_app_id='WX_APP_ID', wx_mch_id='WX_MCH_ID', wx_mch_key='WX_MCH_KEY', wx_notify_url='WX_NOTIFY_URL') wx_pay.enterprise_payment( # 证书获取方法请阅读:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 # api_cert_path: 微信支付商户证书(apiclient_cert.pem)的本地保存路径 api_cert_path='/home/xxx/SERVER/ext_file/apiclient_cert.pem', # api_cert_path: 微信支付商户证书(apiclient_key.pem)的本地保存路径 api_key_path='/home/xxx/SERVER/ext_file/apiclient_key.pem', openid=u'***to_user_openid***', # 要接收转账的用户openid check_name=True, # 是否强制校验收款用户姓名 # 如果check_name为True,下面re_user_name必须传入 # 如果check_name为False,请删除下一行参数re_user_name re_user_name=u'***客户的真实姓名***', # 校验不成功付款会是失败 amount=100, # total_fee 单位是 分, 100 = 1元, 单用户 单笔上限/当日上限:2W/2W desc=u'充值失败退款', # 付款原因 spbill_create_ip='222.222.222.222', # 调用微信企业付款接口服务器公网IP地址 )
def wx_js_config(): # 生成前端 调用微信js的配置参数 config_args = { 'noncestr': WxPay.nonce_str(), 'jsapi_ticket': 'xxxxxx', # jsapi_ticket 一个类似ACCESS_TOKEN的参数, # 详见 https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.6103989146089088#jssdkshiyongbuzhou 'timestamp': int(time()), 'url': 'http://www.example.com/pay/goods=3' # 使用js_api的网页网址 } raw = [(k, str(config_args[k]) if isinstance(config_args[k], (int, float)) else config_args[k]) for k in sorted(config_args.keys())] s = "&".join("=".join(kv) for kv in raw if kv[1]) return { 'signature': sha1(s).hexdigest(), 'timestamp': config_args['timestamp'], 'nonce_str': config_args['noncestr'] }
from weixin import WeixinPay, WeixinError from . import wx_pay from wx_pay import WxPay, WxPayError import urllib import re import time import os pay = WeixinPay('wxa8025380403083c5', '1487139352', '0aa4a0c3ac4bd1cbdc4d5fcd061f7163', 'http://www.weixin.qq.com/wxpay/pay.php') # 后两个参数可选 wx_pay = WxPay( wx_app_id='wxa8025380403083c5', # 微信平台appid wx_mch_id='1487139352', # 微信支付商户号 wx_mch_key='0aa4a0c3ac4bd1cbdc4d5fcd061f7163', # wx_mch_key 微信支付重要密钥,请登录微信支付商户平台,在 账户中心-API安全-设置API密钥设置 wx_notify_url='http://www.weixin.qq.com/wxpay/pay.php' # wx_notify_url 接受微信付款消息通知地址(通常比自己把支付成功信号写在js里要安全得多,推荐使用这个来接收微信支付成功通知) # wx_notify_url 开发详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 ) apiUrl = "https://www.weixinjiajiao.cn/" # lv.0 0-100 # lv.1 100-300 # lv.2 300-600 # lv.3 600-1000 # lv.4 1000-1500 # lv.5 1500-2100 # lv.6 2100-2800 # lv.7 2800-3600 # lv.8 3600-4500
# coding: utf-8 from wx_pay import WxPay, WxPayError from weixin.config import * from hashlib import sha1 from time import time import json from flask import jsonify wx_pay = WxPay( wx_app_id=WEIXIN_APPID, # 微信平台appid wx_mch_id=ZHIHU_ID, # 微信支付商户号 wx_mch_key=ZHIHU_KEY, # wx_mch_key 微信支付重要密钥,请登录微信支付商户平台,在 账户中心-API安全-设置API密钥设置 wx_notify_url='http://ewosugong.com/wxpay/notify' # wx_notify_url 接受微信付款消息通知地址(通常比自己把支付成功信号写在js里要安全得多,推荐使用这个来接收微信支付成功通知) # wx_notify_url 开发详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 ) try: pay_data = wx_pay.js_pay_api( openid='oT69X1Chvefxgv3wby_-PaEIM9nY', # 付款用户openid body=u'商品', # 例如:饭卡充值100元 total_fee=100, # total_fee 单位是 分, 100 = 1元 spbill_create_ip='47.104.175.181' # 若不使用flask框架,则需要传入调用微信支付的用户ip地址 ) print pay_data print json.dumps(pay_data) # 订单生成后将请将返回的json数据 传入前端页面微信支付js的参数部分 #print jsonify(pay_data) except WxPayError, e: