webgriffe / lib-triveneto
Triveneto支付网关的后端库
Requires
- psr/log: ^1.0
Requires (Dev)
- phpspec/phpspec: ^2.5.8
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-04 11:27:27 UTC
README
此库的任务是提供对Consorzio Triveneto支付网关的更高层次访问。它是在Consorzio Triveneto提供的技术文档(2017年1月发布的1.1.1版本)的基础上开发的。
安装
为了使用此库,首先使用composer导入它
composer require webgriffe/lib-triveneto
使用
然后您可以在代码中使用此库。为此,首先实例化一个Webgriffe\LibTriveneto\Client对象
$client = new \Webgriffe\LibTriveneto\Client($logger);
其中$logger是可选的logger实例,库将使用它来记录相关信息。
之后,通过调用初始化客户端
$client->init($tranPortalId, $password, $initUrl, $action, $secretKey);**
其中$tranPortalId是Consorzio Triveneto提供的商户ID,$password是Consorzio Triveneto提供的密码,$initUrl是用于初始化支付操作的网关URL,$action定义了支付操作(1表示“购买”操作,4表示“授权”操作),$secretKey是一个任意选择的密钥,用于在接收到的支付确认上执行额外的安全检查。$initUrl参数可以是Trivento生产环境的https://ipg.constriv.com/IPGWeb/servlet/PaymentInitHTTPServlet或Triveneto测试环境的https://ipg-test4.constriv.com/IPGWeb/servlet/PaymentInitHTTPServlet。请注意,根据使用的是测试环境还是生产环境,可能需要使用特定的$tranPortalId和$passowrd值,因此确保在从一种环境切换到另一种环境时使用这些变量的正确值。$secretKey变量应包含一个一次性生成的值,然后每次实例化库时都传递未修改的值。例如,此值可以在使用此库的组件的安装脚本中生成,并且每次库需要调用时都保存生成的值。在初始化支付和检查Consorzio Triveneto发送的支付通知时,必须传递此变量中的相同值,否则库将报告一个错误,表示签名不匹配。
初始化库后,可以进行两项主要操作:要么初始化新的支付,要么验证之前已初始化的支付的结果。要初始化新的支付,必须调用paymentInit方法
$client->paymentInit($merchantTransactionId, $amount, $currencyCode, $languageId, $notifyUrl, $errorUrl);
$merchantTransactionId变量必须包含交易的商户参考,如订单号等;$amount是支付金额(以欧元计,目前Consorzio Triveneto仅支持欧元);请注意,此值不能有超过两位小数;$currencyCode必须是978(欧元,仅允许的货币);$languageId必须是支持的语言之一的代码(见下文);$notifyUrl必须包含Triveneto将用于通知交易结果的目标URL,$errorUrl必须包含如果发生错误客户将被重定向到的URL。对于$languageId变量,允许的值列表是:ITA USA FRA DEU ESP SLO SRB POR RUS。除非抛出异常,否则此调用(的结果)是一个包含由Triveneto生成的支付ID和客户应重定向以完成支付的目标URL的Webgriffe\LibTriveneto\PaymentInit\Result对象。
当客户到达此页面并完成支付表单(或取消支付)后,Triveneto 将调用支付Init()函数的参数中指定的通知URL进行服务器到服务器的调用。与此次服务器到服务器调用一起发送的请求参数列表应打包成一个关联数组,并传递给paymentVerify()方法。
$client->paymentVerify($requestParams);
其中 $requestParams 是一个包含所有请求参数的关联数组。
$requestParams = array('paymentid' => ..., 'tranid' => ..., 'result' => ..., etc...);
再次强调,除非发生错误并抛出异常,否则此调用将返回一个Webgriffe\LibTriveneto\NotificationMessage\Result\NotificationResultInterface的实例。此对象的实际类型可以是Webgriffe\LibTriveneto\NotificationMessage\Result\NotificationErrorResult,如果发生严重错误(错误代码和消息包含在对象中),或者是一个Webgriffe\LibTriveneto\NotificationMessage\Result\NotificationResult的实例。在后一种情况下,需要检查getIsSuccess()和getIsPending()方法以确定响应是否实际报告了成功的交易。实际上,此结果对象也用于表示网关未授权交易,因此使用这些方法是必要的。如果需要,还可以使用getResult()方法检查原始结果。此外,所有其他请求参数都打包在这个对象中,可以通过一系列getter方法访问。在任何情况下,当收到此服务器到服务器请求时,服务器都必须向Triveneto返回一个响应。为了构建此响应,可以使用Webgriffe\LibTriveneto\NotificationMessage\Response\GeneratorFactory对象。
$factory = new Webgriffe\LibTriveneto\NotificationMessage\Response\GeneratorFactory($result, $successUrl, $errorUrl); $response = $factory->getGenerator()->generate();
其中 $result 是paymentVerify()调用返回的对象,$successUrl 是如果验证结果成功,客户必须重定向到的URL,而$errorUrl 是如果支付验证结果不成功,客户必须重定向到的URL。$response 将包含必须发送回Triveneto以将客户重定向到所需URL的原始响应。在这种情况下,“成功”意味着$result必须是一个NotificationResult的实例,并且至少getIsSuccess()和getIsPending()中的一个方法必须返回true。
请注意,尽管提供了一个$merchantTransactionId字段,但在发生错误的情况下,Triveneto不会返回此值。始终存在的唯一标识符是支付ID,因此建议使用此值来唯一标识支付。
贡献
fork此仓库,进行更改并提交pull request。在提交pull request之前,请运行测试和编码标准检查。您可以使用以下命令完成此操作:
vendor/bin/phpspec run
vendor/bin/phpcs --standard=PSR2 src/
致谢
由Webgriffe®开发。