网站建设怎么引流,工作正能量励志句子,开发网站的流程步骤,主机装多个wordpress本章的内容我尽量描述的细致一些#xff0c;哪里看不懂给我评论就可以#xff0c;我看到进行回复 微信支付大致分为4步#xff0c;具体看后端设计 1. 获取code 2. 根据code获取openid 3. 根据openid#xff0c;以及部分订单相关数据#xff0c;生成prepayId (预支付交易会… 本章的内容我尽量描述的细致一些哪里看不懂给我评论就可以我看到进行回复 微信支付大致分为4步具体看后端设计 1. 获取code 2. 根据code获取openid 3. 根据openid以及部分订单相关数据生成prepayId (预支付交易会话ID) 4. 通过prepayId调用支付api并让后端在支付api中返回支付相关配置参数然后前端将支付配置参数设置到微信支付api上进行支付拉起 第3步和第4步 后端可以合成1步生成prepayId的同时并执行支付然后将支付配置返回给前端 本章主要核心介绍就是 通过第1步第2步的结合取出openid以及第4步中的使用uni.requestPayment(OBJECT) 方法拉起微信支付api的使用以及参数配置其他可具体结合自己的项目。 1. 获取code 首先要清楚code是啥怎么取取到它用来干啥 说明调用接口获取临时登录凭证code。通过凭证进而换取用户登录态信息包括用户在当前小程序的唯一标识openid、微信开放平台账号下的唯一标识unionid若当前小程序已绑定到微信开放平台账号及本次登录的会话密钥session_key等。 通过这个说明可以知道code是临时登录凭证有效期五分钟我们可以通过这个code在第二步拿到openidunionidsession_key 这三个参数 怎么取到code这里需要使用uniapp官方提供的api uni.login(OBJECT) uni.login({provider: weixin, // 使用微信登录success: (res) {const { code } res;console.log(code , code) // code 0e1MTrFa1eDx9I0bRpJa1Mqfwf4MTrFJ}
}); 2. 根据code获取openid openid是啥怎么取取到它用来干啥 说明openid是微信用户在公众帐号包括小程序、H5、APP下的唯一标识。每个应用都有一个appid不同的appid对应的openid不同。 用来干啥因为涉及到支付那么业务中肯定的需要知道是谁支付了这个谁就通过openid界定 怎么取调用微信api【GET https://api.weixin.qq.com/sns/jscode2session?appidAPPIDsecretSECRETjs_codeJSCODEgrant_typeauthorization_code】 const toggleExecutePay (param) {return new Promise((resolve) {uni.showLoading({title: 加载中,mask: true});uni.login({provider: weixin, // 使用微信登录success: (loginRes) {// 取得 codeconst { code } loginRes;// 该api的功能校验临时登录凭证。通过临时登录凭证完成登录流程并且返回 openid, unionid, session_key。// 需要注意某些场景下 在前端代码里直接调用这个api的话会报错request:fail url not in domain list url不在域列表中// 在微信公众平台里面也没办法将这个域名配置到合法域名内// 所以就不能在前端代码里直接调用这个api让后端新增一个接口在新增的接口里面调用这个api然后将openid进行返回// uni.request({// // 微信官网api 携带参数(小程序appId、小程序appSecret、通过wx.login获取的code、授权类型此处只需填写 authorization_code)// url: https://api.weixin.qq.com/sns/jscode2session?appidxxxsecretxxxjs_code${code}grant_typeauthorization_code,// method: GET,// success: function (jscodeRes) {// const { openid, unionid, session_key } jscodeRes.data;// }// });// 调用后端接口 获取openid (只传code就行了其他三个参数让后端在后台自己写)getUserOpenId({ code: code }).then(async (res) {const { success, data, message } res;if (success) {// 执行第3步 创建订单 获取prepayid(统一下单订单号)const prepayId await toggleCreateOrder(data.openid, param).then((res) res);// 执行第4步 获取支付配置 并拉起支付await toggleGetPayConfig(prepayId);resolve(true);} else {// 加载弹窗隐藏uni.hideLoading();// 弹起错误信息uni.showToast({icon: none,title: ${message},mask: true,position: top});resolve(false);}});}});});
}; 3. 根据openid以及部分订单相关数据生成prepayId (预支付交易会话ID) 这一步对于后端来说只是单纯的通过openid以及订单相关参数像微信要了一个prepayId然后创建了一个订单并且给前端返回prepayId // 创建订单 获取 prepayid(统一下单订单号)
const toggleCreateOrder (openid, param) {return new Promise((resolve) {const payParam {openId: openid,amount: param.amount// ... 如果生成订单后端还需要其他参数(如商品名称商品id等等)在这里追加就行};createOrder(payParam).then(async (res) {const { success, data } res;if (success) {resolve(data.prepayId);} else {// 加载弹窗隐藏uni.hideLoading();resolve(false);}});});
}; 4. 通过prepayId 调用支付api并让后端在支付api中返回支付相关配置参数然后前端将支付配置参数设置到微信支付api上进行支付拉起 这一步对于后端来说通过prepayId将刚刚生成的订单设置成待支付并且将支付参数返回给前端前端拉起微信支付支付成功后后端应该会监听回调监听到微信支付成功了就把订单设置成支付成功 前端调用拉起微信支付apiuni.requestPayment(OBJECT) // 获取支付配置
const toggleGetPayConfig (prepayId) {return new Promise((resolve) {getPayConfig({prepayId: prepayId}).then((res) {// 这些参数都让后端返回前端就不维护像appid这些固定值了const { appid, nonceStr, signature, timestamp, signType, partnerid } res;// 加载弹窗隐藏uni.hideLoading();uni.requestPayment({provider: wxpay, // 固定传wxpayappid: appid, // 微信开放平台 - 应用 - AppIdtimeStamp: ${timestamp}, // 时间戳单位秒package: prepay_id prepayId, // prepay_id prepayIdpaySign: signature, // 签名signType: signType, // 签名算法这里用的 MD5/RSA 签名nonceStr: nonceStr, // 随机字符串partnerid: partnerid, // 微信支付商户号success(res) {resolve(true);},fail(err) {console.log(支付异常 , err);}});});});
};