Completed
Push — master ( 76d6fa...9bc9b6 )
by Wei
08:43
created

Redpack::sendRedPack()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 17
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 16
nc 2
nop 11
dl 0
loc 17
ccs 17
cts 17
cp 1
crap 3
rs 9.7333
c 0
b 0
f 0

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
<?php
2
namespace zhangv\wechat\pay\service;
3
use \zhangv\wechat\pay\WechatPay;
4
use \Exception;
5
6
/**
7
 * 现金红包
8
 * @license MIT
9
 * @zhangv
10
 * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1
11
 *
12
 */
13
class Redpack extends WechatPay {
14
15
	/**
16
	 * 发放普通红包
17
	 * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
18
	 * @param $mch_billno string 商户订单号
19
	 * @param $send_name string 商户名称
20
	 * @param $re_openid string 用户openid
21
	 * @param $total_amount int 付款金额 单位分
22
	 * @param $total_num int 红包发放总人数
23
	 * @param $wishing string 红包祝福语
24
	 * @param $act_name string 活动名称
25
	 * @param $remark string 备注
26
	 * @param $scene_id string 场景id,发放红包使用场景,红包金额大于200时必传 PRODUCT_1:商品促销 PRODUCT_2:抽奖 PRODUCT_3:虚拟物品兑奖 PRODUCT_4:企业内部福利 PRODUCT_5:渠道分润 PRODUCT_6:保险回馈 PRODUCT_7:彩票派奖 PRODUCT_8:税务刮奖
27
	 * @param $riskinfo string 活动信息
28
	 * @param $consume_mch_id string 资金授权商户号
29
	 * @return array
30
	 * @throws Exception
31
	 */
32 2
	public function sendRedPack($mch_billno,$send_name,$re_openid,$total_amount,$total_num,$wishing,$act_name,$remark,$scene_id = '',$riskinfo = '',$consume_mch_id = ''){
33 2
		$data = array();
34 2
		$data["wxappid"] = $this->config["app_id"];
35 2
		$data["mch_billno"] = $mch_billno;
36 2
		$data["send_name"] = $send_name;
37 2
		$data["re_openid"] = $re_openid;
38 2
		$data["total_amount"] = $total_amount;
39 2
		if($total_amount > 20000 && trim($scene_id)=='') throw new Exception("scene_id is required when total_amount beyond 20000");
40 2
		$data["total_num"] = $total_num;
41 2
		$data["wishing"] = $wishing;
42 2
		$data["act_name"] = $act_name;
43 2
		$data["remark"] = $remark;
44 2
		$data["scene_id"] = $scene_id;
45 2
		$data["riskinfo"] = $riskinfo;
46 2
		$data["consume_mch_id"] = $consume_mch_id;
47 2
		$result = $this->post(self::URL_SENDREDPACK, $data, true); //cert is required
48 1
		return $result;
49
	}
50
51
	/**
52
	 * 发放裂变红包
53
	 * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4
54
	 * @param $mch_billno string 商户订单号
55
	 * @param $send_name string 商户名称
56
	 * @param $re_openid string 用户openid
57
	 * @param $total_amount int 付款金额 单位分
58
	 * @param $total_num int 红包发放总人数
59
	 * @param $wishing string 红包祝福语
60
	 * @param $act_name string 活动名称
61
	 * @param $remark string 备注
62
	 * @param $scene_id string 场景id,发放红包使用场景,红包金额大于200时必传 PRODUCT_1:商品促销 PRODUCT_2:抽奖 PRODUCT_3:虚拟物品兑奖 PRODUCT_4:企业内部福利 PRODUCT_5:渠道分润 PRODUCT_6:保险回馈 PRODUCT_7:彩票派奖 PRODUCT_8:税务刮奖
63
	 * @param $riskinfo string 活动信息
64
	 * @param $consume_mch_id string 资金授权商户号
65
	 * @return array
66
	 * @throws Exception
67
	 */
68 2
	public function sendGroupRedPack($mch_billno,$send_name,$re_openid,$total_amount,$total_num,$wishing,$act_name,$remark,$scene_id = '',$riskinfo = '',$consume_mch_id = ''){
69 2
		$data = array();
70 2
		$data["wxappid"] = $this->config["app_id"];//NOTE: WXappid
71 2
		$data["mch_billno"] = $mch_billno;
72 2
		$data["send_name"] = $send_name;
73 2
		$data["re_openid"] = $re_openid;
74 2
		$data["total_amount"] = $total_amount;
75 2
		if($total_amount > 20000 && trim($scene_id)=='') throw new Exception("scene_id is required when total_amount beyond 20000(200rmb)");
76 2
		$data["total_num"] = $total_num;
77 2
		$data["amt_type"] = 'ALL_RAND'; //红包金额设置方式 ALL_RAND—全部随机
78 2
		$data["wishing"] = $wishing;
79 2
		$data["act_name"] = $act_name;
80 2
		$data["remark"] = $remark;
81 2
		$data["scene_id"] = $scene_id;
82 2
		$data["riskinfo"] = $riskinfo;
83 2
		$data["consume_mch_id"] = $consume_mch_id;
84 2
		$result = $this->post(self::URL_SENDGROUPREDPACK, $data, true); //cert is required
85 1
		return $result;
86
	}
87
88
	/**
89
	 * 查询红包记录
90
	 * @param $mch_billno string 商户订单号
91
	 * @return array
92
	 * @throws Exception
93
	 * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_6&index=5
94
	 */
95 2
	public function getHbInfo($mch_billno){
96 2
		$data = array();
97 2
		$data["mch_billno"] = $mch_billno;
98 2
		$data["appid"] = $this->config["app_id"];
99 2
		$data["bill_type"] = 'MCHT'; //MCHT:通过商户订单号获取红包信息。
100 2
		$result = $this->post(self::URL_GETHBINFO, $data, true); //cert is required
101 1
		return $result;
102
	}
103
104
}