wechatpy.pay.api.coupon   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Test Coverage

Coverage 47.06%

Importance

Changes 0
Metric Value
eloc 45
dl 0
loc 83
rs 10
c 0
b 0
f 0
ccs 8
cts 17
cp 0.4706
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A WeChatCoupon.query_stock() 0 18 1
A WeChatCoupon.send() 0 31 2
A WeChatCoupon.query_coupon() 0 21 1
1
# -*- coding: utf-8 -*-
2 10
from __future__ import absolute_import, unicode_literals
3 10
import random
4 10
from datetime import datetime
5
6 10
from wechatpy.pay.base import BaseWeChatPayAPI
7
8
9 10
class WeChatCoupon(BaseWeChatPayAPI):
10
11 10
    def send(self, user_id, stock_id, op_user_id=None, device_info=None,
12
             out_trade_no=None):
13
        """
14
        发放代金券
15
16
        :param user_id: 用户在公众号下的 openid
17
        :param stock_id: 代金券批次 ID
18
        :param op_user_id: 可选,操作员账号,默认为商户号
19
        :param device_info: 可选,微信支付分配的终端设备号
20
        :param out_trade_no: 可选,商户订单号,需保持唯一性,默认自动生成
21
        :return: 返回的结果信息
22
        """
23
        if not out_trade_no:
24
            now = datetime.now()
25
            out_trade_no = '{0}{1}{2}'.format(
26
                self.mch_id,
27
                now.strftime('%Y%m%d%H%M%S'),
28
                random.randint(1000, 10000)
29
            )
30
        data = {
31
            'appid': self.appid,
32
            'coupon_stock_id': stock_id,
33
            'openid': user_id,
34
            'openid_count': 1,
35
            'partner_trade_no': out_trade_no,
36
            'op_user_id': op_user_id,
37
            'device_info': device_info,
38
            'version': '1.0',
39
            'type': 'XML',
40
        }
41
        return self._post('mmpaymkttransfers/send_coupon', data=data)
42
43 10
    def query_stock(self, stock_id, op_user_id=None, device_info=None):
44
        """
45
        查询代金券批次
46
47
        :param stock_id: 代金券批次 ID
48
        :param op_user_id: 可选,操作员账号,默认为商户号
49
        :param device_info: 可选,微信支付分配的终端设备号
50
        :return: 返回的结果信息
51
        """
52
        data = {
53
            'appid': self.appid,
54
            'coupon_stock_id': stock_id,
55
            'op_user_id': op_user_id,
56
            'device_info': device_info,
57
            'version': '1.0',
58
            'type': 'XML',
59
        }
60
        return self._post('mmpaymkttransfers/query_coupon_stock', data=data)
61
62 10
    def query_coupon(self, coupon_id, user_id,
63
                     op_user_id=None, device_info=None):
64
        """
65
        查询代金券信息
66
67
        :param coupon_id: 代金券 ID
68
        :param user_id: 用户在公众号下的 openid
69
        :param op_user_id: 可选,操作员账号,默认为商户号
70
        :param device_info: 可选,微信支付分配的终端设备号
71
        :return: 返回的结果信息
72
        """
73
        data = {
74
            'coupon_id': coupon_id,
75
            'openid': user_id,
76
            'appid': self.appid,
77
            'op_user_id': op_user_id,
78
            'device_info': device_info,
79
            'version': '1.0',
80
            'type': 'XML',
81
        }
82
        return self._post('promotion/query_coupon', data=data)
83