login.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. //const app = require('../../js/api');
  2. import api from '../../js/api'
  3. // pages/login/login.js
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. userInfo: {}
  10. },
  11. /**
  12. * 生命周期函数--监听页面加载
  13. */
  14. onLoad(options) {
  15. },
  16. /**
  17. * 生命周期函数--监听页面初次渲染完成
  18. */
  19. onReady() {
  20. },
  21. /**
  22. * 生命周期函数--监听页面显示
  23. */
  24. onShow() {
  25. },
  26. /**
  27. * 生命周期函数--监听页面隐藏
  28. */
  29. onHide() {
  30. },
  31. /**
  32. * 生命周期函数--监听页面卸载
  33. */
  34. onUnload() {
  35. },
  36. /**
  37. * 页面相关事件处理函数--监听用户下拉动作
  38. */
  39. onPullDownRefresh() {
  40. },
  41. /**
  42. * 页面上拉触底事件的处理函数
  43. */
  44. onReachBottom() {
  45. },
  46. /**
  47. * 用户点击右上角分享
  48. */
  49. onShareAppMessage() {
  50. },
  51. pay(){
  52. api.request_wechatPay(23)
  53. .then(res => {
  54. wx.requestPayment({
  55. timeStamp: res.data.data.unifiedOrderResult.timeStamp,
  56. nonceStr: res.data.data.unifiedOrderResult.nonceStr,
  57. package: res.data.data.unifiedOrderResult.package,
  58. signType: res.data.data.unifiedOrderResult.signType,
  59. paySign: res.data.data.unifiedOrderResult.paySign,
  60. success: res => {
  61. wx.hideLoading()
  62. wx.showToast({
  63. title: '支付成功!',
  64. })
  65. setTimeout(function () {
  66. wx.switchTab({
  67. url: '../index/index',
  68. })
  69. }, 2000)
  70. },
  71. fail: res => {
  72. wx.hideLoading()
  73. wx.showModal({
  74. title: '支付失败',
  75. content: res.errMsg + '请稍后再试',
  76. showCancel: false,
  77. success(res) {
  78. if (res.confirm) {
  79. wx.switchTab({
  80. url: '../home/home',
  81. })
  82. }
  83. }
  84. })
  85. }
  86. })
  87. });
  88. },
  89. RefundTrx:function(e){
  90. var RefundTrx = {
  91. trxId : 31,
  92. longitude :116.4074,
  93. latitude:39.9042
  94. };
  95. api.request_RefundTrx(RefundTrx)
  96. .then(res => {
  97. debugger
  98. });
  99. },
  100. handleGetPhoneNumber: function(e) {
  101. if (e.detail.errMsg === 'getPhoneNumber:ok') {
  102. // 用户同意授权,获取加密数据
  103. const encryptedData = e.detail.encryptedData;
  104. const iv = e.detail.iv;
  105. debugger
  106. // 调用后端接口进行解密
  107. wx.request({
  108. url: 'https://your-backend-api-endpoint.com/decryptPhoneNumber', // 替换为你的后端API地址
  109. method: 'POST',
  110. data: {
  111. encryptedData: encryptedData,
  112. iv: iv,
  113. sessionKey: 'your-session-key' // 替换为实际的session_key
  114. },
  115. success(res) {
  116. console.log('解密后的手机号:', res.data);
  117. },
  118. fail(err) {
  119. console.error('解密失败:', err);
  120. }
  121. });
  122. } else {
  123. console.log('用户拒绝授权');
  124. }
  125. },
  126. subMessage() {
  127. wx.requestSubscribeMessage({
  128. tmplIds: ['ldkKXfnHj-uKo6SBep08f_kaSjtxMOccJywHOEgxyPg'], // 最多支持3条
  129. success(res) {
  130. // 'accept'表示用户同意订阅该条id对应的模板消息
  131. if (res['ldkKXfnHj-uKo6SBep08f_kaSjtxMOccJywHOEgxyPg'] === 'accept') {
  132. // 用户同意订阅,调用云函数或服务器接口发送订阅消息
  133. wx.cloud.callFunction({
  134. name: 'sendSubscribeMessage',
  135. data: {
  136. templateId: '配置好的模板ID',
  137. openid: 'o8pFb5fB9YROMFirFYrVNE3lr4ak',
  138. data: {
  139. thing1: {
  140. value: '活动名称'
  141. },
  142. // 其他参数...
  143. }
  144. },
  145. success(res) {
  146. console.log('订阅消息发送成功', res)
  147. },
  148. fail(err) {
  149. console.error('订阅消息发送失败', err)
  150. }
  151. })
  152. }
  153. }
  154. })
  155. },
  156. handleAuthLogin(e) {
  157. console.log('一键授权登录按钮被点击', e);
  158. wx.showLoading({
  159. title: '正在登录中...',
  160. })
  161. if (e.type == "getphonenumber") {
  162. console.log("添加手机信息",this.data.userInfo)
  163. var user = {
  164. UserName: this.data.userInfo.UserName,
  165. UserAvatarUrl: this.data.userInfo.UserAvatarUrl,
  166. UserPhoneNumber: '',
  167. Address: '',
  168. encryptedData: e.detail.encryptedData,
  169. iv: e.detail.iv
  170. };
  171. this.setData({
  172. userInfo: user
  173. })
  174. this.toLogin()
  175. }
  176. if (e.type == "tap") {
  177. console.log("添加用户信息",this.data.userInfo)
  178. // 获取用户信息授权
  179. const that = this;
  180. wx.getUserProfile({
  181. desc: '用于完善用户资料', // 声明获取用户信息的目的
  182. success(res) {
  183. console.log('用户信息:', res.userInfo);
  184. var user = {
  185. UserName: res.userInfo.nickName,
  186. UserAvatarUrl: res.userInfo.avatarUrl,
  187. UserPhoneNumber: '',
  188. Address: '',
  189. encryptedData: that.data.userInfo.encryptedData,
  190. iv: that.data.userInfo.iv
  191. };
  192. that.setData({
  193. userInfo: user
  194. })
  195. that.toLogin()
  196. // 将用户信息发送到服务器
  197. // 例如:wx.request({ url: 'https://example.com/userInfo', data: res.userInfo })
  198. },
  199. fail(err) {
  200. console.error('获取用户信息失败:', err);
  201. wx.hideLoading()
  202. },
  203. });
  204. }
  205. },
  206. toLogin() {
  207. if(!this.cheackUserInfo()) {
  208. console.log("userInfo 信息不全",this.data.userInfo)
  209. wx.hideLoading()
  210. return
  211. }
  212. // 调用微信登录接口
  213. var that = this;
  214. wx.login({
  215. success(res) {
  216. if (res.code) {
  217. console.log('登录成功,code:', res.code);
  218. api.request_Wechatlogin(res.code)
  219. .then(res => {
  220. console.log("获取wid", res.data.data)
  221. wx.setStorageSync('WachatID', res.data.data)
  222. console.log("传递的userInfo", that.data.userInfo)
  223. return api.request_AddMiniprogramUser(that.data.userInfo)
  224. }).then(res => {
  225. console.log("添加user", res)
  226. wx.hideLoading()
  227. wx.redirectTo({
  228. url: '../scan/scan',
  229. })
  230. }).catch(err => {
  231. console.log("报错", res)
  232. wx.hideLoading()
  233. });
  234. } else {
  235. wx.hideLoading()
  236. console.log('登录失败:', res.errMsg);
  237. }
  238. },
  239. fail(err) {
  240. wx.hideLoading()
  241. console.error('登录接口调用失败:', err);
  242. },
  243. });
  244. },
  245. cheackUserInfo(){
  246. var userInfo = this.data.userInfo;
  247. return userInfo.UserAvatarUrl != '' && userInfo.UserAvatarUrl != undefined && userInfo.UserName != '' && userInfo.UserName != undefined && userInfo.encryptedData != '' && userInfo.encryptedData != undefined && userInfo.iv != '' && userInfo.iv != undefined
  248. }
  249. })