Replies: 2 comments 8 replies
-
你好 ,按照你的方法 我这里直接走到了这个错误,没搞明白 |
Beta Was this translation helpful? Give feedback.
8 replies
-
V3支付,使用提到处理,请求400 Bad Request returned |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
注意:以下操作经过本人在生产环境不完全验证,因为我本身仅仅是一个业务人员,所以涉及到专业的知识性错误欢迎大家补充指正!!!
环境:
1、如果使用的是hyperf2.x则PHP必须是8.0.x,因为hyperf2.x不支持8.1以上,easywechat6.x不支持8.0以下
2、swoole截止到我测试通过,最新的发布版本4.8.x是不支持的,原因是curl函数在swoole携程化下有bug,具体的报错可以自行编译测试,总之就是与easywechat6.x使用的symfony/http-client包中的某些curl不兼容,实际上hyperf提供了携程的Guzzle HTTP客户端但是easywechat6.x在调研之初就否定了,参考#2328,然后6.x实际上也只封装了核心部分功能,具体业务接口还是需要自己手动写请求,所以如果你hyperf非常牛,guzzle用得也非常6完全可以把6.x的功能抄过来直接用就好了,这个不在本文的讨论范围。
但是swoole的master分支编译后可以无缝支持,原因是这些bug已经修复了,可以看一下最新的提交记录
已经测试通过的功能:
公众号、开放平台、支付,小程序、企业微信因为业务暂时没有用到暂未测试
原理:跟5.x在hyperf下使用类似,因为实际上这样的API相互调用的sdk就是发请求处理响应,而优秀的easywechat6.x提供了完全自定义的能力,包括核心的http请求客户端,所以你完全可以根据自己的实际需求来替换,当前全都换了她就不是那个她了,哈哈~
客户端:es6.x要求是实现了Symfony\Contracts\HttpClient\HttpClientInterface接口的,所以如果你无法升级swoole的版本,可以通过替换客户端的方式实现,写一个实现这个接口的类,奈何我不会,幸好swoole5.x已经兼容了所以本步骤跳过
请求:hyperf的请求类跟es6.x要求的请求类是实现了同一套接口的,可以直接替换使用且必须替换,否则es6.x拿不到请求参数
缓存:hyperf的缓存同样跟es6.x要求的缓存类是实现同一套接口的,可直接使用,建议替换,默认的文件缓存根据5.x的经验隔一段时间或者并发较大的情况下或造成缓存错误的问题。
开放平台:
开放平台代公众号实现业务,这步操作必须要有,原因是开放平台也需要去兑换公众号的应用实例,所以兑换出来的实例也需要替换响应的请求,以下可供参考,需要根据自己的业务修改。
公众号:这是直接使用公众号后台配置接口的情况,为了兼容,写了开放平台的东西,如果你完全没用开放平台可以直接替换请求合缓存就能用。
支付:支付仅测试通过v2,暂未测试v3,如有问题我会补充
Beta Was this translation helpful? Give feedback.
All reactions