confirmOrder.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. // pages/order/confirmOrder/confirmOrder.js
  2. import { API } from "../../../service/api";
  3. import {formatPrice} from "../../../utils/utils";
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. prods:[],
  10. totalPrice:0, // 订单总金额
  11. address:""
  12. },
  13. // 获取地址列表
  14. getAddressList(){
  15. API.getAddressList().then(res=>{
  16. let address = res.userAddressList.filter(item=>item.defaultFlag === "1");
  17. if(address.length === 0){
  18. address = res.userAddressList[0];
  19. }else{
  20. address = address[0];
  21. }
  22. this.setData({
  23. address
  24. })
  25. })
  26. },
  27. // 去地址管理页面
  28. goAddressMange(){
  29. wx.navigateTo({
  30. url: '/pages/my/addressManage/addressManage?moldify=true',
  31. })
  32. },
  33. // 确认订单
  34. submitOrder(){
  35. let data = {
  36. orderItemDTOS:this.data.orderItemDTOS,
  37. userAddressId:this.data.address.userAddressId
  38. }
  39. API.createOrder(data).then(res=>{
  40. this.requestPayment(res.orderPaySignDTO);
  41. })
  42. },
  43. // 拉起微信支付
  44. requestPayment(paymentParams) {
  45. wx.requestPayment({
  46. timeStamp: paymentParams.timeStamp,
  47. nonceStr: paymentParams.nonceStr,
  48. package: paymentParams.prepayId,
  49. signType: "MD5",
  50. paySign: paymentParams.wxpaySign,
  51. success(res) {
  52. console.log('支付成功', res);
  53. wx.showToast({ title: '支付成功' });
  54. // 跳转到订单详情或返回
  55. setTimeout(()=>{
  56. wx.redirectTo({
  57. url: '/pages/my/myOrder/myOrder',
  58. })
  59. },3000)
  60. },
  61. fail(err) {
  62. console.error('支付失败', err);
  63. wx.showToast({ title: '支付取消', icon: 'none' });
  64. setTimeout(()=>{
  65. wx.redirectTo({
  66. url: '/pages/my/myOrder/myOrder',
  67. })
  68. },3000)
  69. }
  70. });
  71. },
  72. /**
  73. * 生命周期函数--监听页面加载
  74. */
  75. onLoad(options) {
  76. let list = JSON.parse(decodeURIComponent(options.prods));
  77. let total = 0;
  78. let orderItemDTOS = [];
  79. list.forEach(item=>{
  80. total += item.quantity*item.price;
  81. orderItemDTOS.push({
  82. cartsId:item.cartsId,
  83. mercProdId:item.mercProdId,
  84. prodAttrId:item.prodAttrId,
  85. count:item.quantity
  86. })
  87. })
  88. this.setData({
  89. prods:list,
  90. totalPrice:formatPrice(total),
  91. orderItemDTOS
  92. })
  93. },
  94. // 修改收货地址
  95. editAddress(){
  96. const pages = getCurrentPages()
  97. const currentPage = pages[pages.length - 1]
  98. if (currentPage.data.returnData) {
  99. let address = currentPage.data.returnData;
  100. // console.log('收到返回参数:', currentPage.data.returnData)
  101. // 清除参数避免重复触发
  102. currentPage.setData({ returnData: null })
  103. this.setData({address})
  104. }else{
  105. this.getAddressList();
  106. }
  107. },
  108. /**
  109. * 生命周期函数--监听页面初次渲染完成
  110. */
  111. onReady() {
  112. },
  113. /**
  114. * 生命周期函数--监听页面显示
  115. */
  116. onShow() {
  117. this.editAddress();
  118. },
  119. /**
  120. * 生命周期函数--监听页面隐藏
  121. */
  122. onHide() {
  123. },
  124. /**
  125. * 生命周期函数--监听页面卸载
  126. */
  127. onUnload() {
  128. },
  129. /**
  130. * 页面相关事件处理函数--监听用户下拉动作
  131. */
  132. onPullDownRefresh() {
  133. },
  134. /**
  135. * 页面上拉触底事件的处理函数
  136. */
  137. onReachBottom() {
  138. },
  139. /**
  140. * 用户点击右上角分享
  141. */
  142. onShareAppMessage() {
  143. }
  144. })