|
4 | 4 | import functools
|
5 | 5 | from flask import request, current_app, abort, redirect
|
6 | 6 | from wechatpy.replies import BaseReply
|
| 7 | +from wechatpy.pay import WeChatPay as ori_WeChatPay |
7 | 8 | from wechatpy.utils import check_signature
|
8 | 9 | from wechatpy.exceptions import (
|
9 | 10 | InvalidSignatureException,
|
@@ -269,3 +270,43 @@ def wrapper(*args, **kwargs):
|
269 | 270 | return method(*args, **kwargs)
|
270 | 271 | return wrapper
|
271 | 272 | 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