石广澎
2024-08-03 1499bacfed2d21cffc75af31ed5c9c67864cc0e4
feat(支付): 获取优惠券
4个文件已修改
150 ■■■■■ 已修改文件
common/api/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/http.interceptor.js 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pay/login.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pay/scanpay.vue 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/api/index.js
@@ -11,18 +11,19 @@
/* 根据shopId获取商铺信息 */
export const queryShopByShopId = (params, config = {}) => http.get(URL +
    '/payfour-merchant/v1/web/aggregatePayAllin/queryShopByShopId', params, config)
/* 获取积分价值 */
export const getScoreWorth = (params, config = {}) => http.get(URL +
    '/payfour-merchant/v1/web/aggregatePayAllin/getScoreWorth', params, config)
/* 静默授权登录 */
export const getOpenIdBase = (params, config = {}) => http.get(URL +
    '/payfour-merchant/v1/web/aggregatePayAllin/getOpenIdBase', params, config = {});
/*统一登录*/
export const userLogin = (params, config = {}) => {
    let path = '/payfour-merchant/v1/web/aggregatePayAllin/getOpenId'
    if(params.platform==5){
    if(params.platform==5){ //支付宝授权
        path = '/payfour-merchant/v1/web/h5PayAli/getUserIdByCode'
    }
    return http.get(URL + path,
@@ -53,5 +54,3 @@
export const getWxOrderInfo = (params, config = {}) => http.post(URL +
    '/payfour-merchant/v1/web/aggregatePayAllin/getWxOrderInfo',
    params, config = {});
common/http.interceptor.js
@@ -3,25 +3,9 @@
    config,
    DEBUG
} from '@/common/config.js';
function appType() {
    let appType = 0
    // #ifdef MP-WEIXIN
    appType = 3 // 微信小程序
    // #endif
    // #ifdef MP-ALIPAY
    appType = 1 // 支付宝小程序
    // #endif
    // #ifdef H5
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        appType = 4; //是微信公众号
    }
    if (ua.match(/AlipayClient/i) == 'alipayclient') {
        appType = 2; //支付宝生活号
    }
    // #endif
    return appType
}
import {
    getPlat
} from 'common/util.js';
module.exports = (vm) => {
    uni.$u.http.setConfig((x) => {
        return x = {
@@ -32,6 +16,7 @@
            timer: null,
            loadingTime: 800, //多少秒无返回再显示loading
            header: {
                'Clientid': '944c6aade52ebbffc015478e6ce51b5a',
                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
                'Access-Control-Allow-Origin': '*'
            }
@@ -45,7 +30,6 @@
        if (TOKEN) {
            x.header[ACCESSTOKEN] = 'Bearer ' + TOKEN;
        }
        x.header['CLIENT-TYPE'] = appType()
        return x;
    }, x => {
        return Promise.reject(x)
@@ -56,16 +40,6 @@
        let res = x.data
        if (res.code == 10000) {
            return res.data;
        } else if (res.code == 401) {
            const cid = uni.getStorageSync('CID')
            uni.removeStorageSync(ACCESSTOKEN)
            vm.$u.toast("授权过期,请重新登录");
            setTimeout(() => {
                uni.reLaunch({
                    url: "/pay/login?cid=" + cid
                })
            }, 800);
            return Promise.reject(res)
        } else if (res.code == 10002) {
            return Promise.reject(res)
        } else {
pay/login.vue
@@ -25,10 +25,9 @@
        return
      }
      redirect_uri = encodeURIComponent(redirect_uri)
      uni.clearStorage()
      if (this.platform == 2) {
        window.location.href =
            `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`
            `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=0#wechat_redirect`
      } else if (this.platform == 5) {
        window.location.href =
            `https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=${config.ali_appid}&scope=auth_base&redirect_uri=${redirect_uri}&state=STATE`
pay/scanpay.vue
@@ -31,16 +31,27 @@
                    </view>
                    <view class="mask" @click="showBord"></view>
                </view>
                <!--      <image v-if="isNew&&(this.payWay == 2&&!UNIONID)" @click="toRegister" class="reg-btn" src="/static/register-btn.png" mode=""></image>-->
                <block v-if="shopInfo.userCouponFlag==0">
          <view class="u-font-26 u-tips-color u-p-t-24">微信搜索或直接点击打开
            <text style="color: #1E8BE0">【冀优邮】</text>
            小程序,享受更多优惠
        <view v-if="payWay==2" class="u-tips-color u-p-t-24">
          <wx-open-launch-weapp id="launch-btn" appid="wx47b3b5ca64bc7d5d" path="pages/index/index">
            <script type="text/wxtag-template">
              <style>
                .txt {
                  font-size: 13px;
                  color: #999
                }
                .btn {
                  font-size: 13px;
                  color: #1E8BE0
                }
              </style>
              <span class="txt">微信搜索或直接点击打开</span>
              <span class="btn">【冀优邮】</span>
              <span class="txt">小程序,享受更多优惠</span>
            </script>
          </wx-open-launch-weapp>
          </view>
        </block>
            </view>
            <block v-if="shopInfo.userCouponFlag==1">
      <block v-if="payWay==2&&shopInfo.userCouponFlag==1">
                <view class="bg-fff u-m-32 u-br-10">
                    <view class="u-flex u-p-24 u-border-bottom">
                        <!-- <u-icon name="coupon-fill" size="60rpx" color="#D31F28"></u-icon> -->
@@ -53,26 +64,9 @@
                            <u-icon class="u-m-l-10" name="arrow-right" color="#999" size="16"></u-icon>
                        </view>
                    </view>
          <view>
            <wx-open-launch-weapp
                id="launch-btn"
                appid="wx47b3b5ca64bc7d5d"
                path="pages/index/index"
            >
              <script type="text/wxtag-template">
                <style>.btn { padding: 12px }</style>
                <button class="btn">打开小程序</button>
              </script>
            </wx-open-launch-weapp>
          </view>
                    <view class="u-font-26 u-tips-color u-p-24">微信搜索或直接点击打开
                        <text style="color: #1E8BE0">【冀优邮】</text>
                        小程序,享受更多优惠
                    </view>
                </view>
            </block>
            <block v-if="shopInfo.userCouponFlag==1&&discount">
      <block v-if="payWay==2&&shopInfo.userCouponFlag==1&&discount">
                <view class="u-m-32 u-br-10 bg-fff">
                    <view class="u-p-24 u-flex u-row-between u-border-bottom">
                        <view class="u-font-32 color-333">抵扣金额</view>
@@ -93,7 +87,7 @@
                <key-bord @changeMoney="changeMoney" :num.sync="money" @close="bordShow = false" @pay="pay"></key-bord>
            </u-popup>
            <!-- 优惠券弹窗 -->
            <u-popup mode="bottom" :closeable="true" :show="couponShow" @close="couponShow = false" :round="10">
      <u-popup v-if="payWay==2" mode="bottom" :closeable="true" :show="couponShow" @close="couponShow = false" :round="10">
                <view class="u-font-32 color-333 u-text-center u-p-t-30">优惠券</view>
                <view v-if="checkCoupon.id" class="choose-coupon">
                    已选择优惠券1张,共抵扣¥{{ parseFloat((checkCoupon.discount / 100).toFixed(2)) }}
@@ -161,11 +155,12 @@
                buyerNote: '',
                showRemark: false,
                UNIONID: null,
                payWay: this.$utils.getPlat(),
      payWay: this.$utils.getPlat(), //2 维信 5支付宝
                cid: '', //码牌id  C扫B静态码时有
        activityQrcodeId: '', //动态收款码  C扫B动态码时有
        shopId: '', //商户id  C扫B动态码时有
                bordShow: false, // 显示键盘
      orderId: '',
                shopInfo: {
                    cusid: '',
                    shopName: '',
@@ -206,6 +201,11 @@
            }
        },
        onLoad(opt) {
    uni.setStorageSync('CID', opt.cid)
    uni.setStorageSync('SHOPID', opt.shopId)
    uni.setStorageSync('SMONEY', opt.smoney)
    uni.setStorageSync('AQCI', opt.activityQrcodeId)
    this.UNIONID = uni.getStorageSync('UNIONID' + this.payWay) || null
            this.isNew = uni.getStorageSync('IS_NEW')
            if (opt.smoney) {
                this.smoney = opt.smoney
@@ -226,9 +226,15 @@
                this.init()
            }
            if (opt.code || opt.auth_code) {
      let params = {
        code: opt.code
      }
                let code = opt.code
      if (this.payWay == 2&&opt.state == 1 ) {
        params.getUserInfo = 1
      }
                if (this.payWay == 5) {
                    code = opt.auth_code
        params.code = opt.auth_code
                }
        const cd = uni.getStorageSync('cd')
        if(code===cd){
@@ -237,9 +243,7 @@
        uni.setStorageSync('cd',code)
                userLogin({
                    platform: this.payWay,
                    params: {
                        code
                    }
        params
                }).then(res => {
                    this.getToken(res)
                })
@@ -247,6 +251,7 @@
        },
        methods: {
    /*关闭页面*/
            clickDone() {
                let browser = navigator.userAgent.toLowerCase();
                if (browser.match(/Alipay/i) == "alipay") {
@@ -273,14 +278,16 @@
                    window.close()
                }
            },
    /*登录*/
            getToken(res) {
                this.token = res.token
                if (res.openid) {
                    uni.setStorageSync('OPENID' + this.payWay, res.token)
        uni.setStorageSync('OPENID' + this.payWay, res.openid)
                }
                if (res.unionid) {
                    uni.setStorageSync('UNIONID' + this.payWay, res.token)
        uni.setStorageSync('UNIONID' + this.payWay, res.unionid)
                }
      this.UNIONID = res.unionid
                uni.setStorageSync(ACCESSTOKEN, res.token)
                uni.setStorageSync('IS_NEW', res.isNew)
                this.isNew = res.isNew
@@ -288,18 +295,14 @@
                    this.showCoupon()
                }
            },
    /*授权unionid*/
            toRegister() {
                if (this.UNIONID) {
                    uni.navigateTo({
                        url: '/pay/register?cid=' + this.cid
                    })
                }
                if (this.payWay == 2) {
                    const redirect_uri = encodeURIComponent(`${config.webURL}/pay/scanpay?cid=${opt.query.cid}`)
        const redirect_uri = encodeURIComponent(`${config.webURL}/pay/scanpay?cid=${this.cid || ''}&shopId=${this.shopId || ''}&activityQrcodeId=${this.activityQrcodeId || ''}&smoney=${this.smoney || ''}`)
        uni.clearStorageSync()
                    window.location.href =
                        `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
            `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.wx_appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect`
                }
            },
            // 更新金额
            changeMoney(str) {
@@ -358,8 +361,9 @@
              debug: false, // 开启调试模式
              appId: res.appId, // 必填,公众号的唯一标识
              timestamp: res.timestamp, // 必填,生成签名的时间戳
              nonceStr: res.nonceStr, // 必填,生成签名的随机串
            nonceStr: res.noncestr, // 必填,生成签名的随机串
              signature: res.signature, // 必填,签名
            jsApiList: ['hideAllNonBaseMenuItem'], // 必填,需要使用的JS接口列表
              openTagList: ['wx-open-launch-weapp'] //可选,需要使用的开放标签列表
            });
            wx.ready(function () {
@@ -370,17 +374,22 @@
            },
            // 获取会员相关信息
            showCoupon() {
      if(this.UNIONID){
      //获取用户优惠券
                queryUseSweepPayCoupon({
                  params: {
                    cusid: this.shopInfo.cusid,
                    cid: this.cid,
            applyPayWayStr: this.payWay,
            cusid: this.shopInfo.id,
                    money: Number(this.money * 100),
                  }
                }).then(res => {
                  this.couponList = res
                  this.couponShow = true
      })
      }else{
        this.toRegister()
      }
            },
            //选择优惠券
            clickCoupon(item) {
@@ -486,15 +495,16 @@
                        // 取消
                        this.closeOrder()
                    } else {
                        this.closeOrder()
                        // 支付失败
          this.closeOrder()
                    }
                });
            },
            closeOrder() {
                closeOrder({
      closeOrder({params:{
                    id: this.orderId,
                }).then(res => {})
      }}).then(res => {
      })
            }
        }
    };