marlon-be/marlon-ogone

3.1.5 2021-03-01 14:17 UTC

README

这个库允许您轻松地将Ogone集成到您的项目中。它提供了与Ogone平台完成正确支付流程所需的组件。

Scrutinizer Quality Score Build Status

需求

  • 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签名的方 法

  • "仅主参数"

    Main parameters only

    使用此库的实现是微不足道的

  <?php
	use Ogone\ShaComposer\LegacyShaComposer;
	$shaComposer = new LegacyShaComposer($passphrase);
  • "每个参数后跟密码短语"

    Each parameter followed by the 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文档中定义的参数列表。参数过滤是可选的,但我们建议使用它们来强制执行预期参数。