支付、地址优化
This commit is contained in:
parent
6de50cf8b9
commit
663be8f39f
|
@ -14,6 +14,7 @@
|
|||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@vant/weapp": "^1.11.6",
|
||||
"js-md5": "^0.8.3",
|
||||
"tdesign-miniprogram": "^1.6.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ Page({
|
|||
url: baseUrl + "/user/getById",
|
||||
method: "GET",
|
||||
data: {
|
||||
id: 3,
|
||||
openId: wx.getStorageSync('openid'),
|
||||
},
|
||||
success(res) {
|
||||
self.setData({
|
||||
|
@ -36,14 +36,14 @@ Page({
|
|||
formSubmit(e) {
|
||||
console.log(e, "e")
|
||||
const value = e.detail.value
|
||||
value.openId = wx.getStorageSync('openid');
|
||||
if (value.username && value.phone && value.address) {
|
||||
//保存地址
|
||||
wx.request({
|
||||
url: baseUrl + "/user/addOrUpdate",
|
||||
method: "POST",
|
||||
data: {
|
||||
...value,
|
||||
openId: wx.getStorageSync('openid'),
|
||||
...value
|
||||
},
|
||||
success(res) {
|
||||
console.log(res)
|
||||
|
|
|
@ -10,6 +10,8 @@ Page({
|
|||
},
|
||||
onLoad() {
|
||||
var self = this
|
||||
self.checkUserProfile()
|
||||
self.getUserProfile()// //获取openId
|
||||
/**
|
||||
* 发起请求获取商品列表信息
|
||||
*/
|
||||
|
@ -23,4 +25,74 @@ Page({
|
|||
},
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 检查本地缓存中是否有用户信息
|
||||
*/
|
||||
checkUserProfile() {
|
||||
const userInfo = wx.getStorageSync('userInfo');
|
||||
if (userInfo) {
|
||||
// 如果有用户信息,直接设置数据
|
||||
this.setData({
|
||||
thumb: userInfo.avatarUrl,
|
||||
nickname: userInfo.nickName,
|
||||
});
|
||||
} else {
|
||||
//如果本地没有存储用户信息,则通过openId查数据库中是否已经注册
|
||||
wx.request({
|
||||
url: app.globalData.baseUrl + "/user/getById",
|
||||
method: "GET",
|
||||
data: {
|
||||
openId: wx.getStorageSync('openid'),
|
||||
},
|
||||
success(res) {
|
||||
console.log(res.data.data)
|
||||
// 将用户信息存到 StorageSync
|
||||
const userInfo = {
|
||||
avatarUrl: res.data.data.avatarUrl,
|
||||
nickName: res.data.data.username
|
||||
};
|
||||
wx.setStorageSync('userInfo', userInfo); // 存储到本地
|
||||
},
|
||||
fail: (err) => {
|
||||
// 没有用户信息,提示用户登录授权
|
||||
wx.showModal({
|
||||
title: '温馨提示',
|
||||
content: '请先登录!',
|
||||
showCancel: false,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
console.log(res)
|
||||
wx.navigateTo({
|
||||
url: '/page/component/login/login',
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
},
|
||||
//获取openId
|
||||
getUserProfile() {
|
||||
//通过wx.login()获取登录凭证code
|
||||
wx.login({
|
||||
success: (res) => {
|
||||
const wxConfig = {
|
||||
appid: "wx865aefa5a7115ae0",
|
||||
secret: "3f9849429894435abc935eea88178dfd",
|
||||
code: res.code
|
||||
}
|
||||
wx.request({
|
||||
url: "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxConfig.appid + "&secret=" + wxConfig.secret + "&code=" + wxConfig.code + "&js_code=" + wxConfig.code + '&grant_type=authorization_code',
|
||||
success: (res) => {
|
||||
wx.setStorageSync('openid', res.data.openid);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('wx.login 失败', err);
|
||||
}
|
||||
})
|
||||
},
|
||||
})
|
||||
},
|
||||
})
|
||||
|
|
|
@ -46,12 +46,12 @@ Page({
|
|||
return;
|
||||
}
|
||||
//将用户信息存到StorageSync
|
||||
// 将用户信息存到 StorageSync
|
||||
const userInfo = {
|
||||
// 将用户信息存到 StorageSync
|
||||
const userInfo = {
|
||||
avatarUrl: avatarUrl,
|
||||
nickName: nickname
|
||||
};
|
||||
wx.setStorageSync('userInfo', userInfo); // 存储到本地
|
||||
};
|
||||
wx.setStorageSync('userInfo', userInfo); // 存储到本地
|
||||
// 将数据发送到后端
|
||||
wx.request({
|
||||
url: app.globalData.baseUrl + "/user/addOrUpdate", // 替换为你的后端接口地址
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
const app = getApp()
|
||||
const baseUrl = app.globalData.baseUrl
|
||||
const md5 = require('js-md5');
|
||||
|
||||
// page/component/orders/orders.js
|
||||
Page({
|
||||
onLoad: function (options) {
|
||||
|
@ -19,6 +21,10 @@ Page({
|
|||
hasAddress: false,
|
||||
total: 0,
|
||||
orders: {},
|
||||
config: {
|
||||
appid: "wx865aefa5a7115ae0",
|
||||
key: "d5a58d44588b42cbbe01daa5cfa4e792"
|
||||
}
|
||||
// {id:1,title:'新鲜芹菜 半斤',image:'/image/s5.png',num:4,price:0.01},
|
||||
// {id:2,title:'素米 500g',image:'/image/s6.png',num:1,price:0.03}
|
||||
},
|
||||
|
@ -51,17 +57,42 @@ Page({
|
|||
total: total,
|
||||
})
|
||||
},
|
||||
timeStamp: function () {
|
||||
return parseInt(new Date().getTime() / 1000) + ''
|
||||
},
|
||||
/* 随机数 */
|
||||
randomString: function () {
|
||||
var chars = 'A2345678';
|
||||
var maxPos = chars.length;
|
||||
var pwd = '';
|
||||
for (var i = 0; i < 32; i++) {
|
||||
pwd += chars.charAt(Math.floor(Math.random() * maxPos));
|
||||
}
|
||||
return pwd;
|
||||
},
|
||||
// 调起支付签名 这里我不太明白,虽然前面加载签名和后面验证,但里面加了随机数为什么验证还能通过我没还转过 弯来,希望大家能搞明白吧,到时候可不要吝啬留言讲解一下下
|
||||
MixedencryMD5: function (data, randomString, timeStamp) {
|
||||
const payString = "appId=" + this.data.config.appid +
|
||||
"&nonceStr=" + randomString +
|
||||
"&package=prepay_id=" + "data.prepay_id" +
|
||||
"&signType=MD5" +
|
||||
"&timeStamp=" + timeStamp +
|
||||
"&key=" + this.data.config.key;
|
||||
|
||||
const hash = md5(payString); // 使用 md5 进行签名
|
||||
console.log(hash);
|
||||
return hash;
|
||||
},
|
||||
toPay() {
|
||||
const self = this
|
||||
// 假设订单信息在 this.data.orders 中
|
||||
const orderData = this.data.orders
|
||||
// TODO 用户id暂时写死
|
||||
orderData.userId = 1
|
||||
orderData.status = 1
|
||||
console.log(orderData)
|
||||
//先生成订单
|
||||
const self = this;
|
||||
const orderData = this.data.orders;
|
||||
|
||||
// 假设用户ID暂时写死
|
||||
orderData.userId = 1;
|
||||
orderData.status = 1;
|
||||
|
||||
// 生成订单并请求支付
|
||||
wx.request({
|
||||
// TODO 未测试
|
||||
url: baseUrl + "/order/addOrUpdate", // 替换为你的后端API地址
|
||||
method: "POST",
|
||||
data: {
|
||||
|
@ -76,17 +107,49 @@ Page({
|
|||
title: "订单已提交",
|
||||
icon: "success",
|
||||
duration: 2000,
|
||||
})
|
||||
// 跳转到用户页面
|
||||
wx.switchTab({
|
||||
url: "/page/component/user/user",
|
||||
})
|
||||
});
|
||||
|
||||
// 假设服务器返回的支付信息中包含 prepay_id
|
||||
const paymentInfo = res.data.paymentInfo; // 服务器返回的支付信息,包含 prepay_id 等
|
||||
|
||||
// 生成支付签名等所需的参数(最好在服务器生成)
|
||||
const time = self.timeStamp()
|
||||
const randomString = self.randomString();
|
||||
const parSigns = self.MixedencryMD5(paymentInfo, randomString, time);
|
||||
|
||||
// 发起支付请求
|
||||
wx.requestPayment({
|
||||
timeStamp: time,
|
||||
nonceStr: randomString,
|
||||
package: "prepay_id=" + "paymentInfo.prepay_id",
|
||||
signType: "MD5",
|
||||
paySign: parSigns,
|
||||
success(ress) {
|
||||
console.log('支付成功', ress);
|
||||
// 支付成功后的处理,跳转到用户页面或其他页面
|
||||
wx.switchTab({
|
||||
url: "/page/component/user/user",
|
||||
});
|
||||
},
|
||||
fail(ress) {
|
||||
console.log('支付失败', ress);
|
||||
wx.showToast({
|
||||
title: "支付失败,请重试",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
},
|
||||
complete(ress) {
|
||||
console.log('支付流程结束', ress);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
wx.showToast({
|
||||
title: "提交失败",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
fail() {
|
||||
|
@ -94,16 +157,9 @@ Page({
|
|||
title: "请求失败",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
})
|
||||
});
|
||||
},
|
||||
})
|
||||
wx.showModal({
|
||||
title: "提示",
|
||||
content: "本系统只做演示,支付系统已屏蔽",
|
||||
text: "center",
|
||||
complete() {
|
||||
// 发送订单数据到后端
|
||||
},
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
})
|
||||
|
|
|
@ -11,7 +11,7 @@ Page({
|
|||
|
||||
onLoad() {
|
||||
this.checkUserProfile(); // 检查并获取用户信息
|
||||
this.getUserProfile();
|
||||
// this.getUserProfile();
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -33,7 +33,8 @@ Page({
|
|||
showCancel: false,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
wx.switchTab({
|
||||
console.log(res)
|
||||
wx.navigateTo({
|
||||
url: '/page/component/login/login',
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue