Skip to the content.

Creating a apexx payment

This file documents how to create a apexx payment and add it to a booking.

The tabs api uses Apexx Server to create an iframe url and return it to you.

You will need to provide a callback url to handle the result.


try {
    if ($id = filter_input(INPUT_GET, 'id')) {
        $b = new tabs\apiclient\Booking($id);
        $b->get();

        // Get the payment methods
        $paymentMethods = \tabs\apiclient\Collection::factory(
            'paymentmethod',
            new \tabs\apiclient\PaymentMethod()
        );

        // Request payment methods and find the card payment for this example
        $card = $paymentMethods->fetch()->findBy(function($ele) {
            return $ele->getPaymentmethod() == 'R';
        })->first();

        // Do the same for currency
        $currencies = \tabs\apiclient\Collection::factory(
            'currency',
            new \tabs\apiclient\Currency()
        );
        $gbp = $currencies->fetch()->findBy(function($ele) {
            return $ele->getCode() == 'GBP';
        })->first();

        $customer = $b->getCustomers()->first()->getCustomer();
        $sp = new tabs\apiclient\ApexxPayment();
        $sp->setAmount(10)
            ->setBookingamount(10)
            ->setCustomer($customer)
            ->setBooking($b);

        // Get the address of the customer.  If you do not have one, you can provide an empty Actor Address object.
        $addresses = $customer->getContactdetails()->findBy(function($ele) {
            return $ele instanceof \tabs\apiclient\actor\Address;
        });

        $base = getBaseUrl();

        $sp->setAddress($addresses->first())
            ->setCurrency($gbp)
            ->setPaymentmethod($card)

            // Set the payment type or be either DEFERRED or PAYMENT.
            // DEFERRED payments need to be released and will not take payment.
            ->setPaymenttype('DEFERRED')

            // Set the callback url so that you can be notified of the confirmed payment
            ->setCallbackurl($base . 'thank-you-for-your-payment.php?id=' . $b->getId())
            ->setFailureurl($base . 'whoops.php?id=' . $b->getId());

        echo $sp->create();

    }

} catch(Exception $e) {
    echo $e->getMessage();
}