收藏
回答

微信支付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
回答关注问题邀请回答
收藏

3 个回答

  • จุ๊บ
    จุ๊บ
    2023-06-30

    PC 网站使用微信支付只能用 扫码支付 (Native支付);

    JSAPI 适用于 小程序 和 微信公众号H5网页;

    如果是手机网页(非微信浏览器),使用H5支付


    2023-06-30
    有用
    回复
  • keep.wan🍭
    keep.wan🍭
    2023-06-30
    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
    
    2023-06-30
    有用
    回复
  • 路人
    路人
    2023-06-30

    PC支付用这个

    https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_7_0.shtml

    2023-06-30
    有用
    回复
登录 后发表内容