2.8 KiB
Executable File
2.8 KiB
Executable File
Upgrade apps from 2.x to 3.x
- The
redirect()method no longer callsexit()after sending the content. This is up to the developer now. - It is now possible to use
setAmountInteger(integer $value)andsetMoney(Money $money) - HTTPPlug is used. Guzzle will be installed when using
omnipay/omnipay, otherwise you need to require your own implementation (see http://docs.php-http.org/en/latest/clients.html) - The package is renamed from
omnipay/omnipaytoleague/omnipayand no longer installs all gateways by default.
Upgrade 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
- 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 a string. $response->json()and$response->xml()are gone, but you can implement the logic directly.- An HTTP Client is no longer added by default by
omnipay/common, butomnipay/omnipaywill add Guzzle. Gateways should not rely on Guzzle or other clients directly. $bodyshould be a string (eg.http_build_query($data)orjson_encode($data)instead of just$data).- The
$headersparameters 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
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\TestListenerin phpunit.xml.dist