Componette

Componette

contributte

contributte / thepay v4.1.1

ThePay integration for Nette Framework

download-cloud-line composer require contributte/thepay

Website ๐Ÿš€ contributte.org | Contact ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป f3l1x.io | Twitter ๐Ÿฆ @contributte

Nette integration for ThePay API client with DI configuration and ready-to-use payment services.

Versions

State Version Branch PHP
dev ^5.0 master >= 8.2
stable ^4.1 v4.x >= 7.1

Contents

Installation

To install the latest version of contributte/thepay use Composer.

composer require contributte/thepay

Requirements

This extension requires PSR-18 HTTP client and PSR-17 HTTP factories to be registered in your DI container.

The recommended implementation is Guzzle:

composer require guzzlehttp/guzzle

You need to register the PSR interfaces in your neon config:

services:
	- GuzzleHttp\Client
	- GuzzleHttp\Psr7\HttpFactory

Configuration

Register the extension:

extensions:
	contributte.thepay: Contributte\ThePay\DI\ThePayExtension

List of all options:

contributte.thepay:
	demo: true/false
	merchantId: 'your-merchant-id'
	projectId: (int)
	apiPassword: ''
	apiUrl: 'https://api.thepay.cz/'
	gateUrl: 'https://gate.thepay.cz/'
	language: 'cs'

Minimal production configuration:

contributte.thepay:
	merchantId: 'your-merchant-id'
	projectId: (int)
	apiPassword: ''

Demo configuration:

contributte.thepay:
	demo: true
	merchantId: 'your-merchant-id'
	projectId: (int)
	apiPassword: ''

When demo: true is set, apiUrl and gateUrl are automatically switched to demo endpoints.

Services Available in DI Container

  • ThePay\ApiClient\TheConfig
  • ThePay\ApiClient\Service\SignatureService
  • ThePay\ApiClient\Service\ApiService (implements ApiServiceInterface)
  • ThePay\ApiClient\Service\GateService (implements GateServiceInterface)
  • ThePay\ApiClient\TheClient

Usage

Create a Payment

use Nette\Application\UI\Presenter;
use ThePay\ApiClient\Model\CreatePaymentParams;
use ThePay\ApiClient\TheClient;

class OrderPresenter extends Presenter
{
	public function __construct(
		private TheClient $thePayClient,
	) {
		parent::__construct();
	}

	public function actionPay(): void
	{
		$params = new CreatePaymentParams(10000, 'CZK', 'order-123');
		$payment = $this->thePayClient->createPayment($params);

		$this->redirectUrl($payment->getPayUrl());
	}
}

Render Payment Buttons

use Nette\Application\UI\Presenter;
use ThePay\ApiClient\Model\CreatePaymentParams;
use ThePay\ApiClient\TheClient;

class OrderPresenter extends Presenter
{
	public function __construct(
		private TheClient $thePayClient,
	) {
		parent::__construct();
	}

	public function renderPaymentMethods(): void
	{
		$params = new CreatePaymentParams(10000, 'CZK', 'order-123');
		$this->template->paymentButtons = $this->thePayClient->getPaymentButtons($params);
	}
}

Verify a Payment

use Nette\Application\UI\Presenter;
use ThePay\ApiClient\TheClient;

class OrderPresenter extends Presenter
{
	public function __construct(
		private TheClient $thePayClient,
	) {
		parent::__construct();
	}

	public function actionConfirmation(string $paymentUid): void
	{
		$payment = $this->thePayClient->getPayment($paymentUid);

		if ($payment->wasPaid()) {
			// Payment was successful.
		}
	}
}

Official Documentation

Development

See how to contribute to this package.

This package is currently maintained by these authors.


Consider to support contributte development team. Also thank you for using this package.

price-tag-2-line

Badges

guide-fill

Dependencies

php (>=7.1)
ext-soap (*)
nette/di (^2.4.14 || ^3.0)
nette/application (^2.4.11 || ^3.0)
nette/http (^2.4 || ^3.0)
Componette Componette felix@nette.org