integer-net/callback-proxy

将回调请求分发到多个目标的代理。用于与多个(例如测试)系统共享支付集成。

dev-master 2018-11-15 08:48 UTC

This package is auto-updated.

Last update: 2024-09-15 22:13:22 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这是一个用于将第三方集成与多个环境(通常是测试系统)集成的服务。

它可以向多个系统分发回调,例如

proxy.example.com/paypal-dev/postBack

=>

dev1.example.com/paypal/postBack
dev2.example.com/paypal/postBack
dev3.example.com/paypal/postBack

返回第一个成功的响应。如果没有成功的响应(HTTP状态码200),则返回最后一个响应。

如果用于开发系统,第三方只需将代理对外部进行访问即可,而不是所有目标系统。

安装

  1. 通过Composer创建项目
    composer create-project integer-net/callback-proxy
    
  2. 设置以public为文档根的Web服务器。

配置

  1. config.php.sample复制到config.php

  2. 调整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)。有关更多信息,请参阅许可证文件