marlon-be / marlon-ogone
3.1.5
2021-03-01 14:17 UTC
Requires
- php: >=5.3
Requires (Dev)
- guzzle/guzzle: @stable
- phpunit/phpunit: >=4.8 <5.0
- symfony/class-loader: @stable
This package is not auto-updated.
Last update: 2024-09-14 10:37:40 UTC
README
这个库允许您轻松地将Ogone集成到您的项目中。它提供了与Ogone平台完成正确支付流程所需的组件。
需求
- PHP 5.3
- 您的Web服务器与Ogone平台之间的网络连接
一如既往,这是一个正在进行中的项目。请随意分支此项目并提交拉取请求!
概述
该库符合PSR-0标准,因此可以使用像Symfony2中的PSR-0类加载器自动加载。请参阅autoload.php以获取示例。
- 创建一个包含Ogone所需所有信息的EcommercePaymentRequest或CreateAliasRequest。
- 生成一个表单
- 将其提交给Ogone(客户端)
- 从Ogone接收支付响应(作为HTTP请求)
EcommercePaymentRequest、CreateAliasRequest和PaymentResponse都通过比较SHA签名进行身份验证,该签名是参数的哈希和秘密密码。您可以使用ShaComposer创建哈希。
该库还允许
- 使用DirectLinkQueryRequest通过Ogone API获取订单信息
- 使用DirectLinkMaintenanceRequest通过Ogone API执行维护请求
SHA Composers
Ogone提供了两种生成SHA签名的方 法
<?php use Ogone\ShaComposer\LegacyShaComposer; $shaComposer = new LegacyShaComposer($passphrase);
<?php use Ogone\ShaComposer\AllParametersShaComposer; $shaComposer = new AllParametersShaComposer($passphrase);
此库目前支持旧方法"仅主参数"和新方法"每个参数后跟密码短语"。两种方法均可与SHA-1(默认)、SHA-256或SHA-512加密一起使用。
EcommercePaymentRequest和FormGenerator
<?php use Ogone\Passphrase; use Ogone\Ecommerce\EcommercePaymentRequest; use Ogone\ShaComposer\AllParametersShaComposer; use Ogone\FormGenerator\SimpleFormGenerator; $passphrase = new Passphrase('my-sha-in-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaInParameterFilter); //optional $ecommercePaymentRequest = new EcommercePaymentRequest($shaComposer); // Optionally set Ogone uri, defaults to TEST account //$ecommercePaymentRequest->setOgoneUri(EcommercePaymentRequest::PRODUCTION); // Set various params: $ecommercePaymentRequest->setOrderid('123456'); $ecommercePaymentRequest->setAmount(150); // in cents $ecommercePaymentRequest->setCurrency('EUR'); // ... $ecommercePaymentRequest->validate(); $formGenerator = new SimpleFormGenerator; $html = $formGenerator->render($ecommercePaymentRequest); // Or use your own generator. Or pass $ecommercePaymentRequest to a view
CreateAliasRequest
<?php use Ogone\Passphrase; use Ogone\DirectLink\CreateAliasRequest; use Ogone\ParameterFilter\AliasShaInParameterFilter; use Ogone\ShaComposer\AllParametersShaComposer; use Ogone\DirectLink\Alias; $passphrase = new Passphrase('my-sha-in-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new AliasShaInParameterFilter); $createAliasRequest = new CreateAliasRequest($shaComposer); // Optionally set Ogone uri, defaults to TEST account // $createAliasRequest->setOgoneUri(CreateAliasRequest::PRODUCTION); // set required params $createAliasRequest->setPspid('123456'); $createAliasRequest->setAccepturl('http://example.com/accept'); $createAliasRequest->setExceptionurl('http://example.com/exception'); // set optional alias, if empty, Ogone creates one $alias = new Alias('customer_123'); $createAliasRequest->setAlias($alias); $createAliasRequest->validate(); // Now pass $createAliasRequest to a view to build a custom form, you have access to // $createAliasRequest->getOgoneUri(), $createAliasRequest->getParameters() and $createAliasRequest->getShaSign() // Be sure to add the required fields CN (Card holder's name), CARDNO (Card/account number), ED (Expiry date (MMYY)), CVC (Card Verification Code) // and the SHASIGN
DirectLinkPaymentRequest
<?php use Ogone\DirectLink\DirectLinkPaymentRequest; use Ogone\Passphrase; use Ogone\ShaComposer\AllParametersShaComposer; use Ogone\DirectLink\Alias; $passphrase = new Passphrase('my-sha-in-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaInParameterFilter); //optional $directLinkRequest = new DirectLinkPaymentRequest($shaComposer); $directLinkRequest->setOrderid('order_1234'); $alias = new Alias('customer_123'); $directLinkRequest->setAlias($alias); $directLinkRequest->setPspid('123456'); $directLinkRequest->setUserId('ogone-api-user'); $directLinkRequest->setPassword('ogone-api-password'); $directLinkRequest->setAmount(100); $directLinkRequest->setCurrency('EUR'); $directLinkRequest->validate(); // now create a url to be posted to Ogone // you have access to $directLinkRequest->toArray(), $directLinkRequest->getOgoneUri() and directLinkRequest->getShaSign()
DirectLinkQueryRequest
<?php use Ogone\DirectLink\DirectLinkQueryRequest; use Ogone\Passphrase; use Ogone\ShaComposer\AllParametersShaComposer; use Ogone\DirectLink\Alias; $passphrase = new Passphrase('my-sha-in-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaInParameterFilter); //optional $directLinkRequest = new DirectLinkQueryRequest($shaComposer); $directLinkRequest->setPspid('123456'); $directLinkRequest->setUserId('ogone-api-user'); $directLinkRequest->setPassword('ogone-api-password'); $directLinkRequest->setPayId('order_1234'); $directLinkRequest->validate(); // now create a url to be posted to Ogone // you have access to $directLinkRequest->toArray(), $directLinkRequest->getOgoneUri() and directLinkRequest->getShaSign()
DirectLinkMaintenanceRequest
<?php use Ogone\DirectLink\DirectLinkMaintenanceRequest; use Ogone\DirectLink\MaintenanceOperation; use Ogone\Passphrase; use Ogone\ShaComposer\AllParametersShaComposer; use Ogone\DirectLink\Alias; $passphrase = new Passphrase('my-sha-in-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaInParameterFilter); //optional $directLinkRequest = new DirectLinkMaintenanceRequest($shaComposer); $directLinkRequest->setPspid('123456'); $directLinkRequest->setUserId('ogone-api-user'); $directLinkRequest->setPassword('ogone-api-password'); $directLinkRequest->setPayId('order_1234'); $directLinkRequest->setOperation(new MaintenanceOperation(MaintenanceOperation::OPERATION_AUTHORISATION_RENEW)); $directLinkRequest->validate(); // now create a url to be posted to Ogone // you have access to $directLinkRequest->toArray(), $directLinkRequest->getOgoneUri() and directLinkRequest->getShaSign()
EcommercePaymentResponse
<?php use Ogone\Ecommerce\EcommercePaymentResponse; use Ogone\ShaComposer\AllParametersShaComposer; // ... $ecommercePaymentResponse = new EcommercePaymentResponse($_REQUEST); $passphrase = new Passphrase('my-sha-out-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaOutParameterFilter); //optional if($ecommercePaymentResponse->isValid($shaComposer) && $ecommercePaymentResponse->isSuccessful()) { // handle payment confirmation } else { // perform logic when the validation fails }
CreateAliasResponse
<?php use Ogone\DirectLink\CreateAliasResponse; use Ogone\ShaComposer\AllParametersShaComposer; // ... $createAliasResponse = new CreateAliasResponse($_REQUEST); $passphrase = new Passphrase('my-sha-out-passphrase-defined-in-ogone-interface'); $shaComposer = new AllParametersShaComposer($passphrase); $shaComposer->addParameterFilter(new ShaOutParameterFilter); //optional if($createAliasResponse->isValid($shaComposer) && $createAliasResponse->isSuccessful()) { // Alias creation is succesful, get the Alias object $alias = $createAliasResponse->getAlias(); } else { // validation failed, retry? }
DirectLinkPaymentResponse
由于DirectLink支付从服务器获得即时反馈(没有异步响应),我们不使用SHA验证。
<?php use Ogone\DirectLink\DirectLinkPaymentResponse; $directLinkResponse = new DirectLinkPaymentResponse('ogone-direct-link-result-as-xml'); if($directLinkResponse->isSuccessful()) { // handle payment confirmation } else { // perform logic when the validation fails }
参数过滤器
参数过滤器用于过滤提供的参数(废话)。提供了ShaIn和ShaOut参数过滤器,它们基于Ogone文档中定义的参数列表。参数过滤是可选的,但我们建议使用它们来强制执行预期参数。