From 9948117372824d43855c78a0651c8c9a7637eaf5 Mon Sep 17 00:00:00 2001 From: dylandai Date: Wed, 11 Nov 2020 10:44:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=85=AC=E4=BC=97=E5=8F=B7=E6=94=AF=E4=BB=98=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Gateways/Wechat/PubCharge.php | 35 ++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/Gateways/Wechat/PubCharge.php b/src/Gateways/Wechat/PubCharge.php index 83180cd2..5379a351 100644 --- a/src/Gateways/Wechat/PubCharge.php +++ b/src/Gateways/Wechat/PubCharge.php @@ -13,6 +13,8 @@ use Payment\Contracts\IGatewayRequest; use Payment\Exceptions\GatewayException; +use Payment\Helpers\ArrayUtil; +use Payment\Helpers\StrUtil; use Payment\Payment; /** @@ -36,10 +38,41 @@ class PubCharge extends WechatBaseObject implements IGatewayRequest public function request(array $requestParams) { try { - return $this->requestWXApi(self::METHOD, $requestParams); + $ret = $this->requestWXApi(self::METHOD, $requestParams); } catch (GatewayException $e) { throw $e; } + + // 生成app端需要的数据 + if (is_array($ret) && $ret['return_code'] === 'SUCCESS' && $ret['result_code'] === 'SUCCESS') { + $payData = [ + 'appId' => $ret['appid'], + 'package' => 'prepay_id='.$ret['prepay_id'], + 'nonceStr' => StrUtil::getNonceStr(self::NONCE_LEN), + 'timestamp' => time(), + 'signType' => $this->signType + ]; + + // 添加签名 + $payData = ArrayUtil::paraFilter($payData); + $payData = ArrayUtil::arraySort($payData); + + try { + $signStr = ArrayUtil::createLinkstring($payData); + $payData['sign'] = $this->makeSign($signStr); + } catch (\Exception $e) { + throw new GatewayException($e->getMessage(), Payment::PARAMS_ERR); + } + + // 这三个字段是为了让前端的判断保持一致 + $payData['return_code'] = 'SUCCESS'; + $payData['return_msg'] = $ret['return_msg']; + $payData['result_code'] = 'SUCCESS'; + + $ret = $payData; + } + + return $ret; } /** From 4f7fa9508694c64c8e983ba616dbd71910057f15 Mon Sep 17 00:00:00 2001 From: dylandai Date: Wed, 11 Nov 2020 10:57:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=AC=E4=BC=97=E5=8F=B7=E6=94=AF?= =?UTF-8?q?=E4=BB=98jssdk=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Gateways/Wechat/PubCharge.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Gateways/Wechat/PubCharge.php b/src/Gateways/Wechat/PubCharge.php index 5379a351..1d56ceb5 100644 --- a/src/Gateways/Wechat/PubCharge.php +++ b/src/Gateways/Wechat/PubCharge.php @@ -49,7 +49,7 @@ public function request(array $requestParams) 'appId' => $ret['appid'], 'package' => 'prepay_id='.$ret['prepay_id'], 'nonceStr' => StrUtil::getNonceStr(self::NONCE_LEN), - 'timestamp' => time(), + 'timeStamp' => time(), 'signType' => $this->signType ]; @@ -59,7 +59,7 @@ public function request(array $requestParams) try { $signStr = ArrayUtil::createLinkstring($payData); - $payData['sign'] = $this->makeSign($signStr); + $payData['paySign'] = $this->makeSign($signStr); } catch (\Exception $e) { throw new GatewayException($e->getMessage(), Payment::PARAMS_ERR); }