Skip to content

Commit df334dd

Browse files
authored
fix: 微信关闭订单报解包错误的问题 (#1001)
1 parent 1cbe8d8 commit df334dd

File tree

11 files changed

+69
-39
lines changed

11 files changed

+69
-39
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
### fixed
44

5-
- fix: 微信关闭订单报解包错误的问题(#1000)
5+
- fix: 微信关闭订单报解包错误的问题(#1000, #1001)
66

77
## v3.7.5
88

src/Plugin/Wechat/V3/Pay/App/ClosePlugin.php

+10-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Closure;
88
use Yansongda\Artful\Contract\PluginInterface;
9+
use Yansongda\Artful\Direction\OriginResponseDirection;
910
use Yansongda\Artful\Exception\ContainerException;
1011
use Yansongda\Artful\Exception\InvalidParamsException;
1112
use Yansongda\Artful\Exception\ServiceNotFoundException;
@@ -45,14 +46,15 @@ public function assembly(Rocket $rocket, Closure $next): Rocket
4546
$data = $this->service($payload, $config);
4647
}
4748

48-
$rocket->setPayload(array_merge(
49-
[
50-
'_method' => 'POST',
51-
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
52-
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
53-
],
54-
$data ?? $this->normal($config)
55-
));
49+
$rocket->setDirection(OriginResponseDirection::class)
50+
->setPayload(array_merge(
51+
[
52+
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
53+
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
54+
'_method' => 'POST',
55+
],
56+
$data ?? $this->normal($config)
57+
));
5658

5759
Logger::info('[Wechat][V3][Pay][App][ClosePlugin] 插件装载完毕', ['rocket' => $rocket]);
5860

src/Plugin/Wechat/V3/Pay/Combine/ClosePlugin.php

+9-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Closure;
88
use Yansongda\Artful\Contract\PluginInterface;
9+
use Yansongda\Artful\Direction\OriginResponseDirection;
910
use Yansongda\Artful\Exception\ContainerException;
1011
use Yansongda\Artful\Exception\InvalidParamsException;
1112
use Yansongda\Artful\Exception\ServiceNotFoundException;
@@ -40,12 +41,14 @@ public function assembly(Rocket $rocket, Closure $next): Rocket
4041
throw new InvalidParamsException(Exception::PARAMS_NECESSARY_PARAMS_MISSING, '参数异常: 合单关单,参数缺少 `combine_out_trade_no`');
4142
}
4243

43-
$rocket->mergePayload([
44-
'_method' => 'POST',
45-
'_url' => 'v3/combine-transactions/out-trade-no/'.$combineOutTradeNo.'/close',
46-
'_service_url' => 'v3/combine-transactions/out-trade-no/'.$combineOutTradeNo.'/close',
47-
'combine_appid' => $payload->get('combine_appid', $config[get_wechat_type_key($params)] ?? ''),
48-
])->exceptPayload('combine_out_trade_no');
44+
$rocket->setDirection(OriginResponseDirection::class)
45+
->mergePayload([
46+
'_method' => 'POST',
47+
'_url' => 'v3/combine-transactions/out-trade-no/'.$combineOutTradeNo.'/close',
48+
'_service_url' => 'v3/combine-transactions/out-trade-no/'.$combineOutTradeNo.'/close',
49+
'combine_appid' => $payload->get('combine_appid', $config[get_wechat_type_key($params)] ?? ''),
50+
])
51+
->exceptPayload('combine_out_trade_no');
4952

5053
Logger::info('[Wechat][Pay][Combine][ClosePlugin] 插件装载完毕', ['rocket' => $rocket]);
5154

src/Plugin/Wechat/V3/Pay/H5/ClosePlugin.php

+10-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Closure;
88
use Yansongda\Artful\Contract\PluginInterface;
9+
use Yansongda\Artful\Direction\OriginResponseDirection;
910
use Yansongda\Artful\Exception\ContainerException;
1011
use Yansongda\Artful\Exception\InvalidParamsException;
1112
use Yansongda\Artful\Exception\ServiceNotFoundException;
@@ -45,14 +46,15 @@ public function assembly(Rocket $rocket, Closure $next): Rocket
4546
$data = $this->service($payload, $config);
4647
}
4748

48-
$rocket->setPayload(array_merge(
49-
[
50-
'_method' => 'POST',
51-
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
52-
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
53-
],
54-
$data ?? $this->normal($config)
55-
));
49+
$rocket->setDirection(OriginResponseDirection::class)
50+
->setPayload(array_merge(
51+
[
52+
'_method' => 'POST',
53+
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
54+
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
55+
],
56+
$data ?? $this->normal($config)
57+
));
5658

5759
Logger::info('[Wechat][V3][Pay][H5][ClosePlugin] 插件装载完毕', ['rocket' => $rocket]);
5860

src/Plugin/Wechat/V3/Pay/Mini/ClosePlugin.php

+10-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Closure;
88
use Yansongda\Artful\Contract\PluginInterface;
9+
use Yansongda\Artful\Direction\OriginResponseDirection;
910
use Yansongda\Artful\Exception\ContainerException;
1011
use Yansongda\Artful\Exception\InvalidParamsException;
1112
use Yansongda\Artful\Exception\ServiceNotFoundException;
@@ -45,14 +46,15 @@ public function assembly(Rocket $rocket, Closure $next): Rocket
4546
$data = $this->service($payload, $config);
4647
}
4748

48-
$rocket->setPayload(array_merge(
49-
[
50-
'_method' => 'POST',
51-
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
52-
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
53-
],
54-
$data ?? $this->normal($config)
55-
));
49+
$rocket->setDirection(OriginResponseDirection::class)
50+
->setPayload(array_merge(
51+
[
52+
'_method' => 'POST',
53+
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
54+
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
55+
],
56+
$data ?? $this->normal($config)
57+
));
5658

5759
Logger::info('[Wechat][Pay][Mini][ClosePlugin] 插件装载完毕', ['rocket' => $rocket]);
5860

src/Plugin/Wechat/V3/Pay/Native/ClosePlugin.php

+10-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Closure;
88
use Yansongda\Artful\Contract\PluginInterface;
9+
use Yansongda\Artful\Direction\OriginResponseDirection;
910
use Yansongda\Artful\Exception\ContainerException;
1011
use Yansongda\Artful\Exception\InvalidParamsException;
1112
use Yansongda\Artful\Exception\ServiceNotFoundException;
@@ -45,14 +46,15 @@ public function assembly(Rocket $rocket, Closure $next): Rocket
4546
$data = $this->service($payload, $config);
4647
}
4748

48-
$rocket->setPayload(array_merge(
49-
[
50-
'_method' => 'POST',
51-
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
52-
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
53-
],
54-
$data ?? $this->normal($config)
55-
));
49+
$rocket->setDirection(OriginResponseDirection::class)
50+
->setPayload(array_merge(
51+
[
52+
'_method' => 'POST',
53+
'_url' => 'v3/pay/transactions/out-trade-no/'.$outTradeNo.'/close',
54+
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/'.$outTradeNo.'/close',
55+
],
56+
$data ?? $this->normal($config)
57+
));
5658

5759
Logger::info('[Wechat][Pay][Native][ClosePlugin] 插件装载完毕', ['rocket' => $rocket]);
5860

tests/Plugin/Wechat/V3/Pay/App/ClosePluginTest.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Yansongda\Pay\Tests\Plugin\Wechat\V3\Pay\App;
44

5+
use Yansongda\Artful\Direction\OriginResponseDirection;
56
use Yansongda\Pay\Exception\Exception;
67
use Yansongda\Artful\Exception\InvalidParamsException;
78
use Yansongda\Pay\Plugin\Wechat\V3\Pay\App\ClosePlugin;
@@ -46,6 +47,7 @@ public function testNormal()
4647
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/111/close',
4748
'mchid' => '1600314069',
4849
], $result->getPayload()->all());
50+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
4951
}
5052

5153
public function testServiceParams()
@@ -65,6 +67,7 @@ public function testServiceParams()
6567
'sp_mchid' => '1600314069',
6668
'sub_mchid' => '333',
6769
], $result->getPayload()->all());
70+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
6871
}
6972

7073
public function testService()
@@ -83,5 +86,6 @@ public function testService()
8386
'sp_mchid' => '1600314069',
8487
'sub_mchid' => '1600314070',
8588
], $result->getPayload()->all());
89+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
8690
}
8791
}

tests/Plugin/Wechat/V3/Pay/Combine/ClosePluginTest.php

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Yansongda\Pay\Tests\Plugin\Wechat\V3\Pay\Combine;
44

5+
use Yansongda\Artful\Direction\OriginResponseDirection;
56
use Yansongda\Pay\Exception\Exception;
67
use Yansongda\Artful\Exception\InvalidParamsException;
78
use Yansongda\Pay\Plugin\Wechat\V3\Pay\Combine\ClosePlugin;
@@ -49,6 +50,7 @@ public function testNormalParams()
4950
'combine_appid' => '333',
5051
'name' => 'yansongda',
5152
], $result->getPayload()->all());
53+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
5254
}
5355

5456
public function testNormal()
@@ -66,5 +68,6 @@ public function testNormal()
6668
'_service_url' => 'v3/combine-transactions/out-trade-no/111/close',
6769
'combine_appid' => 'wx55955316af4ef13',
6870
], $result->getPayload()->all());
71+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
6972
}
7073
}

tests/Plugin/Wechat/V3/Pay/H5/ClosePluginTest.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Yansongda\Pay\Tests\Plugin\Wechat\V3\Pay\H5;
44

5+
use Yansongda\Artful\Direction\OriginResponseDirection;
56
use Yansongda\Pay\Exception\Exception;
67
use Yansongda\Artful\Exception\InvalidParamsException;
78
use Yansongda\Pay\Plugin\Wechat\V3\Pay\H5\ClosePlugin;
@@ -46,6 +47,7 @@ public function testNormal()
4647
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/111/close',
4748
'mchid' => '1600314069',
4849
], $result->getPayload()->all());
50+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
4951
}
5052

5153
public function testServiceParams()
@@ -65,6 +67,7 @@ public function testServiceParams()
6567
'sp_mchid' => '1600314069',
6668
'sub_mchid' => '333',
6769
], $result->getPayload()->all());
70+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
6871
}
6972

7073
public function testService()
@@ -83,5 +86,6 @@ public function testService()
8386
'sp_mchid' => '1600314069',
8487
'sub_mchid' => '1600314070',
8588
], $result->getPayload()->all());
89+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
8690
}
8791
}

tests/Plugin/Wechat/V3/Pay/Mini/ClosePluginTest.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Yansongda\Pay\Tests\Plugin\Wechat\V3\Pay\Mini;
44

5+
use Yansongda\Artful\Direction\OriginResponseDirection;
56
use Yansongda\Pay\Exception\Exception;
67
use Yansongda\Artful\Exception\InvalidParamsException;
78
use Yansongda\Pay\Plugin\Wechat\V3\Pay\Mini\ClosePlugin;
@@ -46,6 +47,7 @@ public function testNormal()
4647
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/111/close',
4748
'mchid' => '1600314069',
4849
], $result->getPayload()->all());
50+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
4951
}
5052

5153
public function testServiceParams()
@@ -65,6 +67,7 @@ public function testServiceParams()
6567
'sp_mchid' => '1600314069',
6668
'sub_mchid' => '333',
6769
], $result->getPayload()->all());
70+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
6871
}
6972

7073
public function testService()
@@ -83,5 +86,6 @@ public function testService()
8386
'sp_mchid' => '1600314069',
8487
'sub_mchid' => '1600314070',
8588
], $result->getPayload()->all());
89+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
8690
}
8791
}

tests/Plugin/Wechat/V3/Pay/Native/ClosePluginTest.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Yansongda\Pay\Tests\Plugin\Wechat\V3\Pay\Native;
44

5+
use Yansongda\Artful\Direction\OriginResponseDirection;
56
use Yansongda\Pay\Exception\Exception;
67
use Yansongda\Artful\Exception\InvalidParamsException;
78
use Yansongda\Pay\Plugin\Wechat\V3\Pay\Native\ClosePlugin;
@@ -46,6 +47,7 @@ public function testNormal()
4647
'_service_url' => 'v3/pay/partner/transactions/out-trade-no/111/close',
4748
'mchid' => '1600314069',
4849
], $result->getPayload()->all());
50+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
4951
}
5052

5153
public function testServiceParams()
@@ -65,6 +67,7 @@ public function testServiceParams()
6567
'sp_mchid' => '1600314069',
6668
'sub_mchid' => '333',
6769
], $result->getPayload()->all());
70+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
6871
}
6972

7073
public function testService()
@@ -83,5 +86,6 @@ public function testService()
8386
'sp_mchid' => '1600314069',
8487
'sub_mchid' => '1600314070',
8588
], $result->getPayload()->all());
89+
self::assertEquals(OriginResponseDirection::class, $result->getDirection());
8690
}
8791
}

0 commit comments

Comments
 (0)