orderConfirm.js 4.83 KB
/**
 * orderConfirm.js
 *@author dennis
 *@createtime 2018/10/26
 *@description 订单支付确认界面
 */

import orderService from '../orderService'
import {getImgUrl} from '../../../utils';

Page({

  data: {
    payLabel: '待支付:',
    payButton: '去支付',
    protocolLabel: '我已阅读并同意',
    protocolText: '买家协议',
    agreeProtocol: false,
    checkImage: '../../../assets/images/select@2x.png',
    unCheckImage: '../../../assets/images/unselect@2x.png',
  },
  onLoad: function (option) {
    console.log(option)

    this.setData({
      skup: option && option.skup ? option.skup : '',
      product_id: option && option.product_id ? option.product_id : '',
      hasAddress: false
    })

    this.fetchData()
    this.fetchAddress()
  },

  fetchData() {
    let api = new orderService();
    wx.showLoading({
      title: '',
    });
    let params = {
      skup: this.data.skup,
    }
    api.createPaymentInfo(params, () => wx.hideLoading())
      .then(data => {
        if (data) {
          if (data.good && data.good.goodImg) {
            data.good.goodImg = getImgUrl(data.good.goodImg,90,90)
          }
          this.setData(data)
        }
      })
      .catch(error => {
      console.log(error)
      })
  },

  fetchAddress() {
    let api = new orderService().yohoApi()
    wx.showLoading({
      title: '',
    })

    let params = {
    }

    api.buyerGetAddress(params, () => wx.hideLoading())
      .then(data => {
        if (Array.isArray(data)){
          for (let item of data) {
            let index = data.indexOf(item)
            if (item.is_default === 'Y') {
              this.setData({
                address: item,
                hasAddress: true,
              })
              break
            }
            if (index == data.length - 1){
              this.setData({
                address: item,
                hasAddress: true,
              })
            }
          }
        }

      })
      .catch(error => {
        console.log(error)
      })
  },

  submit() {
    if (this.data.agreeProtocol) return

    if (!this.data.hasAddress) {
      wx.showToast({
        title:'请选择地址'
      })
      return
    }

    let addressId = this.data.hasAddress && this.data.address && this.data.address.address_id
    let skup = this.data.skup
    let channelNo = ''

    let api = new orderService()
    wx.showLoading({
      title: '',
    })

    api.buyerSubmit(skup,channelNo,addressId, () => wx.hideLoading())
      .then(data => {
        if (data && data.orderCode) {
          this.prePay(data.orderCode)
        }
      })
      .catch(error => {
        console.log(error)
      })

  },

  prePay(orderCode) {
    this.setData({
      orderCode: orderCode
    })
    // return wx.navigateTo({
    //   url: `./orderSuccess?product_id=${this.data.product_id}&orderCode=${this.data.orderCode}`
    // })

    let api = new orderService()
    wx.showLoading({
      title: '',
    })

    api.prePay(orderCode, () => wx.hideLoading())
      .then(data => {
        if (data && data.prePayData) {
          this.callWxPay(data.prePayData)
        }
      })
      .catch(error => {
        console.log(error)
      })
  },

  callWxPay(data) {
    data.paySign = data.sign;
    data.timeStamp = data.timestamp
    data.nonceStr = data.noncestr
    data.signType = 'MD5'
    data.package = 'prepay_id=' + data.prepayid


    wx.requestPayment({
      ...data,
      success: function (res) {
        wx.navigateTo({
          url: `./orderSuccess?product_id=${this.data.product_id}&orderCode=${this.data.orderCode}`
        })
      },
      fail: function (res) {
        console.log(res)
        if(res.errMsg=='requestPayment:fail cancel'){
          // wx.redirectTo({
          //   url: '../orders/orders'
          // })
        }else{
          wx.showModal({
            content: res.errMsg,
            showCancel: false,
            confirmText: "确定",
            complete: function(res) {
              // wx.redirectTo({
              //   url: '../orders/orders'
              // })
            }
          })
        }
      }
    })
  },

  chooseAddress: function(){
    // var pages = getCurrentPages();
    // var prevPage = pages[pages.length - 2]; //上一个页面
    // prevPage.setData({
    //   address: {
    //
    //   }
    // })
    //
    // wx.navigateBack();
    wx.navigateTo({
      url: '../../userCenter/addressManager/addressManager?currentMode=modeSelect&address_id='+ (this.data.address ? this.data.address.address_id : '')
    })
  },

  selectComplete: function(data) {

    if (data) {
      this.setData({
        address: data,
        hasAddress: true
      })
    }

  },

  checkProtocol: function () {
    this.setData({
      agreeProtocol: !this.data.agreeProtocol
    })
  },

  goProtocol: function () {
    wx.navigateTo({
      url: '../orderProtocol/orderProtocol'
    })
  },


})