| @@ -157,7 +157,7 @@ discard block | ||
| 157 | 157 | return $url; | 
| 158 | 158 | } | 
| 159 | 159 | |
| 160 | - return Wechat::URL[$config['mode'] ?? Pay::MODE_NORMAL].$url; | |
| 160 | + return Wechat::URL[$config['mode'] ?? Pay::MODE_NORMAL] . $url; | |
| 161 | 161 | } | 
| 162 | 162 | |
| 163 | 163 | /** | 
| @@ -176,7 +176,7 @@ discard block | ||
| 176 | 176 | |
| 177 | 177 | function get_wechat_type_key(array $params): string | 
| 178 | 178 |  { | 
| 179 | - $key = ($params['_type'] ?? 'mp').'_app_id'; | |
| 179 | + $key = ($params['_type'] ?? 'mp') . '_app_id'; | |
| 180 | 180 | |
| 181 | 181 |      if ('app_app_id' === $key) { | 
| 182 | 182 | $key = 'app_id'; | 
| @@ -219,10 +219,10 @@ discard block | ||
| 219 | 219 | $buff = ''; | 
| 220 | 220 | |
| 221 | 221 |      foreach ($payload as $k => $v) { | 
| 222 | -        $buff .= ('sign' != $k && '' != $v && !is_array($v)) ? $k.'='.$v.'&' : ''; | |
| 222 | +        $buff .= ('sign' != $k && '' != $v && !is_array($v)) ? $k . '=' . $v . '&' : ''; | |
| 223 | 223 | } | 
| 224 | 224 | |
| 225 | - $sign = md5($buff.'key='.$key); | |
| 225 | + $sign = md5($buff . 'key=' . $key); | |
| 226 | 226 | |
| 227 | 227 | return $upper ? strtoupper($sign) : $sign; | 
| 228 | 228 | } | 
| @@ -235,7 +235,7 @@ discard block | ||
| 235 | 235 | * @throws InvalidSignException | 
| 236 | 236 | * @throws ServiceNotFoundException | 
| 237 | 237 | */ | 
| 238 | -function verify_wechat_sign(ResponseInterface|ServerRequestInterface $message, array $params): void | |
| 238 | +function verify_wechat_sign(ResponseInterface | ServerRequestInterface $message, array $params): void | |
| 239 | 239 |  { | 
| 240 | 240 |      if ($message instanceof ServerRequestInterface && 'localhost' === $message->getUri()->getHost()) { | 
| 241 | 241 | return; | 
| @@ -247,7 +247,7 @@ discard block | ||
| 247 | 247 |      $sign = $message->getHeaderLine('Wechatpay-Signature'); | 
| 248 | 248 | $body = (string) $message->getBody(); | 
| 249 | 249 | |
| 250 | - $content = $timestamp."\n".$random."\n".$body."\n"; | |
| 250 | + $content = $timestamp . "\n" . $random . "\n" . $body . "\n"; | |
| 251 | 251 |      $public = get_provider_config('wechat', $params)['wechat_public_cert_path'][$wechatSerial] ?? null; | 
| 252 | 252 | |
| 253 | 253 |      if (empty($sign)) { | 
| @@ -332,7 +332,7 @@ discard block | ||
| 332 | 332 | } | 
| 333 | 333 | |
| 334 | 334 | Pay::get(ConfigInterface::class)->set( | 
| 335 | - 'wechat.'.get_tenant($params).'.wechat_public_cert_path', | |
| 335 | + 'wechat.' . get_tenant($params) . '.wechat_public_cert_path', | |
| 336 | 336 | ((array) ($wechatConfig['wechat_public_cert_path'] ?? [])) + ($certs ?? []), | 
| 337 | 337 | ); | 
| 338 | 338 | |
| @@ -363,7 +363,7 @@ discard block | ||
| 363 | 363 | } | 
| 364 | 364 | |
| 365 | 365 |      foreach ($config['wechat_public_cert_path'] as $serialNo => $cert) { | 
| 366 | - file_put_contents($path.'/'.$serialNo.'.crt', $cert); | |
| 366 | + file_put_contents($path . '/' . $serialNo . '.crt', $cert); | |
| 367 | 367 | } | 
| 368 | 368 | } | 
| 369 | 369 | |
| @@ -395,7 +395,7 @@ discard block | ||
| 395 | 395 | /** | 
| 396 | 396 | * @throws DecryptException | 
| 397 | 397 | */ | 
| 398 | -function decrypt_wechat_resource_aes_256_gcm(string $ciphertext, string $secret, string $nonce, string $associatedData): array|string | |
| 398 | +function decrypt_wechat_resource_aes_256_gcm(string $ciphertext, string $secret, string $nonce, string $associatedData): array | string | |
| 399 | 399 |  { | 
| 400 | 400 | $decrypted = openssl_decrypt( | 
| 401 | 401 | substr($ciphertext, 0, -Wechat::AUTH_TAG_LENGTH_BYTE), | 
| @@ -456,7 +456,7 @@ discard block | ||
| 456 | 456 | $publicKey = $config['wechat_public_cert_path'][$serialNo] ?? null; | 
| 457 | 457 | |
| 458 | 458 |      if (empty($publicKey)) { | 
| 459 | - throw new InvalidParamsException(Exception::PARAMS_WECHAT_SERIAL_NOT_FOUND, '参数异常: 微信公钥序列号未找到 - '.$serialNo); | |
| 459 | + throw new InvalidParamsException(Exception::PARAMS_WECHAT_SERIAL_NOT_FOUND, '参数异常: 微信公钥序列号未找到 - ' . $serialNo); | |
| 460 | 460 | } | 
| 461 | 461 | |
| 462 | 462 | return $publicKey; | 
| @@ -471,7 +471,7 @@ discard block | ||
| 471 | 471 | throw new InvalidConfigException(Exception::CONFIG_WECHAT_INVALID, '配置异常: 缺少微信配置 -- [mini_app_key_virtual_pay]'); | 
| 472 | 472 | } | 
| 473 | 473 | |
| 474 | -    return hash_hmac('sha256', $url.'&'.$payload, $config['mini_app_key_virtual_pay']); | |
| 474 | +    return hash_hmac('sha256', $url . '&' . $payload, $config['mini_app_key_virtual_pay']); | |
| 475 | 475 | } | 
| 476 | 476 | |
| 477 | 477 | function get_wechat_miniprogram_user_sign(string $sessionKey, string $payload): string | 
| @@ -532,7 +532,7 @@ discard block | ||
| 532 | 532 | return $url; | 
| 533 | 533 | } | 
| 534 | 534 | |
| 535 | - return Unipay::URL[$config['mode'] ?? Pay::MODE_NORMAL].$url; | |
| 535 | + return Unipay::URL[$config['mode'] ?? Pay::MODE_NORMAL] . $url; | |
| 536 | 536 | } | 
| 537 | 537 | |
| 538 | 538 | /** | 
| @@ -565,10 +565,10 @@ discard block | ||
| 565 | 565 | $buff = ''; | 
| 566 | 566 | |
| 567 | 567 |      foreach ($payload as $k => $v) { | 
| 568 | -        $buff .= ('sign' != $k && '' != $v && !is_array($v)) ? $k.'='.$v.'&' : ''; | |
| 568 | +        $buff .= ('sign' != $k && '' != $v && !is_array($v)) ? $k . '=' . $v . '&' : ''; | |
| 569 | 569 | } | 
| 570 | 570 | |
| 571 | - return strtoupper(md5($buff.'key='.$key)); | |
| 571 | + return strtoupper(md5($buff . 'key=' . $key)); | |
| 572 | 572 | } | 
| 573 | 573 | |
| 574 | 574 | /** | 
| @@ -647,5 +647,5 @@ discard block | ||
| 647 | 647 | return $url; | 
| 648 | 648 | } | 
| 649 | 649 | |
| 650 | - return Douyin::URL[$config['mode'] ?? Pay::MODE_NORMAL].$url; | |
| 650 | + return Douyin::URL[$config['mode'] ?? Pay::MODE_NORMAL] . $url; | |
| 651 | 651 | } | 
| @@ -53,9 +53,9 @@ discard block | ||
| 53 | 53 | * @throws InvalidParamsException | 
| 54 | 54 | * @throws ServiceNotFoundException | 
| 55 | 55 | */ | 
| 56 | - public function __call(string $shortcut, array $params): null|Collection|MessageInterface|Rocket | |
| 56 | + public function __call(string $shortcut, array $params): null | Collection | MessageInterface | Rocket | |
| 57 | 57 |      { | 
| 58 | - $plugin = '\Yansongda\Pay\Shortcut\Alipay\\'.Str::studly($shortcut).'Shortcut'; | |
| 58 | + $plugin = '\Yansongda\Pay\Shortcut\Alipay\\' . Str::studly($shortcut) . 'Shortcut'; | |
| 59 | 59 | |
| 60 | 60 | return Artful::shortcut($plugin, ...$params); | 
| 61 | 61 | } | 
| @@ -64,7 +64,7 @@ discard block | ||
| 64 | 64 | * @throws ContainerException | 
| 65 | 65 | * @throws InvalidParamsException | 
| 66 | 66 | */ | 
| 67 | - public function pay(array $plugins, array $params): null|Collection|MessageInterface|Rocket | |
| 67 | + public function pay(array $plugins, array $params): null | Collection | MessageInterface | Rocket | |
| 68 | 68 |      { | 
| 69 | 69 | return Artful::artful($plugins, $params); | 
| 70 | 70 | } | 
| @@ -74,7 +74,7 @@ discard block | ||
| 74 | 74 | * @throws InvalidParamsException | 
| 75 | 75 | * @throws ServiceNotFoundException | 
| 76 | 76 | */ | 
| 77 | - public function query(array $order): Collection|Rocket | |
| 77 | + public function query(array $order): Collection | Rocket | |
| 78 | 78 |      { | 
| 79 | 79 |          Event::dispatch(new MethodCalled('alipay', __METHOD__, $order, null)); | 
| 80 | 80 | |
| @@ -86,7 +86,7 @@ discard block | ||
| 86 | 86 | * @throws InvalidParamsException | 
| 87 | 87 | * @throws ServiceNotFoundException | 
| 88 | 88 | */ | 
| 89 | - public function cancel(array $order): Collection|Rocket | |
| 89 | + public function cancel(array $order): Collection | Rocket | |
| 90 | 90 |      { | 
| 91 | 91 |          Event::dispatch(new MethodCalled('alipay', __METHOD__, $order, null)); | 
| 92 | 92 | |
| @@ -98,7 +98,7 @@ discard block | ||
| 98 | 98 | * @throws InvalidParamsException | 
| 99 | 99 | * @throws ServiceNotFoundException | 
| 100 | 100 | */ | 
| 101 | - public function close(array $order): Collection|Rocket | |
| 101 | + public function close(array $order): Collection | Rocket | |
| 102 | 102 |      { | 
| 103 | 103 |          Event::dispatch(new MethodCalled('alipay', __METHOD__, $order, null)); | 
| 104 | 104 | |
| @@ -110,7 +110,7 @@ discard block | ||
| 110 | 110 | * @throws InvalidParamsException | 
| 111 | 111 | * @throws ServiceNotFoundException | 
| 112 | 112 | */ | 
| 113 | - public function refund(array $order): Collection|Rocket | |
| 113 | + public function refund(array $order): Collection | Rocket | |
| 114 | 114 |      { | 
| 115 | 115 |          Event::dispatch(new MethodCalled('alipay', __METHOD__, $order, null)); | 
| 116 | 116 | |
| @@ -121,7 +121,7 @@ discard block | ||
| 121 | 121 | * @throws ContainerException | 
| 122 | 122 | * @throws InvalidParamsException | 
| 123 | 123 | */ | 
| 124 | - public function callback(null|array|ServerRequestInterface $contents = null, ?array $params = null): Collection | |
| 124 | + public function callback(null | array | ServerRequestInterface $contents = null, ?array $params = null): Collection | |
| 125 | 125 |      { | 
| 126 | 126 | $request = $this->getCallbackParams($contents); | 
| 127 | 127 | |
| @@ -134,7 +134,7 @@ discard block | ||
| 134 | 134 | * @throws ContainerException | 
| 135 | 135 | * @throws InvalidParamsException | 
| 136 | 136 | */ | 
| 137 | - public function appCallback(null|array|ServerRequestInterface $contents = null, ?array $params = null): Collection | |
| 137 | + public function appCallback(null | array | ServerRequestInterface $contents = null, ?array $params = null): Collection | |
| 138 | 138 |      { | 
| 139 | 139 | $request = $this->getCallbackParams($contents); | 
| 140 | 140 | |
| @@ -155,7 +155,7 @@ discard block | ||
| 155 | 155 | ); | 
| 156 | 156 | } | 
| 157 | 157 | |
| 158 | - protected function getCallbackParams(null|array|ServerRequestInterface $contents = null): Collection | |
| 158 | + protected function getCallbackParams(null | array | ServerRequestInterface $contents = null): Collection | |
| 159 | 159 |      { | 
| 160 | 160 |          if (is_array($contents)) { | 
| 161 | 161 | return Collection::wrap($contents); | 
| @@ -61,11 +61,11 @@ discard block | ||
| 61 | 61 | $urlPath = parse_url($url, PHP_URL_PATH); | 
| 62 | 62 | $urlQuery = parse_url($url, PHP_URL_QUERY); | 
| 63 | 63 | |
| 64 | - return get_wechat_method($payload)."\n" | |
| 65 | - .$urlPath.(empty($urlQuery) ? '' : '?'.$urlQuery)."\n" | |
| 66 | - .$timestamp."\n" | |
| 67 | - .$random."\n" | |
| 68 | - .get_wechat_body($payload)."\n"; | |
| 64 | + return get_wechat_method($payload) . "\n" | |
| 65 | + .$urlPath . (empty($urlQuery) ? '' : '?' . $urlQuery) . "\n" | |
| 66 | + .$timestamp . "\n" | |
| 67 | + .$random . "\n" | |
| 68 | + .get_wechat_body($payload) . "\n"; | |
| 69 | 69 | } | 
| 70 | 70 | |
| 71 | 71 | /** | 
| @@ -94,6 +94,6 @@ discard block | ||
| 94 | 94 | get_wechat_sign($config, $contents), | 
| 95 | 95 | ); | 
| 96 | 96 | |
| 97 | - return 'WECHATPAY2-SHA256-RSA2048 '.$auth; | |
| 97 | + return 'WECHATPAY2-SHA256-RSA2048 ' . $auth; | |
| 98 | 98 | } | 
| 99 | 99 | } | 
| @@ -74,7 +74,7 @@ discard block | ||
| 74 | 74 | 'prepayid' => $prepayId, | 
| 75 | 75 | 'package' => 'Sign=WXPay', | 
| 76 | 76 | 'noncestr' => Str::random(32), | 
| 77 | - 'timestamp' => time().'', | |
| 77 | + 'timestamp' => time() . '', | |
| 78 | 78 | ]); | 
| 79 | 79 | |
| 80 | 80 |          $invokeConfig->set('sign', $this->getSign($invokeConfig, $config)); | 
| @@ -87,10 +87,10 @@ discard block | ||
| 87 | 87 | */ | 
| 88 | 88 | protected function getSign(Collection $invokeConfig, array $config): string | 
| 89 | 89 |      { | 
| 90 | -        $contents = $invokeConfig->get('appid', '')."\n" | |
| 91 | -            .$invokeConfig->get('timestamp', '')."\n" | |
| 92 | -            .$invokeConfig->get('noncestr', '')."\n" | |
| 93 | -            .$invokeConfig->get('prepayid', '')."\n"; | |
| 90 | +        $contents = $invokeConfig->get('appid', '') . "\n" | |
| 91 | +            .$invokeConfig->get('timestamp', '') . "\n" | |
| 92 | +            .$invokeConfig->get('noncestr', '') . "\n" | |
| 93 | +            .$invokeConfig->get('prepayid', '') . "\n"; | |
| 94 | 94 | |
| 95 | 95 | return get_wechat_sign($config, $contents); | 
| 96 | 96 | } | 
| @@ -70,9 +70,9 @@ discard block | ||
| 70 | 70 |      { | 
| 71 | 71 | $invokeConfig = new Config([ | 
| 72 | 72 | 'appId' => $this->getAppId($payload, $config), | 
| 73 | - 'timeStamp' => time().'', | |
| 73 | + 'timeStamp' => time() . '', | |
| 74 | 74 | 'nonceStr' => Str::random(32), | 
| 75 | - 'package' => 'prepay_id='.$prepayId, | |
| 75 | + 'package' => 'prepay_id=' . $prepayId, | |
| 76 | 76 | 'signType' => 'RSA', | 
| 77 | 77 | ]); | 
| 78 | 78 | |
| @@ -86,10 +86,10 @@ discard block | ||
| 86 | 86 | */ | 
| 87 | 87 | protected function getSign(Collection $invokeConfig, array $config): string | 
| 88 | 88 |      { | 
| 89 | -        $contents = $invokeConfig->get('appId', '')."\n" | |
| 90 | -            .$invokeConfig->get('timeStamp', '')."\n" | |
| 91 | -            .$invokeConfig->get('nonceStr', '')."\n" | |
| 92 | -            .$invokeConfig->get('package', '')."\n"; | |
| 89 | +        $contents = $invokeConfig->get('appId', '') . "\n" | |
| 90 | +            .$invokeConfig->get('timeStamp', '') . "\n" | |
| 91 | +            .$invokeConfig->get('nonceStr', '') . "\n" | |
| 92 | +            .$invokeConfig->get('package', '') . "\n"; | |
| 93 | 93 | |
| 94 | 94 | return get_wechat_sign($config, $contents); | 
| 95 | 95 | } | 
| @@ -71,9 +71,9 @@ discard block | ||
| 71 | 71 |      { | 
| 72 | 72 | $invokeConfig = new Config([ | 
| 73 | 73 | 'appId' => $this->getAppId($payload, $config, $params), | 
| 74 | - 'timeStamp' => time().'', | |
| 74 | + 'timeStamp' => time() . '', | |
| 75 | 75 | 'nonceStr' => Str::random(32), | 
| 76 | - 'package' => 'prepay_id='.$prepayId, | |
| 76 | + 'package' => 'prepay_id=' . $prepayId, | |
| 77 | 77 | 'signType' => 'RSA', | 
| 78 | 78 | ]); | 
| 79 | 79 | |
| @@ -87,10 +87,10 @@ discard block | ||
| 87 | 87 | */ | 
| 88 | 88 | protected function getSign(Collection $invokeConfig, array $config): string | 
| 89 | 89 |      { | 
| 90 | -        $contents = $invokeConfig->get('appId', '')."\n" | |
| 91 | -            .$invokeConfig->get('timeStamp', '')."\n" | |
| 92 | -            .$invokeConfig->get('nonceStr', '')."\n" | |
| 93 | -            .$invokeConfig->get('package', '')."\n"; | |
| 90 | +        $contents = $invokeConfig->get('appId', '') . "\n" | |
| 91 | +            .$invokeConfig->get('timeStamp', '') . "\n" | |
| 92 | +            .$invokeConfig->get('nonceStr', '') . "\n" | |
| 93 | +            .$invokeConfig->get('package', '') . "\n"; | |
| 94 | 94 | |
| 95 | 95 | return get_wechat_sign($config, $contents); | 
| 96 | 96 | } | 
| @@ -98,7 +98,7 @@ discard block | ||
| 98 | 98 | protected function getAppId(?Collection $payload, array $config, array $params): string | 
| 99 | 99 |      { | 
| 100 | 100 |          if (Pay::MODE_SERVICE === ($config['mode'] ?? Pay::MODE_NORMAL)) { | 
| 101 | -            return $payload?->get('_invoke_appid') ?? $config['sub_'.get_wechat_type_key($params)] ?? ''; | |
| 101 | +            return $payload?->get('_invoke_appid') ?? $config['sub_' . get_wechat_type_key($params)] ?? ''; | |
| 102 | 102 | } | 
| 103 | 103 | |
| 104 | 104 |          return $payload?->get('_invoke_appid') ?? $config[get_wechat_type_key($params)] ?? ''; | 
| @@ -35,7 +35,7 @@ discard block | ||
| 35 | 35 | |
| 36 | 36 | protected function buildRedirect(string $endpoint, Collection $payload): Response | 
| 37 | 37 |      { | 
| 38 | - $url = $endpoint.(!str_contains($endpoint, '?') ? '?' : '&').$payload->query(); | |
| 38 | + $url = $endpoint . (!str_contains($endpoint, '?') ? '?' : '&') . $payload->query(); | |
| 39 | 39 | |
| 40 | 40 | $content = sprintf( | 
| 41 | 41 | '<!DOCTYPE html> | 
| @@ -58,10 +58,10 @@ discard block | ||
| 58 | 58 | |
| 59 | 59 | protected function buildHtml(string $endpoint, Collection $payload): Response | 
| 60 | 60 |      { | 
| 61 | - $sHtml = "<form id='alipay_submit' name='alipay_submit' action='".$endpoint."' method='POST'>"; | |
| 61 | + $sHtml = "<form id='alipay_submit' name='alipay_submit' action='" . $endpoint . "' method='POST'>"; | |
| 62 | 62 |          foreach ($payload->all() as $key => $val) { | 
| 63 | 63 |              $val = str_replace("'", ''', $val); | 
| 64 | - $sHtml .= "<input type='hidden' name='".$key."' value='".$val."'/>"; | |
| 64 | + $sHtml .= "<input type='hidden' name='" . $key . "' value='" . $val . "'/>"; | |
| 65 | 65 | } | 
| 66 | 66 | $sHtml .= "<input type='submit' value='ok' style='display:none;'></form>"; | 
| 67 | 67 | $sHtml .= "<script>document.forms['alipay_submit'].submit();</script>"; | 
| @@ -71,9 +71,9 @@ discard block | ||
| 71 | 71 |      { | 
| 72 | 72 | $invokeConfig = new Config([ | 
| 73 | 73 | 'appId' => $this->getAppId($payload, $config, $params), | 
| 74 | - 'timeStamp' => time().'', | |
| 74 | + 'timeStamp' => time() . '', | |
| 75 | 75 | 'nonceStr' => Str::random(32), | 
| 76 | - 'package' => 'prepay_id='.$prepayId, | |
| 76 | + 'package' => 'prepay_id=' . $prepayId, | |
| 77 | 77 | 'signType' => 'RSA', | 
| 78 | 78 | ]); | 
| 79 | 79 | |
| @@ -87,10 +87,10 @@ discard block | ||
| 87 | 87 | */ | 
| 88 | 88 | protected function getSign(Collection $invokeConfig, array $config): string | 
| 89 | 89 |      { | 
| 90 | -        $contents = $invokeConfig->get('appId', '')."\n" | |
| 91 | -            .$invokeConfig->get('timeStamp', '')."\n" | |
| 92 | -            .$invokeConfig->get('nonceStr', '')."\n" | |
| 93 | -            .$invokeConfig->get('package', '')."\n"; | |
| 90 | +        $contents = $invokeConfig->get('appId', '') . "\n" | |
| 91 | +            .$invokeConfig->get('timeStamp', '') . "\n" | |
| 92 | +            .$invokeConfig->get('nonceStr', '') . "\n" | |
| 93 | +            .$invokeConfig->get('package', '') . "\n"; | |
| 94 | 94 | |
| 95 | 95 | return get_wechat_sign($config, $contents); | 
| 96 | 96 | } | 
| @@ -98,7 +98,7 @@ discard block | ||
| 98 | 98 | protected function getAppId(?Collection $payload, array $config, array $params): string | 
| 99 | 99 |      { | 
| 100 | 100 |          if (Pay::MODE_SERVICE === ($config['mode'] ?? Pay::MODE_NORMAL)) { | 
| 101 | -            return $payload?->get('_invoke_appid') ?? $config['sub_'.get_wechat_type_key($params)] ?? ''; | |
| 101 | +            return $payload?->get('_invoke_appid') ?? $config['sub_' . get_wechat_type_key($params)] ?? ''; | |
| 102 | 102 | } | 
| 103 | 103 | |
| 104 | 104 |          return $payload?->get('_invoke_appid') ?? $config[get_wechat_type_key($params)] ?? ''; | 
| @@ -70,9 +70,9 @@ discard block | ||
| 70 | 70 |      { | 
| 71 | 71 | $invokeConfig = new Config([ | 
| 72 | 72 | 'appId' => $this->getAppId($payload, $config), | 
| 73 | - 'timeStamp' => time().'', | |
| 73 | + 'timeStamp' => time() . '', | |
| 74 | 74 | 'nonceStr' => Str::random(32), | 
| 75 | - 'package' => 'prepay_id='.$prepayId, | |
| 75 | + 'package' => 'prepay_id=' . $prepayId, | |
| 76 | 76 | 'signType' => 'RSA', | 
| 77 | 77 | ]); | 
| 78 | 78 | |
| @@ -86,10 +86,10 @@ discard block | ||
| 86 | 86 | */ | 
| 87 | 87 | protected function getSign(Collection $invokeConfig, array $config): string | 
| 88 | 88 |      { | 
| 89 | -        $contents = $invokeConfig->get('appId', '')."\n" | |
| 90 | -            .$invokeConfig->get('timeStamp', '')."\n" | |
| 91 | -            .$invokeConfig->get('nonceStr', '')."\n" | |
| 92 | -            .$invokeConfig->get('package', '')."\n"; | |
| 89 | +        $contents = $invokeConfig->get('appId', '') . "\n" | |
| 90 | +            .$invokeConfig->get('timeStamp', '') . "\n" | |
| 91 | +            .$invokeConfig->get('nonceStr', '') . "\n" | |
| 92 | +            .$invokeConfig->get('package', '') . "\n"; | |
| 93 | 93 | |
| 94 | 94 | return get_wechat_sign($config, $contents); | 
| 95 | 95 | } |