diff --git a/libs/order.js b/libs/order.js index 797fe50..14598e5 100644 --- a/libs/order.js +++ b/libs/order.js @@ -141,6 +141,7 @@ export function handleOrderPayResults(data, type) { break; // APP支付 case "WECHAT_APP_PAY": + weappPay(data.result.jsConfig).finally(() => { goOrderDetails(data.result.orderId, type) }); diff --git a/libs/wechat.js b/libs/wechat.js index 0fd4b9f..59f1a2c 100644 --- a/libs/wechat.js +++ b/libs/wechat.js @@ -1,8 +1,38 @@ import { getProvider } from "@/utils"; +import WechatJSSDK from "wechat-jssdk/dist/client.umd"; +import { getWechatConfig, wechatAuth } from "@/api/public"; +import { parseQuery } from "@/utils"; +import cookie from "@/utils/store/cookie"; +import store from "@/store"; +import dayjs from "dayjs"; // 支付模块 export const weappPay = (option) => { return new Promise((resolve, reject) => { + console.log(option) + if (store.state.$deviceType == 'weixinh5') { + setTimeout(() => { + location.href = option.mweb_url; + }, 100); + resolve() + return + } + if (store.state.$deviceType == 'weixin') { + pay(option).then(() => { + uni.showToast({ + title: '支付成功', icon: 'success', duration: 5000, + }); + resolve() + }) + .finally(res => { + //if(typeof(res) == "undefined") return + }) + .catch(function () { + uni.showToast({ title: '支付失败', icon: 'none', duration: 5000 }); + reject() + }); + return + } // 吊起微信支付 // getProvider('payment').then(provider => { let orderInfo = { @@ -44,13 +74,6 @@ export const weappPay = (option) => { -import WechatJSSDK from "wechat-jssdk/dist/client.umd"; -import { getWechatConfig, wechatAuth } from "@/api/public"; -import { parseQuery } from "@/utils"; -import cookie from "@/utils/store/cookie"; -import store from "@/store"; -import dayjs from "dayjs"; - const STATE_KEY = "wx_authorize_state"; const WX_AUTH = "wx_auth"; const BACK_URL = "login_back_url"; @@ -178,6 +201,7 @@ function toPromise(fn, config = {}) { } export function pay(config) { + console.log(instance) return toPromise(instance.chooseWXPay, config); } diff --git a/main.js b/main.js index 93c8e68..07fe639 100644 --- a/main.js +++ b/main.js @@ -104,7 +104,7 @@ import { isWeixin } from '@/utils' if (isWeixin()) { Vue.prototype.$deviceType = 'weixin' store.commit('updateDevicetype', 'weixin') - // wechat().then(() => oAuth()); + wechat().then(() => oAuth()); } else { Vue.prototype.$deviceType = 'weixinh5' store.commit('updateDevicetype', 'weixinh5') diff --git a/manifest.json b/manifest.json index 05cfd3e..6bbb11d 100644 --- a/manifest.json +++ b/manifest.json @@ -157,6 +157,13 @@ }, "router" : { "mode" : "history" + }, + "sdkConfigs" : { + "maps" : { + "qqmap" : { + "key" : "" + } + } } } } diff --git a/pages/shop/GoodsCon/index.vue b/pages/shop/GoodsCon/index.vue index ccb5059..5c68e9c 100644 --- a/pages/shop/GoodsCon/index.vue +++ b/pages/shop/GoodsCon/index.vue @@ -197,16 +197,16 @@ import { getProductDetail, postCartAdd, getCartCount, - getProductCode + getProductCode, } from "@/api/store"; import { getCoupon, getCollectAdd, getCollectDel, - getUserInfo + getUserInfo, } from "@/api/user"; import { isWeixin, PosterCanvas, handleQrCode } from "@/utils"; -// import { wechatEvevt } from "@/libs/wechat"; +import { wechatEvevt } from "@/libs/wechat"; import { imageBase64 } from "@/api/public"; import { mapGetters } from "vuex"; @@ -220,9 +220,9 @@ export default { CouponPop, ProductWindow, StorePoster, - ShareInfo + ShareInfo, }, - data: function() { + data: function () { return { shareInfoStatus: false, weixinStatus: false, @@ -232,18 +232,18 @@ export default { image: "", title: "", price: "", - code: "" + code: "", }, posterImageStatus: false, animated: false, coupon: { coupon: false, - list: [] + list: [], }, attr: { cartAttr: false, productAttr: [], - productSelect: {} + productSelect: {}, }, isOpen: false, //是否打开属性组件 productValue: [], @@ -263,23 +263,23 @@ export default { swiperRecommend: { pagination: { el: ".swiper-pagination", - clickable: true + clickable: true, }, autoplay: false, loop: false, speed: 1000, observer: true, - observeParents: true + observeParents: true, }, goodList: [], systemStore: {}, qqmapsdk: null, productConClass: "product-con", - tempName: "全国包邮" + tempName: "全国包邮", }; }, computed: mapGetters(["isLogin", "location"]), - mounted: function() { + mounted: function () { let url = handleQrCode(); if (url && url.productId) { this.id = url.productId; @@ -287,6 +287,7 @@ export default { this.id = this._route.query.id; } this.productCon(); + this.setOpenShare(); }, watch: { posterImageStatus(status) { @@ -296,7 +297,7 @@ export default { } else { this.productConClass = "product-con"; } - } + }, }, methods: { goShoppingCart() { @@ -304,48 +305,48 @@ export default { }, goCustomerList() { this.$yrouter.push({ - path: "/pages/user/CustomerList/index" + path: "/pages/user/CustomerList/index", }); }, goStoreList() { this.$yrouter.push({ - path: "/pages/shop/StoreList/index" + path: "/pages/shop/StoreList/index", }); }, goEvaluateList(id) { this.$yrouter.push({ path: "/pages/shop/EvaluateList/index", query: { - id - } + id, + }, }); }, - showChang: function(data) { + showChang: function (data) { this.$yrouter.push({ path: "/pages/map/index", - query: data + query: data, }); }, updateTitle() { // document.title = this.storeInfo.storeName || this.$yroute.meta.title; }, - setShareInfoStatus: function() { + setShareInfoStatus: function () { this.shareInfoStatus = !this.shareInfoStatus; this.posters = false; }, - shareCode: function() { + shareCode: function () { var that = this; - getProductCode(that.id).then(res => { + getProductCode(that.id).then((res) => { that.posterData.code = res.data.code; that.listenerActionSheet(); }); }, - setPosterImageStatus: function() { + setPosterImageStatus: function () { this.posterImageStatus = !this.posterImageStatus; this.posters = false; }, //产品详情接口; - productCon: function() { + productCon: function () { let that = this; let from = this.location; if (this.$deviceType == "app") { @@ -353,7 +354,7 @@ export default { } uni.showLoading({ title: "加载中", mask: true }); getProductDetail(that.id, from) - .then(res => { + .then((res) => { res.data.storeInfo.description = res.data.storeInfo.description.replace( /\ { + .catch((err) => { uni.showToast({ title: err.msg || err.response.data.msg || err.response.data.message, icon: "none", - duration: 2000 + duration: 2000, }); }) .finally(() => { @@ -407,7 +408,7 @@ export default { }); }, //默认选中属性; - DefaultSelect: function() { + DefaultSelect: function () { let productAttr = this.attr.productAttr; let value = []; for (let i = 0; i < productAttr.length; i++) { @@ -462,7 +463,7 @@ export default { } }, //购物车; - ChangeCartNum: function(changeValue) { + ChangeCartNum: function (changeValue) { //changeValue:是否 加|减 //获取当前变动属性 let productSelect = this.productValue[this.attrValue]; @@ -495,52 +496,52 @@ export default { } }, //将父级向子集多次传送的函数合二为一; - changeFun: function(opt) { + changeFun: function (opt) { if (typeof opt !== "object") opt = {}; let action = opt.action || ""; let value = opt.value === undefined ? "" : opt.value; this[action] && this[action](value); }, //打开优惠券插件; - couponTap: function() { + couponTap: function () { let that = this; that.coupons(); that.coupon.coupon = true; }, - changecoupon: function(msg) { + changecoupon: function (msg) { this.coupon.coupon = msg; this.coupons(); }, - currentcoupon: function(res) { + currentcoupon: function (res) { let that = this; that.coupon.coupon = false; that.$set(that.coupon.list[res], "is_use", true); }, //可领取优惠券接口; - coupons: function() { + coupons: function () { let that = this, q = { page: 1, - limit: 20 + limit: 20, }; - getCoupon(q).then(res => { + getCoupon(q).then((res) => { that.$set(that, "couponList", res.data || []); that.$set(that.coupon, "list", res.data); }); }, //打开属性插件; - selecAttrTap: function() { + selecAttrTap: function () { this.attr.cartAttr = true; this.isOpen = true; }, - changeattr: function(msg) { + changeattr: function (msg) { // 修改了规格 console.log(msg); this.attr.cartAttr = msg; this.isOpen = false; }, //选择属性; - ChangeAttr: function(res) { + ChangeAttr: function (res) { // 修改了规格 console.log(res); let productSelect = this.productValue[res.value]; @@ -564,27 +565,27 @@ export default { } }, //收藏商品 - setCollect: function() { + setCollect: function () { let that = this, id = that.storeInfo.id, category = "product"; if (that.storeInfo.userCollect) { - getCollectDel(id, category).then(function() { + getCollectDel(id, category).then(function () { that.storeInfo.userCollect = !that.storeInfo.userCollect; }); } else { - getCollectAdd(id, category).then(function() { + getCollectAdd(id, category).then(function () { that.storeInfo.userCollect = !that.storeInfo.userCollect; }); } }, // 点击加入购物车按钮 - joinCart: function() { + joinCart: function () { //0=加入购物车 this.goCat(0); }, // 加入购物车; - goCat: function(news) { + goCat: function (news) { let that = this, productSelect = that.productValue[this.attrValue]; //打开属性 @@ -607,7 +608,7 @@ export default { uni.showToast({ title: "产品库存不足,请选择其它", icon: "none", - duration: 2000 + duration: 2000, }); return; } @@ -618,18 +619,18 @@ export default { uniqueId: that.attr.productSelect !== undefined ? that.attr.productSelect.unique - : "" + : "", }; postCartAdd(q) - .then(function(res) { + .then(function (res) { that.isOpen = false; that.attr.cartAttr = false; if (news) { that.$yrouter.push({ path: "/pages/order/OrderSubmission/index", query: { - id: res.data.cartId - } + id: res.data.cartId, + }, }); } else { uni.showToast({ @@ -638,32 +639,32 @@ export default { duration: 2000, complete: () => { that.getCartCount(true); - } + }, }); } }) - .catch(error => { + .catch((error) => { that.isOpen = false; uni.showToast({ title: error.response.data.msg, icon: "none", - duration: 2000 + duration: 2000, }); }); }, //获取购物车数量 - getCartCount: function(isAnima) { + getCartCount: function (isAnima) { let that = this; const isLogin = that.isLogin; if (isLogin) { getCartCount({ - numType: 0 - }).then(res => { + numType: 0, + }).then((res) => { that.CartCount = res.data.count; //加入购物车后重置属性 if (isAnima) { that.animated = true; - setTimeout(function() { + setTimeout(function () { that.animated = false; }, 500); } @@ -671,20 +672,75 @@ export default { } }, //立即购买; - tapBuy: function() { + tapBuy: function () { // 1=直接购买 this.goCat(1); }, - listenerActionSheet: function() { + listenerActionSheet: function () { if (isWeixin() === true) { this.weixinStatus = true; } this.posters = true; }, - listenerActionClose: function() { + listenerActionClose: function () { this.posters = false; - } - } + }, + setOpenShare: function () { + var data = this.storeInfo; + var href = location.href; + if (this.$deviceType == "weixin") { + if (this.isLogin) { + getUserInfo().then((res) => { + href = + href.indexOf("?") === -1 + ? href + "?spread=" + res.data.uid + : href + "&spread=" + res.data.uid; + var configAppMessage = { + desc: data.storeInfo, + title: data.storeName, + link: href, + imgUrl: data.image, + }; + wechatEvevt( + ["updateAppMessageShareData", "updateTimelineShareData"], + configAppMessage + ) + .then((res) => { + console.log(res); + }) + .catch((res) => { + console.log(res); + if (res.is_ready) { + res.wx.updateAppMessageShareData(configAppMessage); + res.wx.updateTimelineShareData(configAppMessage); + } + }); + }); + } else { + var configAppMessage = { + desc: data.storeInfo, + title: data.storeName, + link: href, + imgUrl: data.image, + }; + wechatEvevt( + ["updateAppMessageShareData", "updateTimelineShareData"], + configAppMessage + ) + .then((res) => { + console.log(res); + }) + .catch((res) => { + console.log(res); + if (res.is_ready) { + res.wx.updateAppMessageShareData(configAppMessage); + res.wx.updateTimelineShareData(configAppMessage); + } + }); + } + } + }, + }, }; diff --git a/pages/user/address/AddAddress/index.vue b/pages/user/address/AddAddress/index.vue index 2127698..06c97eb 100644 --- a/pages/user/address/AddAddress/index.vue +++ b/pages/user/address/AddAddress/index.vue @@ -150,15 +150,20 @@ export default { }); } else { uni.showToast({ - title: "已取消绑定", + title: "操作成功", icon: "none", duration: 2000 }); + // uni.showToast({ + // title: "已取消绑定", + // icon: "none", + // duration: 2000 + // }); // that.$yrouter.replace({ // path: "/pages/user/PersonalData/index" // }); } - that.$yrouter.go(-1); + that.$yrouter.back(); }); } catch (err) { uni.showToast({ diff --git a/utils/index.js b/utils/index.js index 5f22473..b8de4a1 100644 --- a/utils/index.js +++ b/utils/index.js @@ -1,11 +1,12 @@ import Vue from 'vue' + // import MpvueRouterPatch from 'mpvue-router-patch' // Vue.use(MpvueRouterPatch) import { wxappAuth, getUserInfo } from "@/api/user"; -import store from "../store"; +import store from "@/store"; import dayjs from "dayjs"; import cookie from "@/utils/store/cookie"; import stringify from "@/utils/querystring"; @@ -174,7 +175,7 @@ export const login = () => { location.replace("/pages/home/index"); }); } else { - wechat().then(() => oAuth()); + // wechat().then(() => oAuth()); } // if (!code) { // toAuth("wxc061dee8806ff712")