digitsrl / php-wom-connector
PHP连接库,用于WOM平台,允许客户开发自定义工具(WOM源)和商家(WOM消费者)。
Requires
- php: >=7.0
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^6.5
- monolog/monolog: ^1.16
- phpseclib/phpseclib: ^2.0
- ramsey/uuid: ^3.9
README
设置
安装PHP WOM连接器只需一个Composer命令
composer require digitsrl/php-wom-connector:dev-master
这将自动安装连接器所需的所有包,并检查与您的设置的兼容性。
配置
查看/test/example_instrument.php
、/test/example_pos.php
和/test/example_check.php
文件,了解如何使用连接器的示例。
建议在使用连接器之前将默认时区设置为UTC。
date_default_timezone_set("UTC");
默认情况下,WOM连接器设置一个内部日志记录器,将信息性消息写入STDERR
,但您可以使用Initialize
方法(该方法接受一个处理程序或Monolog处理程序数组)自定义日志处理程序。
\WOM\Logger::Initialize(array( new \Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG) ));
WOM代金券可以在不同的域上生成,使用不同的(和自定义的)注册表安装。默认情况下,连接器选择标准注册表,它位于官方的wom.social
域。您可以使用以下配置行自定义此设置
\WOM\Config\Domain::SetDomain('dev.wom.social');
在开发您的新WOM平台集成时,在开发域dev.wom.social
上进行测试可能很有用(关于这一点请联系WOM开发团队)。测试脚本中使用的POS/Instrument键和ID可以在开发域上自由使用。
代金券生成
生成WOM的过程相当简单。您只需确保符合平台的要求,并注册为WOM "工具"。
第一步是导入连接器库,包括Composer生成的自动加载脚本。
require __DIR__ . '/vendor/autoload.php';
创建工具
要生成WOM,您需要实例化一个工具。为此,您需要与您的工具关联的Id和私钥。请注意,第二个参数包含密钥文件的路径(.pem
)。
$instrument = new \WOM\Instrument( INSTRUMENT_ID, INSTRUMENT_PRIVATE_KEY, INSTRUMENT_PRIVATE_KEY_PASSWORD );
注意:如果您的密钥受密码保护,您可以可选地传递密码以及其他参数。否则,传递NULL
或空字符串。
生成代金券规范
要请求WOM,您需要指定需要包含哪些信息。由于一次可以请求多个代金券,您需要实例化一个代金券规范数组。
在这种情况下,我们仅用一种类型的代金券填充数组
$vouchers[] = \WOM\Voucher::Create('H', 40.12319, 12.83548, new DateTime('NOW'));
如果您需要许多相同的代金券,您可以使用额外的参数count
指定它们的数量
$vouchers[] = \WOM\Voucher::Create('H', 40.12319, 12.83548, new DateTime('NOW'), 100);
我们正在请求100个WOM代金券。
执行请求
您几乎完成了!您只需实际请求代金券。如果请求成功,服务器响应将包含OTC和密码,您应将其呈现给用户,以便他们可以兑换他们赚取的WOM。
$values = $instrument->RequestVouchers($vouchers); $otc = $values['otc']; $pin = $values['password'];
完整的示例在example_instrument.php
中。
支付请求生成
生成WOM平台的支付过程与代金券生成过程非常相似:请遵循相同的设置和自动加载步骤。
创建服务点
就像实例化工具一样,您可以通过提供其Id和其私钥来实例化您的POS
$POS = new \WOM\POS( POS_ID, POS_PRIVATE_KEY, POS_PRIVATE_KEY_PASSWORD );
注意:就像上面一样,私钥参数包含密钥文件的路径。此外,即使POS和工具属于同一实体,它们也将具有不同的ID和密钥。
生成支付过滤器
要获取支付请求,通常只需指定要支付的WOMs数量。然而,您还可以指定一个过滤器,用于选择哪些WOM券是有效的支付凭证,哪些不是。
提供支付过滤器可以让您选择哪些类型的券可以用来支付服务。过滤器可以由以下一个或多个元素组成
- 最大年龄:从现在到券生成日期之间的最大天数。超过设定天数的老券将不予接受。
- 地理区域:一个地理(矩形)边界框。只有在该指定区域内获得的券才被允许(请注意,区域是以一对坐标指定,左上角和右下角,两者都表示为数组,首先是纬度然后是经度)。
- 目标:设置目标代码可以过滤掉志愿者通过为其他公共目标做出贡献而获得的券。请注意,目标代码是分级的,因此筛选“H”将接受任何以相同字母开头的券(例如“HE”)。
所有参数都是可选的
$filter = \WOM\Filter::Create('H', array(46.0, -17.0), array(12.0, 160.0), 14);
如果您想接受任何类型的券作为支付,您仍然需要提供一个空的过滤器
$filter = \WOM\Filter::Create();
生成请求
您只需调用方法即可生成正确的支付请求。只需像下面这样调用RequestVouchers
方法
$values = $POS->RequestPayment( 100, // Number of WOM vouchers required to perform payment 'https://myserver.io/confirm/uniquecode123', // Pocket confirmation URL, will be opened by Pocket on payment completion, can be null if Pocket should only display payment confirmation on screen $filter, // Filter that determines which vouchers are accepted 'https://myserver.io/backend/confirm', // Optional Registry confirmation URL, which receives a webhook request from the Registry on payment completion, can be null null // Optional boolean indicating whether this is a persistent payment (can be performed multiple times) or not ); $otc = $values['otc']; $pin = $values['password'];
完整的示例在example_pos.php
中。