Commit 0d6a0b5f by yeran

feat: update the function of wxPubCharge(sub_mch_id)

1 parent d6c87ea4
......@@ -31,7 +31,7 @@ class WxPubCharge extends WxBaseStrategy
* 处理公众号支付的返回值。直接返回与微信文档对应的字段
* @param array $ret
*
* @return string $data 包含以下键
* @return array $data 包含以下键
*
* ```php
* $data = [
......@@ -43,7 +43,7 @@ class WxPubCharge extends WxBaseStrategy
* 'paySign' => '', // 签名
* ];
* ```
*
* @throws \Payment\Common\PayException
*/
protected function retData(array $ret)
{
......
......@@ -25,20 +25,26 @@ use Payment\Utils\ArrayUtil;
*/
class PubChargeData extends ChargeBaseData
{
/**
* @return mixed|void
* @throws PayException
*/
protected function checkDataParam()
{
parent::checkDataParam(); // TODO: Change the autogenerated stub
// 公众号支付,必须设置openid
$openid = $this->openid;
if (empty($openid)) {
throw new PayException('用户在商户appid下的唯一标识,公众号支付,必须设置该参数.');
}
$subMchId = $this->sub_mch_id;// 如果是服务商模式,则 sub_openid 必须提供
$subOpenid = $this->sub_openid;
if ($subMchId && empty($subOpenid)) {
throw new PayException('公众号的服务商模式,必须提供 sub_openid 参数.');
if (!empty($subOpenid) && empty($subMchId)) {
throw new PayException('公众号的服务商模式,如果传入sub_openid 则 必须提供 sub_mch_id 参数.');
}
if (empty($openid)) {
if (empty($subMchId))
throw new PayException('用户在商户appid下的唯一标识,公众号支付,必须设置该参数.');
elseif (empty($subOpenid))
throw new PayException('服务商模式下open_id 或者 sub_openid 必须传入一个');
}
}
......@@ -66,6 +72,11 @@ class PubChargeData extends ChargeBaseData
'time_start' => $this->timeStart,
'time_expire' => $this->timeout_express,
'openid' => $this->openid,
// 服务商模式
'sub_appid' => $this->sub_appid,
'sub_mch_id' => $this->sub_mch_id,
'sub_openid' => $this->sub_openid,
];
// 移除数组中的空值
......
......@@ -119,8 +119,9 @@ abstract class WxBaseStrategy implements BaseStrategy
/**
* @param array $data
*
* @throws PayException
* @return array|string
* @throws \Exception
* @throws PayException
*/
public function handle(array $data)
{
......@@ -162,6 +163,7 @@ abstract class WxBaseStrategy implements BaseStrategy
* @param array $retData
* @return boolean
*
* @throws \Exception
*/
protected function verifySign(array $retData)
{
......
......@@ -65,6 +65,7 @@ class WxNotify extends NotifyStrategy
*
*
* @return boolean
* @throws \Exception
*/
public function checkNotifyData(array $data)
{
......@@ -82,7 +83,7 @@ class WxNotify extends NotifyStrategy
* 检查微信返回的数据是否被篡改过
* @param array $retData
* @return boolean
*
* @throws \Exception
*/
protected function verifySign(array $retData)
{
......@@ -143,9 +144,21 @@ class WxNotify extends NotifyStrategy
'trade_state' => strtolower($data['return_code']),
'channel' => Config::WX_CHARGE,
];
if (!empty($data['sub_appid'])) {
$retData['sub_appid'] = $data['sub_appid'];
}
if (!empty($data['sub_mch_id'])) {
$retData['sub_mch_id'] = $data['sub_mch_id'];
}
if (!empty($data['sub_openid'])) {
$retData['sub_openid'] = $data['sub_openid'];
}
if (!empty($data['sub_is_subscribe'])) {
$retData['sub_is_subscribe'] = $data['sub_is_subscribe'];
}
// 检查是否存在用户自定义参数
if (isset($data['attach']) && ! empty($data['attach'])) {
if (isset($data['attach']) && !empty($data['attach'])) {
$retData['return_param'] = $data['attach'];
}
......@@ -166,7 +179,7 @@ class WxNotify extends NotifyStrategy
'return_code' => 'SUCCESS',
'return_msg' => 'OK',
];
if (! $flag) {
if (!$flag) {
// 失败
$result = [
'return_code' => 'FAIL',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!