wechatpy.pay.api.refund.WeChatRefund.apply()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 35
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 3.1852

Importance

Changes 0
Metric Value
cc 2
eloc 18
nop 12
dl 0
loc 35
rs 9.5
c 0
b 0
f 0
ccs 1
cts 3
cp 0.3333
crap 3.1852

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
# -*- coding: utf-8 -*-
2 10
from __future__ import absolute_import, unicode_literals
3
4 10
from wechatpy.pay.base import BaseWeChatPayAPI
5
6
7 10
class WeChatRefund(BaseWeChatPayAPI):
8
9 10
    def apply(self, total_fee, refund_fee, out_refund_no, transaction_id=None,
10
              out_trade_no=None, fee_type='CNY', op_user_id=None,
11
              device_info=None, refund_account='REFUND_SOURCE_UNSETTLED_FUNDS',
12
              refund_desc=None, notify_url=None):
13
        """
14
        申请退款
15
16
        :param total_fee: 订单总金额,单位为分
17
        :param refund_fee: 退款总金额,单位为分
18
        :param out_refund_no: 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
19
        :param transaction_id: 可选,微信订单号
20
        :param out_trade_no: 可选,商户系统内部的订单号,与 transaction_id 二选一
21
        :param fee_type: 可选,货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY
22
        :param op_user_id: 可选,操作员帐号, 默认为商户号
23
        :param device_info: 可选,终端设备号
24
        :param refund_desc: 可选,退款原因
25
        :param refund_account: 可选,退款资金来源,仅针对老资金流商户使用,默认使用未结算资金退款
26
        :param notify_url: 可选,异步接收微信支付退款结果通知的回调地址
27
        :return: 返回的结果数据
28
        """
29
        data = {
30
            'appid': self.appid,
31
            'device_info': device_info,
32
            'transaction_id': transaction_id,
33
            'out_trade_no': out_trade_no,
34
            'out_refund_no': out_refund_no,
35
            'total_fee': total_fee,
36
            'refund_fee': refund_fee,
37
            'refund_fee_type': fee_type,
38
            'op_user_id': op_user_id if op_user_id else self.mch_id,
39
            'refund_account': refund_account,
40
            "refund_desc": refund_desc,
41
            'notify_url': notify_url,
42
        }
43
        return self._post('secapi/pay/refund', data=data)
44
45 10
    def query(self, refund_id=None, out_refund_no=None, transaction_id=None,
46
              out_trade_no=None, device_info=None):
47
        """
48
        查询退款
49
50
        :param refund_id: 微信退款单号
51
        :param out_refund_no: 商户退款单号
52
        :param transaction_id: 微信订单号
53
        :param out_trade_no: 商户系统内部的订单号
54
        :param device_info: 可选,终端设备号
55
        :return: 返回的结果数据
56
        """
57
        data = {
58
            'appid': self.appid,
59
            'device_info': device_info,
60
            'transaction_id': transaction_id,
61
            'out_trade_no': out_trade_no,
62
            'out_refund_no': out_refund_no,
63
            'refund_id': refund_id,
64
        }
65
        return self._post('pay/refundquery', data=data)
66