4. Operation and Request

For creating request to GPWebPay API you are need create two objects. Operation and Request

The Operation

For basic operation must create OrderNumber, Amount and Currency objects with values of your payment order.

use Pixidos\GPWebPay\Data\Operation;

$operation = new Operation(
        $orderNumber,
        $amount,
        $currency,
   'czk', // optional, if you leave empty so will be use default
        new ResponseUrl('http://example.com/proccess-gpw-response') // optional when you setup in config
);

more Parameters you can simple add by method addParam(IParam $param)

For example:

$operation->addParam(new PayMethods(PayMethod::CARD(), PayMethod::GOOGLE_PAY()));

Request and Rendering

Request you create by RequestFactory

$request = $requestFactory->create($operation);

And render the payment button

echo sprintf('<a href="%s">This is pay link</a>', $request->getRequestUrl());

or you can render form for post method

<form action="<?= $request->getRequestUrl(true) ?>">
        <?php
        /** @var IParam $param */
        foreach ($request->getParams() as $param) {
                echo sprintf('<input type=hidden value="%s" name="%s">%s', $param->getValue(), $param->getParamName(), "\n\r");
        }
        ?>
        <input type="submit" value="Pay">
</form>

Parameters

OrderNumber

Ordinal number of the order. Every request from a merchant has to contain a unique order number.

Warning

Is not your order number! For specify you order number use MerOrderNum parameter

You are have two ways how specify this.

// you can create on time base on any other integer unique generator.
$orderNumber = new OrderNumber(time());

Amount

Because the amount is the smallest units of the relevant currency For CZK = in hellers, for EUR = in cents.

You are have two ways how specify this.

// The conversion will make Amount self
$amount = new Amount(1000.00);
// or create the conversion by yourself
$amount = new Amount(100000, false);

Warning

It will be deprecated in next major version. Please replace for AmountInPennies

AmountInPennies

Amount of order

$amount = new AmountInPennies(100000); // represent 1000.00 Kč|Euro

Currency

Currency identifier according to ISO 4217 (see Addendum ISO 4217).

You are simple create this, because in class Pixidos\GPWebPay\Enum\Currency you are have all constants with ISO code and methods for create the enum.

use Pixidos\GPWebPay\Enum\Currency as CurrencyEnum;

$currency = new Currency(CurrencyEnum::CZK())

MerOrderNum

Order identification for the merchant. If not specified, the OrderNumber value is used

use Pixidos\GPWebPay\Param\MerOrderNum;

$merOrderNum = new MerOrderNum(123455);