H5支持微信支付
This commit is contained in:
@ -141,6 +141,7 @@ export function handleOrderPayResults(data, type) {
|
|||||||
break;
|
break;
|
||||||
// APP支付
|
// APP支付
|
||||||
case "WECHAT_APP_PAY":
|
case "WECHAT_APP_PAY":
|
||||||
|
|
||||||
weappPay(data.result.jsConfig).finally(() => {
|
weappPay(data.result.jsConfig).finally(() => {
|
||||||
goOrderDetails(data.result.orderId, type)
|
goOrderDetails(data.result.orderId, type)
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,8 +1,38 @@
|
|||||||
import { getProvider } from "@/utils";
|
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) => {
|
export const weappPay = (option) => {
|
||||||
return new Promise((resolve, reject) => {
|
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 => {
|
// getProvider('payment').then(provider => {
|
||||||
let orderInfo = {
|
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 STATE_KEY = "wx_authorize_state";
|
||||||
const WX_AUTH = "wx_auth";
|
const WX_AUTH = "wx_auth";
|
||||||
const BACK_URL = "login_back_url";
|
const BACK_URL = "login_back_url";
|
||||||
@ -178,6 +201,7 @@ function toPromise(fn, config = {}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function pay(config) {
|
export function pay(config) {
|
||||||
|
console.log(instance)
|
||||||
return toPromise(instance.chooseWXPay, config);
|
return toPromise(instance.chooseWXPay, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
main.js
2
main.js
@ -104,7 +104,7 @@ import { isWeixin } from '@/utils'
|
|||||||
if (isWeixin()) {
|
if (isWeixin()) {
|
||||||
Vue.prototype.$deviceType = 'weixin'
|
Vue.prototype.$deviceType = 'weixin'
|
||||||
store.commit('updateDevicetype', 'weixin')
|
store.commit('updateDevicetype', 'weixin')
|
||||||
// wechat().then(() => oAuth());
|
wechat().then(() => oAuth());
|
||||||
} else {
|
} else {
|
||||||
Vue.prototype.$deviceType = 'weixinh5'
|
Vue.prototype.$deviceType = 'weixinh5'
|
||||||
store.commit('updateDevicetype', 'weixinh5')
|
store.commit('updateDevicetype', 'weixinh5')
|
||||||
|
|||||||
@ -157,6 +157,13 @@
|
|||||||
},
|
},
|
||||||
"router" : {
|
"router" : {
|
||||||
"mode" : "history"
|
"mode" : "history"
|
||||||
|
},
|
||||||
|
"sdkConfigs" : {
|
||||||
|
"maps" : {
|
||||||
|
"qqmap" : {
|
||||||
|
"key" : ""
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -197,16 +197,16 @@ import {
|
|||||||
getProductDetail,
|
getProductDetail,
|
||||||
postCartAdd,
|
postCartAdd,
|
||||||
getCartCount,
|
getCartCount,
|
||||||
getProductCode
|
getProductCode,
|
||||||
} from "@/api/store";
|
} from "@/api/store";
|
||||||
import {
|
import {
|
||||||
getCoupon,
|
getCoupon,
|
||||||
getCollectAdd,
|
getCollectAdd,
|
||||||
getCollectDel,
|
getCollectDel,
|
||||||
getUserInfo
|
getUserInfo,
|
||||||
} from "@/api/user";
|
} from "@/api/user";
|
||||||
import { isWeixin, PosterCanvas, handleQrCode } from "@/utils";
|
import { isWeixin, PosterCanvas, handleQrCode } from "@/utils";
|
||||||
// import { wechatEvevt } from "@/libs/wechat";
|
import { wechatEvevt } from "@/libs/wechat";
|
||||||
import { imageBase64 } from "@/api/public";
|
import { imageBase64 } from "@/api/public";
|
||||||
import { mapGetters } from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ export default {
|
|||||||
CouponPop,
|
CouponPop,
|
||||||
ProductWindow,
|
ProductWindow,
|
||||||
StorePoster,
|
StorePoster,
|
||||||
ShareInfo
|
ShareInfo,
|
||||||
},
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
@ -232,18 +232,18 @@ export default {
|
|||||||
image: "",
|
image: "",
|
||||||
title: "",
|
title: "",
|
||||||
price: "",
|
price: "",
|
||||||
code: ""
|
code: "",
|
||||||
},
|
},
|
||||||
posterImageStatus: false,
|
posterImageStatus: false,
|
||||||
animated: false,
|
animated: false,
|
||||||
coupon: {
|
coupon: {
|
||||||
coupon: false,
|
coupon: false,
|
||||||
list: []
|
list: [],
|
||||||
},
|
},
|
||||||
attr: {
|
attr: {
|
||||||
cartAttr: false,
|
cartAttr: false,
|
||||||
productAttr: [],
|
productAttr: [],
|
||||||
productSelect: {}
|
productSelect: {},
|
||||||
},
|
},
|
||||||
isOpen: false, //是否打开属性组件
|
isOpen: false, //是否打开属性组件
|
||||||
productValue: [],
|
productValue: [],
|
||||||
@ -263,19 +263,19 @@ export default {
|
|||||||
swiperRecommend: {
|
swiperRecommend: {
|
||||||
pagination: {
|
pagination: {
|
||||||
el: ".swiper-pagination",
|
el: ".swiper-pagination",
|
||||||
clickable: true
|
clickable: true,
|
||||||
},
|
},
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
loop: false,
|
loop: false,
|
||||||
speed: 1000,
|
speed: 1000,
|
||||||
observer: true,
|
observer: true,
|
||||||
observeParents: true
|
observeParents: true,
|
||||||
},
|
},
|
||||||
goodList: [],
|
goodList: [],
|
||||||
systemStore: {},
|
systemStore: {},
|
||||||
qqmapsdk: null,
|
qqmapsdk: null,
|
||||||
productConClass: "product-con",
|
productConClass: "product-con",
|
||||||
tempName: "全国包邮"
|
tempName: "全国包邮",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: mapGetters(["isLogin", "location"]),
|
computed: mapGetters(["isLogin", "location"]),
|
||||||
@ -287,6 +287,7 @@ export default {
|
|||||||
this.id = this._route.query.id;
|
this.id = this._route.query.id;
|
||||||
}
|
}
|
||||||
this.productCon();
|
this.productCon();
|
||||||
|
this.setOpenShare();
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
posterImageStatus(status) {
|
posterImageStatus(status) {
|
||||||
@ -296,7 +297,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
this.productConClass = "product-con";
|
this.productConClass = "product-con";
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
goShoppingCart() {
|
goShoppingCart() {
|
||||||
@ -304,26 +305,26 @@ export default {
|
|||||||
},
|
},
|
||||||
goCustomerList() {
|
goCustomerList() {
|
||||||
this.$yrouter.push({
|
this.$yrouter.push({
|
||||||
path: "/pages/user/CustomerList/index"
|
path: "/pages/user/CustomerList/index",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
goStoreList() {
|
goStoreList() {
|
||||||
this.$yrouter.push({
|
this.$yrouter.push({
|
||||||
path: "/pages/shop/StoreList/index"
|
path: "/pages/shop/StoreList/index",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
goEvaluateList(id) {
|
goEvaluateList(id) {
|
||||||
this.$yrouter.push({
|
this.$yrouter.push({
|
||||||
path: "/pages/shop/EvaluateList/index",
|
path: "/pages/shop/EvaluateList/index",
|
||||||
query: {
|
query: {
|
||||||
id
|
id,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
showChang: function (data) {
|
showChang: function (data) {
|
||||||
this.$yrouter.push({
|
this.$yrouter.push({
|
||||||
path: "/pages/map/index",
|
path: "/pages/map/index",
|
||||||
query: data
|
query: data,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
updateTitle() {
|
updateTitle() {
|
||||||
@ -335,7 +336,7 @@ export default {
|
|||||||
},
|
},
|
||||||
shareCode: function () {
|
shareCode: function () {
|
||||||
var that = this;
|
var that = this;
|
||||||
getProductCode(that.id).then(res => {
|
getProductCode(that.id).then((res) => {
|
||||||
that.posterData.code = res.data.code;
|
that.posterData.code = res.data.code;
|
||||||
that.listenerActionSheet();
|
that.listenerActionSheet();
|
||||||
});
|
});
|
||||||
@ -353,7 +354,7 @@ export default {
|
|||||||
}
|
}
|
||||||
uni.showLoading({ title: "加载中", mask: true });
|
uni.showLoading({ title: "加载中", mask: true });
|
||||||
getProductDetail(that.id, from)
|
getProductDetail(that.id, from)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
res.data.storeInfo.description = res.data.storeInfo.description.replace(
|
res.data.storeInfo.description = res.data.storeInfo.description.replace(
|
||||||
/\<img/gi,
|
/\<img/gi,
|
||||||
'<img style="max-width:100%;height:auto;"'
|
'<img style="max-width:100%;height:auto;"'
|
||||||
@ -385,7 +386,7 @@ export default {
|
|||||||
var list = good_list.slice(i * 6, 6);
|
var list = good_list.slice(i * 6, 6);
|
||||||
if (list.length)
|
if (list.length)
|
||||||
goodArray.push({
|
goodArray.push({
|
||||||
list: list
|
list: list,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
that.mapKay = res.data.mapKay;
|
that.mapKay = res.data.mapKay;
|
||||||
@ -394,12 +395,12 @@ export default {
|
|||||||
that.DefaultSelect();
|
that.DefaultSelect();
|
||||||
that.getCartCount();
|
that.getCartCount();
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch((err) => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title:
|
title:
|
||||||
err.msg || err.response.data.msg || err.response.data.message,
|
err.msg || err.response.data.msg || err.response.data.message,
|
||||||
icon: "none",
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@ -521,9 +522,9 @@ export default {
|
|||||||
let that = this,
|
let that = this,
|
||||||
q = {
|
q = {
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 20
|
limit: 20,
|
||||||
};
|
};
|
||||||
getCoupon(q).then(res => {
|
getCoupon(q).then((res) => {
|
||||||
that.$set(that, "couponList", res.data || []);
|
that.$set(that, "couponList", res.data || []);
|
||||||
that.$set(that.coupon, "list", res.data);
|
that.$set(that.coupon, "list", res.data);
|
||||||
});
|
});
|
||||||
@ -607,7 +608,7 @@ export default {
|
|||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "产品库存不足,请选择其它",
|
title: "产品库存不足,请选择其它",
|
||||||
icon: "none",
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -618,7 +619,7 @@ export default {
|
|||||||
uniqueId:
|
uniqueId:
|
||||||
that.attr.productSelect !== undefined
|
that.attr.productSelect !== undefined
|
||||||
? that.attr.productSelect.unique
|
? that.attr.productSelect.unique
|
||||||
: ""
|
: "",
|
||||||
};
|
};
|
||||||
postCartAdd(q)
|
postCartAdd(q)
|
||||||
.then(function (res) {
|
.then(function (res) {
|
||||||
@ -628,8 +629,8 @@ export default {
|
|||||||
that.$yrouter.push({
|
that.$yrouter.push({
|
||||||
path: "/pages/order/OrderSubmission/index",
|
path: "/pages/order/OrderSubmission/index",
|
||||||
query: {
|
query: {
|
||||||
id: res.data.cartId
|
id: res.data.cartId,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
@ -638,16 +639,16 @@ export default {
|
|||||||
duration: 2000,
|
duration: 2000,
|
||||||
complete: () => {
|
complete: () => {
|
||||||
that.getCartCount(true);
|
that.getCartCount(true);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch((error) => {
|
||||||
that.isOpen = false;
|
that.isOpen = false;
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: error.response.data.msg,
|
title: error.response.data.msg,
|
||||||
icon: "none",
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -657,8 +658,8 @@ export default {
|
|||||||
const isLogin = that.isLogin;
|
const isLogin = that.isLogin;
|
||||||
if (isLogin) {
|
if (isLogin) {
|
||||||
getCartCount({
|
getCartCount({
|
||||||
numType: 0
|
numType: 0,
|
||||||
}).then(res => {
|
}).then((res) => {
|
||||||
that.CartCount = res.data.count;
|
that.CartCount = res.data.count;
|
||||||
//加入购物车后重置属性
|
//加入购物车后重置属性
|
||||||
if (isAnima) {
|
if (isAnima) {
|
||||||
@ -683,8 +684,63 @@ export default {
|
|||||||
},
|
},
|
||||||
listenerActionClose: function () {
|
listenerActionClose: function () {
|
||||||
this.posters = false;
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -150,15 +150,20 @@ export default {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "已取消绑定",
|
title: "操作成功",
|
||||||
icon: "none",
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000
|
||||||
});
|
});
|
||||||
|
// uni.showToast({
|
||||||
|
// title: "已取消绑定",
|
||||||
|
// icon: "none",
|
||||||
|
// duration: 2000
|
||||||
|
// });
|
||||||
// that.$yrouter.replace({
|
// that.$yrouter.replace({
|
||||||
// path: "/pages/user/PersonalData/index"
|
// path: "/pages/user/PersonalData/index"
|
||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
that.$yrouter.go(-1);
|
that.$yrouter.back();
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
// import MpvueRouterPatch from 'mpvue-router-patch'
|
// import MpvueRouterPatch from 'mpvue-router-patch'
|
||||||
// Vue.use(MpvueRouterPatch)
|
// Vue.use(MpvueRouterPatch)
|
||||||
import {
|
import {
|
||||||
wxappAuth,
|
wxappAuth,
|
||||||
getUserInfo
|
getUserInfo
|
||||||
} from "@/api/user";
|
} from "@/api/user";
|
||||||
import store from "../store";
|
import store from "@/store";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import cookie from "@/utils/store/cookie";
|
import cookie from "@/utils/store/cookie";
|
||||||
import stringify from "@/utils/querystring";
|
import stringify from "@/utils/querystring";
|
||||||
@ -174,7 +175,7 @@ export const login = () => {
|
|||||||
location.replace("/pages/home/index");
|
location.replace("/pages/home/index");
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
wechat().then(() => oAuth());
|
// wechat().then(() => oAuth());
|
||||||
}
|
}
|
||||||
// if (!code) {
|
// if (!code) {
|
||||||
// toAuth("wxc061dee8806ff712")
|
// toAuth("wxc061dee8806ff712")
|
||||||
|
|||||||
Reference in New Issue
Block a user