omnipay-alipay icon indicating copy to clipboard operation
omnipay-alipay copied to clipboard

v3.x Upgrade Guide

Open lokielse opened this issue 7 years ago • 12 comments

Upgrade apps from 2.x to 3.x

  • The redirect() method no calls exit() after sending the content. This is up to the developer now.

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 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, but omnipay/omnipay will add Guzzle. Gateways should not rely on Guzzle or other clients directly.
  • $body should be a string (eg. http_build_query($data) or json_encode($data) instead of just $data).
  • The $headers parameters should be an array (not null, but can be empty)

Note: Prior to stable release, the goal is to migrate to PSR-18, once completed. This will not change the gateway implementations.


总结:

  • 对用使用者而言,接口几乎是兼容的。
  • omnipay/common v3 需要php 7.1以上版本

lokielse avatar Mar 30 '18 07:03 lokielse

相关问题尽量在此反馈。

lokielse avatar Mar 30 '18 07:03 lokielse

ok,已经使用最新版本的master了"lokielse/omnipay-alipay" : "dev-master",问题已经完美解决!

farmercode avatar Mar 30 '18 07:03 farmercode

可以可以,点个赞,就是omnipay/common v3 需要php 7.1以上版本坑了,我只能继续用v3.0-alpha.1的omnipay/common 了

php-cpm avatar Mar 30 '18 07:03 php-cpm

如果需要固定库的版本,可以将dev-master修改为3.0-alpha.1,这是今天作者的努力成果。点个👍

farmercode avatar Mar 30 '18 08:03 farmercode

https://github.com/lokielse/omnipay-alipay/blob/c6aaab21170cd959290fe79d9011b6b4e3789e72/src/Requests/LegacyVerifyNotifyIdRequest.php#L49

需要修改成

$response = $this->httpClient->request('GET', $url, [])->getBody();

yangjiecao avatar Apr 10 '18 06:04 yangjiecao

@farmercode 感谢反馈,已修复!

lokielse avatar Apr 10 '18 08:04 lokielse

php7.1.17 composer 安装出现如下报错 laravel5.6 `Your requirements could not be resolved to an installable set of packages.

Problem 1 - omnipay/common v2.3.4 requires guzzle/guzzle ~3.9 -> satisfiable by guzzle/guzzle[v3.9.0, v3.9.1, v3.9.2, v3.9.3].`

Jackfinal avatar May 03 '18 13:05 Jackfinal

pc 网站支付 回调 $response = $request->send(); 出错

xiaokus avatar Jul 26 '18 03:07 xiaokus

@xiaokus 有没有安装guzzle/guzzle包

laraveler avatar Jul 26 '18 03:07 laraveler

安装了 支付成功了 就回调到这里就报错

xiaokus avatar Jul 26 '18 03:07 xiaokus

@xiaokus 报错内容贴一下

dacheng-gao avatar Jul 26 '18 06:07 dacheng-gao

发邮件给你了,瞧一瞧呀...PR 麻烦看看呢。

maxsky avatar May 16 '19 10:05 maxsky