integer-net / callback-proxy
将回调请求分发到多个目标的代理。用于与多个(例如测试)系统共享支付集成。
Requires
- php: ^7.1.0
- ext-spl: *
- guzzlehttp/guzzle: ^6.3
- namshi/cuzzle: ^2.0
- psr/http-message: ^1.0
- roave/security-advisories: dev-master
- slim/slim: ^3.0
Requires (Dev)
- infection/infection: ^0.10.5
- jakub-onderka/php-parallel-lint: ^1.0
- maglnet/composer-require-checker: ^1.1
- pds/skeleton: ^1.0
- phan/phan: ^1.1
- phpmd/phpmd: ^2.6
- phpro/grumphp: ^0.14.2
- phpstan/phpstan: ^0.10.3
- phpunit/phpunit: ^7.4
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-15 22:13:22 UTC
README
这是一个用于将第三方集成与多个环境(通常是测试系统)集成的服务。
它可以向多个系统分发回调,例如
proxy.example.com/paypal-dev/postBack
=>
dev1.example.com/paypal/postBack
dev2.example.com/paypal/postBack
dev3.example.com/paypal/postBack
返回第一个成功的响应。如果没有成功的响应(HTTP状态码200),则返回最后一个响应。
如果用于开发系统,第三方只需将代理对外部进行访问即可,而不是所有目标系统。
安装
- 通过Composer创建项目
composer create-project integer-net/callback-proxy
- 设置以
public
为文档根的Web服务器。
配置
-
将
config.php.sample
复制到config.php
。 -
调整
proxy/targets
配置,例如'proxy' => [ 'targets' => [ 'paypal-dev' => [ 'https://dev1.example.com/paypal/', 'https://dev2.example.com/paypal/', ], ], ],
此示例将
/paypal-dev/*
路由到https://dev1.example.com/paypal/*
和https://dev2.example.com/paypal/*
。
高级配置
每个目标不仅可以配置为纯URI字符串,还可以配置为其他附加选项
[
'uri' => 'https://dev1.example.com/paypal/',
'basic-auth' => 'username:password',
]
- uri(必需)- 基础URI
- basic-auth - 形式为“用户名:密码”的HTTP基本身份验证
默认分发策略是将请求分发到所有目标,并返回第一个成功的(2xx)响应。
您可以在config.php
中选择不同的策略
'proxy' => [
'strategy' => \IntegerNet\CallbackProxy\DispatchStrategy\DispatchAllReturnFirstSuccess::class,
]
可用策略
\IntegerNet\CallbackProxy\DispatchStrategy\DispatchAllReturnFirstSuccess::class
- 默认策略,见上文\IntegerNet\CallbackProxy\DispatchStrategy\StopOnFirstSucces::class
- 返回第一个成功的(2xx)响应,停止分发更多目标
您可以通过实现\IntegerNet\CallbackProxy\DispatchStrategy
接口来实现自己的策略。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
composer test
运行单元测试、突变测试和静态分析
php -S localhost:9000 -t public
在本地端口9000上启动代理进行手动测试。需要有效的config.php
配置。作为通用目标URI,您可以使用https://httpbin.org/anything/
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现任何与安全相关的问题,请通过电子邮件fs@integer-net.de而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。