|
5 | 5 | use Omnipay\Alipay\AopF2FGateway; |
6 | 6 | use Omnipay\Alipay\Common\Signer; |
7 | 7 | use Omnipay\Alipay\Responses\AopCompletePurchaseResponse; |
| 8 | +use Omnipay\Alipay\Responses\AopCompleteRefundResponse; |
8 | 9 | use Omnipay\Alipay\Responses\DataServiceBillDownloadUrlQueryResponse; |
9 | 10 | use Omnipay\Alipay\Responses\AopTradePayResponse; |
10 | 11 | use Omnipay\Alipay\Responses\AopTradePreCreateResponse; |
@@ -235,4 +236,42 @@ public function testCompletePurchase() |
235 | 236 | $this->assertTrue($response->isPaid()); |
236 | 237 | $this->assertEquals('2015061121001004400068549373', $response->getData()['trade_no']); |
237 | 238 | } |
| 239 | + |
| 240 | + public function testCompleteRefund() |
| 241 | + { |
| 242 | + $testPrivateKey = ALIPAY_ASSET_DIR . '/dist/common/rsa_private_key.pem'; |
| 243 | + $testPublicKey = ALIPAY_ASSET_DIR . '/dist/common/rsa_public_key.pem'; |
| 244 | + |
| 245 | + $this->gateway = new AopF2FGateway($this->getHttpClient(), $this->getHttpRequest()); |
| 246 | + $this->gateway->setAppId($this->appId); |
| 247 | + $this->gateway->setPrivateKey($this->appPrivateKey); |
| 248 | + $this->gateway->setNotifyUrl('https://www.example.com/notify'); |
| 249 | + |
| 250 | + $str = 'gmt_payment=2015-06-11 22:33:59¬ify_id=42af7baacd1d3746cf7b56752b91edcj34&[email protected]¬ify_type=trade_status_sync&sign=kPbQIjX+xQc8F0/A6/AocELIjhhZnGbcBN6G4MM/HmfWL4ZiHM6fWl5NQhzXJusaklZ1LFuMo+lHQUELAYeugH8LYFvxnNajOvZhuxNFbN2LhF0l/KL8ANtj8oyPM4NN7Qft2kWJTDJUpQOzCzNnV9hDxh5AaT9FPqRS6ZKxnzM=&trade_no=2015061121001004400068549373&out_trade_no=21repl2ac2eOutTradeNo322&gmt_create=2015-06-11 22:33:46&seller_id=2088211521646673¬ify_time=2015-06-11 22:34:03&subject=FACE_TO_FACE_PAYMENT_PRECREATE中文&trade_status=TRADE_SUCCESS&sign_type=RSA'; |
| 251 | + |
| 252 | + parse_str($str, $data); |
| 253 | + |
| 254 | + $signer = new Signer($data); |
| 255 | + $signer->setSort(true); |
| 256 | + $signer->setEncodePolicy(Signer::ENCODE_POLICY_QUERY); |
| 257 | + $data['sign'] = $signer->signWithRSA($testPrivateKey); |
| 258 | + $data['sign_type'] = 'RSA'; |
| 259 | + |
| 260 | + $this->gateway->setAlipayPublicKey($testPublicKey); |
| 261 | + |
| 262 | + /** |
| 263 | + * @var AopCompleteRefundResponse $response |
| 264 | + */ |
| 265 | + $response = $this->gateway->completeRefund(['params' => $data])->send(); |
| 266 | + |
| 267 | + $this->assertEquals( |
| 268 | + '{"gmt_payment":"2015-06-11 22:33:59","notify_id":"42af7baacd1d3746cf7b56752b91edcj34","seller_email":"[email protected]","notify_type":"trade_status_sync","sign":"T4JCUXoO5sK\/7UjupKEfsSQnjDnw\/1aSJnC6s53SYJyqdjFl+1Lt8dWdNuuXl5yX39leQsYzmk2CDwZx6F\/YIQWCo1LHZME3DYMqH\/F5wT5uiSUk2KYsYbLluW9pi7YHtBXRWKB6jtnn73DWWbC2sN3tDky9KySPizL5jQ1Cd0I=","trade_no":"2015061121001004400068549373","out_trade_no":"21repl2ac2eOutTradeNo322","gmt_create":"2015-06-11 22:33:46","seller_id":"2088211521646673","notify_time":"2015-06-11 22:34:03","subject":"FACE_TO_FACE_PAYMENT_PRECREATE\u4e2d\u6587","trade_status":"TRADE_SUCCESS","sign_type":"RSA"}', |
| 269 | + json_encode($response->data()) |
| 270 | + ); |
| 271 | + |
| 272 | + $this->assertEquals('21repl2ac2eOutTradeNo322', $response->data('out_trade_no')); |
| 273 | + $this->assertTrue($response->isSuccessful()); |
| 274 | + $this->assertTrue($response->isRefunded()); |
| 275 | + $this->assertEquals('2015061121001004400068549373', $response->getData()['trade_no']); |
| 276 | + } |
238 | 277 | } |
0 commit comments