webman使用easywechat6.x遇到的问题和解决方案

kylin87

1、关于开放平台的问题

A、关于component_verify_ticket 项目共享的问题,默认的是文件缓存,我们是把component_verify_ticket 写入到redis中,所以需要定义$app对象后,增加一行如下代码

$app->setCache(new Psr16Cache(new RedisAdapter(Redis::connection()->client())));

这样就会自动存入默认的redis配置中,如果不是默认的,可以在上述connection里面填写自定义的

B、关于第三方平台代小程序登陆,6.x不再有session的方法,所有的api请求均需要自行组装参数并自行请求,这里展示一份登陆的事例代码

$data = [
    'appid' => $this->miniProgram->getAccount()->getAppId(),
    'js_code' => $code,
    'grant_type' => 'authorization_code',
    'component_appid' => $this->openPlatform->getAccount()->getAppId(),
    'component_access_token' => $this->openPlatform->getComponentAccessToken()->getToken()
];
return $this->miniProgram->getClient()->get('sns/component/jscode2session', $data)->toArray();

2、关于微信支付

A、6.x好像不支持v2的支付方式,或者支持的很差,勉强能支付成功后,回调的处理又有很多问题,经过反复测试后,最终放弃了v2支付

B、关于RSA签名,不用看什么下载证书的文档,看easywechat的工具示例,获得prepay_id后,可以通过以下代码直接获得RSA的签名

$config = $app->getUtils()->buildMiniAppConfig($result['prepay_id'], $this->appid, 'RSA'); // 返回数组

C、关于支付回调,easywechat默认读不到回调的内容,所以就需要参考该文档的写法

微信SDK
文档是5.x的写法,但是我们用的6.x,所以代码有些调整

$app->rebind('request', $symfony_request);
//上面代码改为这个
$app->setRequestFromSymfonyRequest($symfony_request);

这样就可以顺利的拿到message了

2228 3 6
3个评论

gicai

棒棒的,我刚研究webman+easywechat6.x 上来就报错了,研究半天没整明白吗,哎。头疼

  • 暂无评论
liziyu

感谢分享

  • 暂无评论
10bang

感谢分享

  • 暂无评论

kylin87

110
积分
0
获赞数
0
粉丝数
2023-02-15 加入
🔝