PayWay REST API gateway for Omnipay payment processing library

1.9.0 2019-03-20 22:15 UTC

This package is auto-updated.

Last update: 2024-05-25 09:16:36 UTC


WestPac PayWay REST API driver for the Omnipay PHP payment processing library

Latest Stable Version Total Downloads License

Omnipay is a framework agnostic, multi-gateway payment processing library for PHP 5.3+. This package implements PayWay REST API support for Omnipay.

This module aims to implement a usable subset of the PayWay REST API (a product of Westpac Bank). The API is extensive, so the initial aim is to implement the following features:

  • Create and maintain customers
  • Create single-use tokens (Credit Card, Bank Account)
  • Take payments using tokenised credit card details (aiding PCI compliance)
  • Schedule regular payments

These initial features have now been implemented.

See the official PayWay documentation for full details.


Install the module using composer.

composer require rotassator/omnipay-payway-restapi


Take Payment

To take a one-time credit card payment.


include 'vendor/autoload.php';

use Exception;
use Omnipay\Common\CreditCard;
use Omnipay\Omnipay;

$gateway = Omnipay::create('PaywayRest_DirectDebit');


try {
    $response = $gateway->createSingleUseCardToken([
        'card' => new CreditCard([
            'firstName' => 'First Name',
            'lastName' => 'Last Name',
            'number' => '4564710000000004',
            'expiryMonth' => '02',
            'expiryYear' => '2019',
            'cvv' => '847',

    $singleUseTokenId = $response->getData('singleUseTokenId');

    if (empty($singleUseTokenId)) {
        // handle error

    $request = $gateway->purchase([
        'singleUseTokenId' => $singleUseTokenId,
        'customerNumber' => 'AB1245',
        'principalAmount' => '10.00',
        'currency' => 'AUD',
        'orderNumber' => 12,

    $response = $request->send();

    if ($response->isSuccessful()) {
        // update order
} catch (Exception $e) {
    // handle error

// Example for creating single-use token with Bank Account
$response = $gateway->createSingleUseBankToken([
    'bankAccountBsb' => '999999',
    'bankAccountNumber' => '999999999',
    'bankAccountName' => 'Your Name',

$singleUseTokenId = $response->getData('singleUseTokenId');

Known Issue

[curl] 60: SSL certificate problem: unable to get local issuer certificate.


Download CA certificate and place somewhere in your project root.

eg. project/certificate/cacert.pem

In the gateway initialization object do like below.

$gateway = Omnipay::create('PaywayRest_DirectDebit');




Contributions are welcome and will be fully credited.

Contributions can be made via a pull request on Github.


If you are having general issues with the package, feel free to report it to us.

If you believe you have found a bug, please report it using the GitHub issue tracker, or better yet, fork the library and submit a pull request.