diff --git a/README_APIv2.md b/README_APIv2.md index aff5c15..3ec2f5a 100644 --- a/README_APIv2.md +++ b/README_APIv2.md @@ -64,6 +64,7 @@ $res = $instance 'desc' => '理赔', 'spbill_create_ip' => '192.168.0.1', ], + 'wxpay_sign_verify' => false //该接口没有返回sign字段,不需要验证返回签名 'security' => true, //请求需要双向证书 'debug' => true //开启调试模式 ]) diff --git a/src/ClientXmlTrait.php b/src/ClientXmlTrait.php index de02ef6..2d0ba1c 100644 --- a/src/ClientXmlTrait.php +++ b/src/ClientXmlTrait.php @@ -88,7 +88,10 @@ public static function transformResponse(string $secret = ''): callable { return static function (callable $handler) use ($secret): callable { return static function (RequestInterface $request, array $options = []) use ($secret, $handler): PromiseInterface { - return $handler($request, $options)->then(static function(ResponseInterface $response) use ($secret) { + $needVerify = (isset($options['wxpay_sign_verify']) && $options['wxpay_sign_verify'] == false) ? false : true; + return $handler($request, $options)->then(static function(ResponseInterface $response) use ($secret,$needVerify) { + if(!$needVerify) + return $response; $result = Transformer::toArray(static::body($response)); /** @var ?string $sign */ @@ -122,10 +125,10 @@ public static function xmlBased(array $config = []): Client /** @var HandlerStack $stack */ $stack = isset($config['handler']) && ($config['handler'] instanceof HandlerStack) ? (clone $config['handler']) : HandlerStack::create(); $stack->before('prepare_body', static::transformRequest($config['mchid'] ?? null, $config['secret'] ?? '', $config['merchant'] ?? []), 'transform_request'); - $stack->before('http_errors', static::transformResponse($config['secret'] ?? ''), 'transform_response'); + $stack->before('http_errors', static::transformResponse($config['secret'] ?? '') , 'transform_response'); $config['handler'] = $stack; - unset($config['mchid'], $config['serial'], $config['privateKey'], $config['certs'], $config['secret'], $config['merchant']); + unset($config['mchid'], $config['serial'], $config['privateKey'], $config['certs'], $config['secret'], $config['merchant'],$config['wxpay_sign_verify']); return new Client(static::withDefaults(['headers' => static::$headers], $config)); }