JSAPI只适用于微信公众号和小程序。 微信公众号需要通过 `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodeURIComponent(host())}&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect` 获取code之后去后端用code 交换access_token和openid以便获取用户信息; 小程序则是 wx.login 获取code之后去后端用code 交换access_token和openid; 具体你要看文档, pc你应该用h5支付不能用jsapi
微信支付JSAPI下单接口的openid参数如何获取?JSAPI支付的文档中说「JSAPI支付适用于线下场所、公众号场景和PC网站场景。」 然后在调用下单接口时要求传入 payer.openid,因为是pc网站,也没办法知道微信用户的信息,这个参数要从什么地方获取? 更新 查了一些资料,感觉可以这么操作,不知道是否可行: 1. 用户点击pc网站上的「使用微信支付」弹出二维码,二维码为h5页面的地址 2. 用户用微信扫描二维码,打开h5页面 3. h5页面地址为微信的一个用户授权地址见文档:[网页授权 | 微信开放文档 (qq.com)](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html),由于只需要获取 `openId` 因此是静默授权 4. 静默授权之后会跳转到一个指定的地址(我们的网站),后端通过url参数获取到 `code` 5. 后端将 `code` 传给微信的一个接口(见第3步的文档),接口返回 `openId` 6. 后端调用JSAPI下单接口,并传入 `openId` 和 商品信息等,最终得到一个 `prepay_id` ,并返回给h5前端 7. 前端通过微信浏览器内置的`WeixinJSBridge.invoke`方法调起支付 8. 支付完成后,h5前端展示一个完成支付的页面 9. 后端收到支付结果通知,修改系统内的定单状态
2023-06-30