Changelog History
Page 1
-
v3.2 Changes
June 01, 2021๐ Omnipay 3.2 is compatible with PHP8. This is done by upgrading the test suite to PHPUnit 8/9, with the release of omnipay/tests v4 and omnipay/common v3.1. This change is primarily for gateway developers, to make it possible to actually test PHP8, but they will need to upgrade their tests to use PHPUnit 9 (the currently supported PHPUnit version).
-
v3.1.0
October 29, 2020 -
v3.0.2
March 26, 2019 -
v3.0.1
November 09, 2018 -
v3.0 Changes
April 23, 2017Omnipay 3.0 focuses on separation of the HTTP Client, to be independent of Guzzle. ๐ This release brings compatibility with the latest Symfony 3+4 and Laravel 5. The breaking changes for applications using Omnipay are kept to a minimum.
๐ฆ The
omnipay/omnipay
package name has been changed toleague/omnipay
โฌ๏ธ Upgrading applications from Omnipay 2.x to 3.x
๐ฅ Breaking changes
- The
redirect()
method no callsexit()
after sending the content. This is up to the developer now. - An HTTP Client is required. Guzzle will be installed when using
league/omnipay
, but otherwise you need to required your own implementation (see PHP HTTP Clients)- ๐ฆ The
omnipay/omnipay
package name has been changed toleague/omnipay
and no longers installs all the gateways directly.
- ๐ฆ The
โ Added
- It is now possible to use
setAmountInteger(integer $value)
to set the amount in the base units of the currency. - Support for Money for PHP objects are added, by using
setMoney(Money $money)
the Amount and Currency are set.
โฌ๏ธ Upgrading Gateways from 2.x to 3.x
The primary difference is the HTTP Client. We are now using HTTPlug (http://httplug.io/) but rely on our own interface.
๐ฅ Breaking changes
- ๐ Change typehint from Guzzle ClientInterface to
Omnipay\Common\Http\ClientInterface
- ๐
$client->get('..')
/$client->post('..')
etc are removed, you can call$client->request('GET', '')
. - No need to call
$request->send()
, requests are sent directly. - Instead of
$client->createRequest(..)
you can create+send the request directly with$client->request(..)
. - When sending a JSON body, convert the body to a string with
json_encode()
and set the correct Content-Type. - The response is a PSR-7 Response object. You can call
$response->getBody()->getContents()
to get the body as string. $response->json()
and$response->xml()
are gone, but you can implement the logic directly.- 0๏ธโฃ An HTTP Client is no longer added by default by
omnipay/common
, butleague/omnipay
will add Guzzle. Gateways should not rely on Guzzle or other clients directly. - ๐
$body
should be a string (eg.http_build_query($data)
orjson_encode($data)
instead of just$data
). - The
$headers
parameters should be anarray
(notnull
, but can be empty)
Examples:
// V2 XML: $response = $this->httpClient->post($this->endpoint, null, $data)->send(); $result = $httpResponse->xml(); // V3 XML: $response = $this->httpClient->request('POST', $this->endpoint, [], http_build_query($data)); $result = simplexml_load_string($httpResponse->getBody()->getContents());
// Example JSON request: $response = $this->httpClient->request('POST', $this->endpoint, [ 'Accept' => 'application/json', 'Content-Type' => 'application/json', ], json_encode($data)); $result = json_decode($response->getBody()->getContents(), true);
โ Testing changes
โฌ๏ธ PHPUnit is upgraded to PHPUnit 6. Common issues:
- ๐
setExpectedException()
is removed
// PHPUnit 5: $this->setExpectedException($class, $message); // PHPUnit 6: $this->expectException($class); $this->expectExceptionMessage($message);
โ Tests that do not perform any assertions, will be marked as risky. This can be avoided by annotating them with
@doesNotPerformAssertions
๐ You should remove the
Mockery\Adapter\Phpunit\TestListener
in phpunit.xml.dist
- The
-
v3.0-alpha.1
April 23, 2017 -
v2.3.2
December 16, 2014 -
v2.3.1 Changes
September 17, 2014๐ Move to The PHP League.
-
v2.3.0 Changes
May 12, 2014- โ Add Coinbase gateway
-
v2.1.0 Changes
December 08, 2013- โ Add CreditCard birthday and gender fields