Skip to content

Commit 813c01e

Browse files
authored
fix: 微信分账参数可能丢失的问题 (#1108)
1 parent b8da0aa commit 813c01e

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## v3.7.18
2+
3+
### fixed
4+
5+
- fix: 微信分账参数可能丢失的问题 (#1108)
6+
17
## v3.7.17
28

39
### fixed

src/Plugin/Wechat/V3/Extend/ProfitSharing/CreatePlugin.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ protected function normal(Collection $payload, array $params, array $config): ar
8383
return $data;
8484
}
8585

86-
return array_merge($data, $this->encryptSensitiveData($params, $config, $payload));
86+
return array_merge($data, $this->encryptSensitiveData($params, $payload));
8787
}
8888

8989
/**
@@ -110,7 +110,7 @@ protected function service(Collection $payload, array $params, array $config): a
110110
return $data;
111111
}
112112

113-
return array_merge($data, $this->encryptSensitiveData($params, $config, $payload));
113+
return array_merge($data, $this->encryptSensitiveData($params, $payload));
114114
}
115115

116116
/**
@@ -120,14 +120,15 @@ protected function service(Collection $payload, array $params, array $config): a
120120
* @throws InvalidParamsException
121121
* @throws ServiceNotFoundException
122122
*/
123-
protected function encryptSensitiveData(array $params, array $config, Collection $payload): array
123+
protected function encryptSensitiveData(array $params, Collection $payload): array
124124
{
125+
$data['receivers'] = $payload->get('receivers', []);
125126
$data['_serial_no'] = get_wechat_serial_no($params);
126127

127128
$config = get_provider_config('wechat', $params);
128129
$publicKey = get_wechat_public_key($config, $data['_serial_no']);
129130

130-
foreach ($payload->get('receivers', []) as $key => $list) {
131+
foreach ($data['receivers'] as $key => $list) {
131132
$data['receivers'][$key]['name'] = encrypt_wechat_contents($list['name'], $publicKey);
132133
}
133134

tests/Plugin/Wechat/V3/Extend/ProfitSharing/CreatePluginTest.php

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,16 @@ public function testEmptyPayload()
3939
public function testNormalWithoutName()
4040
{
4141
$rocket = new Rocket();
42-
$rocket->setPayload(new Collection( [
42+
$rocket->setPayload(new Collection([
4343
"test" => "yansongda",
44+
'receivers' => [
45+
[
46+
'type' => 'PERSONAL_OPENID',
47+
'amount' => 100,
48+
'account' => 'openid1234567890',
49+
'description' => '分账测试',
50+
],
51+
],
4452
]));
4553

4654
$result = $this->plugin->assembly($rocket, function ($rocket) { return $rocket; });
@@ -51,6 +59,14 @@ public function testNormalWithoutName()
5159
'_service_url' => 'v3/profitsharing/orders',
5260
'test' => 'yansongda',
5361
'appid' => 'wx55955316af4ef13',
62+
'receivers' => [
63+
[
64+
'type' => 'PERSONAL_OPENID',
65+
'amount' => 100,
66+
'account' => 'openid1234567890',
67+
'description' => '分账测试',
68+
],
69+
],
5470
], $result->getPayload()->all());
5571
}
5672

@@ -60,6 +76,10 @@ public function testNormalWithName()
6076
$rocket->setPayload(new Collection([
6177
'receivers' => [
6278
[
79+
'type' => 'PERSONAL_OPENID',
80+
'amount' => 100,
81+
'account' => 'openid1234567890',
82+
'description' => '分账测试',
6383
'name' => 'yansongda',
6484
],
6585
],
@@ -74,6 +94,10 @@ public function testNormalWithName()
7494
self::assertEquals('v3/profitsharing/orders', $payload['_url']);
7595
self::assertEquals('v3/profitsharing/orders', $payload['_service_url']);
7696
self::assertEquals('wx55955316af4ef13', $payload['appid']);
97+
self::assertEquals('PERSONAL_OPENID', $payload['receivers'][0]['type']);
98+
self::assertEquals(100, $payload['receivers'][0]['amount']);
99+
self::assertEquals('openid1234567890', $payload['receivers'][0]['account']);
100+
self::assertEquals('分账测试', $payload['receivers'][0]['description']);
77101
self::assertArrayHasKey('_serial_no', $payload);
78102
self::assertArrayHasKey('name', $payload['receivers'][0]);
79103
self::assertNotEquals('yansongda', $payload['receivers'][0]['name']);
@@ -124,6 +148,10 @@ public function testServiceWithName()
124148
$rocket->setParams(['_config' => 'service_provider'])->setPayload(new Collection([
125149
'receivers' => [
126150
[
151+
'type' => 'PERSONAL_OPENID',
152+
'amount' => 100,
153+
'account' => 'openid1234567890',
154+
'description' => '分账测试',
127155
'name' => 'yansongda',
128156
],
129157
],
@@ -138,6 +166,10 @@ public function testServiceWithName()
138166
self::assertEquals('v3/profitsharing/orders', $payload['_url']);
139167
self::assertEquals('v3/profitsharing/orders', $payload['_service_url']);
140168
self::assertEquals('wx55955316af4ef13', $payload['appid']);
169+
self::assertEquals('PERSONAL_OPENID', $payload['receivers'][0]['type']);
170+
self::assertEquals(100, $payload['receivers'][0]['amount']);
171+
self::assertEquals('openid1234567890', $payload['receivers'][0]['account']);
172+
self::assertEquals('分账测试', $payload['receivers'][0]['description']);
141173
self::assertArrayHasKey('_serial_no', $payload);
142174
self::assertArrayHasKey('name', $payload['receivers'][0]);
143175
self::assertNotEquals('yansongda', $payload['receivers'][0]['name']);

0 commit comments

Comments
 (0)