微信公众号支付 jssdk ,后端 laravel + easywechat,前端 uniapp

前提:商户号,各种授权域名 ,app_id api_key 证书 等,都已配置好了。

不会配置的参考官方文档:

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

 

主要流程

  1. 前端:用户点购买按钮

  2. 前端:初始化jssdk

  3. 前端:调用后端接口,尝试生成预支付订单。

  4. 后端:生成预支付订单(比如订单的金额,编号,商品)。调用微信统一下单接口,成功后返回给前端

  5. 前端:收到后端返回的参数。使用这些参数,发起支付,此时出现支付的界面

  6. 用户输入密码,支付成功

  7. 微信回调后端接口,后端接收到微信的回调后,处理业务,比如修改订单状态为已支付。

 

代码截图,上面的每一步流程,都标注在代码中了:

前端代码(uniapp uviewui)

后端代码:laravel+easyWechat

后端接口:…/jssdk-config,用于返回给前端,初始化jssdk的参数

### 微信公众号 JSSDK 开发教程 #### 获取 Access Token 为了使用微信JSSDK,在服务器端需要先获取`access_token`。这是调用微信接口的全局唯一票据,有效时间为7200秒。开发者需自行负责在服务端维护此令牌并实现缓存机制以提高效率[^3]。 ```java // Java示例代码用于获取 access_token String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; URL url = new URL(accessTokenUrl); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null){ response.append(line); } reader.close(); JSONObject jsonResponse = new JSONObject(response.toString()); String accessToken = jsonResponse.getString("access_token"); ``` #### 配置 JS SDK 接口签名 前端页面加载前,通过后台向微信公众平台发起请求获得配置所需的参数列表,包括但不限于`noncestr`, `timestamp`, 和 `signature`等字段。这些数据用来验证当前网页访问合法性以及防止跨站伪造攻击[^1]。 ```javascript wx.config({ debug: false, // 开启调试模式, 调用的所有 api 的返回值会在客户端 alert 出来,建议仅在测试环境开启 appId: 'your-app-id', // 必填,公众号的唯一标识 timestamp: res.timestamp, // 必填,生成签名的时间戳 nonceStr: res.nonceStr, // 必填,生成签名的随机串 signature: res.signature,// 必填,签名 jsApiList: ['getLocation'] // 必填,需要使用的JS接口列表 }); ``` #### 使用 JSSDK 功能 一旦完成上述准备工作之后就可以正常使用各种功能API了。比如这里展示了一个简单的例子——利用`getLocation()`方法取得用户的地理位置信息: ```html <button id="get-location">Get Location</button> <script src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script type="text/javascript"> document.getElementById('get-location').onclick = function(){ wx.getLocation({ success:function(res){ console.log(`Latitude:${res.latitude}, Longitude:${res.longitude}`); }, cancel:function(){ console.error('User refused to provide location.'); } }); }; </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值