ingenico ogone-sdk-php

Ingenico SDK for PHP

3.1.0 2021-05-23 14:54 UTC

This package is auto-updated.

Last update: 2024-08-27 19:09:01 UTC


README

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

要求

  • PHP >=7.0
  • 您的web服务器与Ogone平台之间的网络连接

概述

该库符合PSR-0标准,因此可以使用PSR-0类加载器(如Symfony2中的)来自动加载。有关示例,请参阅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-和ShaOutParameterFilters,它们基于Ogone文档中定义的参数列表。参数过滤是可选的,但我们建议使用它们来强制预期参数。