for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Yansongda\Pay\Plugin\Wechat\Ecommerce\Refund;
use Yansongda\Pay\Exception\Exception;
use Yansongda\Pay\Exception\InvalidParamsException;
use function Yansongda\Pay\get_wechat_config;
use Yansongda\Pay\Plugin\Wechat\GeneralPlugin;
use Yansongda\Pay\Rocket;
/**
* @see https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter7_6_5.shtml
*/
class QueryReturnAdvancePlugin extends GeneralPlugin
{
* @throws \Yansongda\Pay\Exception\InvalidParamsException
protected function getUri(Rocket $rocket): string
throw new InvalidParamsException(Exception::NOT_IN_SERVICE_MODE);
}
* @throws \Yansongda\Pay\Exception\ContainerException
* @throws \Yansongda\Pay\Exception\ServiceNotFoundException
protected function getPartnerUri(Rocket $rocket): string
$payload = $rocket->getPayload();
$config = get_wechat_config($rocket->getParams());
$subMchId = $payload->get('sub_mchid', $config['sub_mch_id'] ?? '');
if (is_null($payload->get('refund_id'))) {
throw new InvalidParamsException(Exception::MISSING_NECESSARY_PARAMS);
return 'v3/ecommerce/refunds/'.$payload->get('refund_id').'/return-advance?sub_mchid='.$subMchId;
protected function getMethod(): string
return 'GET';
protected function doSomething(Rocket $rocket): void
$rocket->setPayload(null);