confirmOrder.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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. },
  56. fail(err) {
  57. console.error('支付失败', err);
  58. wx.showToast({ title: '支付取消', icon: 'none' });
  59. setTimeout(()=>{
  60. wx.redirectTo({
  61. url: '/pages/my/myOrder/myOrder',
  62. })
  63. },3000)
  64. }
  65. });
  66. },
  67. /**
  68. * 生命周期函数--监听页面加载
  69. */
  70. onLoad(options) {
  71. let list = JSON.parse(decodeURIComponent(options.prods));
  72. let total = 0;
  73. let orderItemDTOS = [];
  74. list.forEach(item=>{
  75. total += item.quantity*item.price;
  76. orderItemDTOS.push({
  77. cartsId:item.cartsId,
  78. mercId:item.mercId || item.mercProdId,
  79. prodId:item.id,
  80. prodAttrId:item.prodAttrId,
  81. count:item.quantity
  82. })
  83. })
  84. this.setData({
  85. prods:list,
  86. totalPrice:formatPrice(total),
  87. orderItemDTOS
  88. })
  89. },
  90. // 修改收货地址
  91. editAddress(){
  92. const pages = getCurrentPages()
  93. const currentPage = pages[pages.length - 1]
  94. if (currentPage.data.returnData) {
  95. let address = currentPage.data.returnData;
  96. // console.log('收到返回参数:', currentPage.data.returnData)
  97. // 清除参数避免重复触发
  98. currentPage.setData({ returnData: null })
  99. this.setData({address})
  100. }else{
  101. this.getAddressList();
  102. }
  103. },
  104. /**
  105. * 生命周期函数--监听页面初次渲染完成
  106. */
  107. onReady() {
  108. },
  109. /**
  110. * 生命周期函数--监听页面显示
  111. */
  112. onShow() {
  113. this.editAddress();
  114. },
  115. /**
  116. * 生命周期函数--监听页面隐藏
  117. */
  118. onHide() {
  119. },
  120. /**
  121. * 生命周期函数--监听页面卸载
  122. */
  123. onUnload() {
  124. },
  125. /**
  126. * 页面相关事件处理函数--监听用户下拉动作
  127. */
  128. onPullDownRefresh() {
  129. },
  130. /**
  131. * 页面上拉触底事件的处理函数
  132. */
  133. onReachBottom() {
  134. },
  135. /**
  136. * 用户点击右上角分享
  137. */
  138. onShareAppMessage() {
  139. }
  140. })