VerifySignaturePlugin.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. declare(strict_types=1);
  3. namespace Yansongda\Pay\Plugin\Unipay\Qra;
  4. use Closure;
  5. use Yansongda\Artful\Contract\PluginInterface;
  6. use Yansongda\Artful\Exception\ContainerException;
  7. use Yansongda\Artful\Exception\InvalidConfigException;
  8. use Yansongda\Artful\Exception\ServiceNotFoundException;
  9. use Yansongda\Artful\Logger;
  10. use Yansongda\Artful\Rocket;
  11. use Yansongda\Pay\Exception\InvalidSignException;
  12. use function Yansongda\Artful\should_do_http_request;
  13. use function Yansongda\Pay\get_provider_config;
  14. use function Yansongda\Pay\verify_unipay_sign_qra;
  15. class VerifySignaturePlugin implements PluginInterface
  16. {
  17. /**
  18. * @throws ContainerException
  19. * @throws InvalidConfigException
  20. * @throws InvalidSignException
  21. * @throws ServiceNotFoundException
  22. */
  23. public function assembly(Rocket $rocket, Closure $next): Rocket
  24. {
  25. /* @var Rocket $rocket */
  26. $rocket = $next($rocket);
  27. Logger::debug('[Unipay][Qra][VerifySignaturePlugin] 插件开始装载', ['rocket' => $rocket]);
  28. $config = get_provider_config('unipay', $rocket->getParams());
  29. if (!should_do_http_request($rocket->getDirection())) {
  30. return $rocket;
  31. }
  32. verify_unipay_sign_qra($config, $rocket->getDestination()?->all() ?? []);
  33. Logger::info('[Unipay][Qra][VerifySignaturePlugin] 插件装载完毕', ['rocket' => $rocket]);
  34. return $rocket;
  35. }
  36. }