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
-
注意:以下操作经过本人在生产环境不完全验证,因为我本身仅仅是一个业务人员,所以涉及到专业的知识性错误欢迎大家补充指正!!!
环境:
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