Skip to content

Commit c6f5ec0

Browse files
committed
添加微信支付
1 parent 1eee9d2 commit c6f5ec0

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,7 @@ docs/_build/
5555

5656
# PyBuilder
5757
target/
58+
59+
# wechat pay
60+
apiclient_cert.pem
61+
apiclient_key.pem

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ WECHAT_SESSTION_MEMCACHED | None | eg. 127.0.0.1:11211
1919
WECHAT_AES_KEY | None | 微信消息加密的 key,如果是企业号则必填
2020
WECHAT_TOKEN | None | 微信接收消息时的 token
2121
WECHAT_OAUTH_URI | None | oauth 时的回调地址,默认为当前 url
22+
WECHAT_PAY_API_KEY | None | 微信支付 api key
23+
WECHAT_PAY_MCH_CERT | None | 微信支付 商户证书路径 eg. apiclient_cert.pem
24+
WECHAT_PAY_MCH_KEY | None | 微信支付 商户密钥路径 eg. apiclient_key.pem
25+
WECHAT_PAY_MCH_ID | None | 微信支付 商户号
26+
WECHAT_PAY_SUB_MCH_ID | None | 微信支付 子商户号,非必填
2227

2328
#Usage
2429

flask_wechatpy/__init__.py

+41
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import functools
55
from flask import request, current_app, abort, redirect
66
from wechatpy.replies import BaseReply
7+
from wechatpy.pay import WeChatPay as ori_WeChatPay
78
from wechatpy.utils import check_signature
89
from wechatpy.exceptions import (
910
InvalidSignatureException,
@@ -269,3 +270,43 @@ def wrapper(*args, **kwargs):
269270
return method(*args, **kwargs)
270271
return wrapper
271272
return decorater
273+
274+
275+
class WechatPay(object):
276+
277+
def __init__(self, app=None):
278+
279+
self._wechat_client = None
280+
281+
if app is not None:
282+
self.init_app(app)
283+
284+
def init_app(self, app):
285+
config = app.config
286+
config.setdefault('WECHAT_APPID', None)
287+
config.setdefault('WECHAT_PAY_API_KEY', None)
288+
config.setdefault('WECHAT_PAY_MCH_CERT', None)
289+
config.setdefault('WECHAT_PAY_MCH_KEY', None)
290+
config.setdefault('WECHAT_PAY_MCH_ID', None)
291+
config.setdefault('WECHAT_PAY_SUB_MCH_ID', None)
292+
293+
assert config['WECHAT_APPID'] is not None
294+
assert config['WECHAT_PAY_API_KEY'] is not None
295+
assert config['WECHAT_PAY_MCH_CERT'] is not None
296+
assert config['WECHAT_PAY_MCH_KEY'] is not None
297+
assert config['WECHAT_PAY_MCH_ID'] is not None
298+
299+
self._wechat_pay = ori_WeChatPay(
300+
appid=config['WECHAT_APPID'],
301+
api_key=config['WECHAT_PAY_API_KEY'],
302+
mch_id=config['WECHAT_PAY_MCH_ID'],
303+
sub_mch_id=config.get('WECHAT_PAY_SUB_MCH_ID', None),
304+
mch_cert=config['WECHAT_PAY_MCH_CERT'],
305+
mch_key=config['WECHAT_PAY_MCH_KEY'],
306+
)
307+
if not hasattr(app, 'extensions'):
308+
app.extensions = {}
309+
app.extensions['wechat_pay'] = self
310+
311+
def __getattr__(self, name):
312+
return getattr(self._wechat_pay, name)

0 commit comments

Comments
 (0)