|
@@ -1,11 +1,18 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
+ <van-nav-bar title="订单信息" />
|
|
|
+ <van-card class="my-card" v-for="(orderDetail, index) in orderDetails" :key="index" :num="orderDetail.productNumber"
|
|
|
+ :price="orderDetail.price.toFixed(2)" :title="orderDetail.productName"
|
|
|
+ :thumb="showSugarPhoto(orderDetail.productNo)" />
|
|
|
+ <van-submit-bar :price="amount" button-color="#07c160" button-text="支付" @click="wxPay()" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { onMounted } from "vue";
|
|
|
import { useRoute } from "vue-router";
|
|
|
+import { showFailToast, showSuccessToast, showToast, showDialog } from 'vant';
|
|
|
+import { getOrderBySn, getWxPayParams } from '@/service/popPayment';
|
|
|
+import { onMounted, ref } from "vue";
|
|
|
|
|
|
|
|
|
export default {
|
|
@@ -13,26 +20,105 @@ export default {
|
|
|
|
|
|
setup() {
|
|
|
const route = useRoute();
|
|
|
- console.log(route.query.sn);
|
|
|
const sn = route.query.sn;
|
|
|
- const appId = "wxcd5b1b2636c9f611";
|
|
|
-
|
|
|
- onMounted(() => {
|
|
|
- wxPay();
|
|
|
- });
|
|
|
+ const status = ref(0);
|
|
|
+ const order = ref(null);
|
|
|
+ const orderDetails = ref([]);
|
|
|
+ const amount = ref();
|
|
|
|
|
|
+ // 支付参数
|
|
|
+ const params = {
|
|
|
+ appId: "wxcd5b1b2636c9f611",
|
|
|
+ timeStamp: "",
|
|
|
+ nonceStr: "",
|
|
|
+ package: "",
|
|
|
+ paySign: ""
|
|
|
+ }
|
|
|
|
|
|
+ onMounted(async () => {
|
|
|
+ await getOrder();
|
|
|
+ if (status.value == 1) {
|
|
|
+ showDialog({
|
|
|
+ message: '订单已支付',
|
|
|
+ theme: 'round-button',
|
|
|
+ confirmButtonColor: '#07c160',
|
|
|
+ }).then(() => {
|
|
|
+ if (typeof window.WeixinJSBridge !== 'undefined') {
|
|
|
+ window.WeixinJSBridge.call('closeWindow');
|
|
|
+ } else {
|
|
|
+ window.close();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ await getPayParams();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const getOrder = async () => {
|
|
|
+ const { data } = await getOrderBySn({ sn: sn });
|
|
|
+ if (data.code === '00000') {
|
|
|
+ order.value = data.data;
|
|
|
+ status.value = data.data.status;
|
|
|
+ orderDetails.value = data.data.orderDetails;
|
|
|
+ console.log("order", order.value);
|
|
|
+ console.log("orderDetails", orderDetails.value[0]);
|
|
|
+ amount.value = order.value.price * 100;
|
|
|
+ } else { showFailToast(data.message); }
|
|
|
+ };
|
|
|
+
|
|
|
+ const getPayParams = async () => {
|
|
|
+ const { data } = await getWxPayParams({ sn: sn });
|
|
|
+ if (data.code === '00000') {
|
|
|
+ console.log("data", data);
|
|
|
+ console.log("data.data", data.data);
|
|
|
+ console.log("data.data.timeStamp", data.data.timeStamp);
|
|
|
+ console.log("data.data.nonceStr", data.data.nonceStr);
|
|
|
+ params.timeStamp = data.data.timeStamp;
|
|
|
+ params.nonceStr = data.data.nonceStr;
|
|
|
+ params.package = data.data.packageValue;
|
|
|
+ params.paySign = data.data.paySign;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const showSugarPhoto = (no) => {
|
|
|
+ return require(`../assets/order/spunSugar/goods/${no}.png`);
|
|
|
+ };
|
|
|
const wxPay = () => {
|
|
|
- // 处理回调接口
|
|
|
- const redirectUri = encodeURIComponent('http://szwlh.sunzee.com.cn/PAY-SERVER/tOrder/callBack');
|
|
|
- const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=${sn}&connect_redirect=1#wechat_redirect`;
|
|
|
- console.log(url)
|
|
|
- window.location.replace(url);
|
|
|
+ WeixinJSBridge.invoke(
|
|
|
+ 'getBrandWCPayRequest', {
|
|
|
+ "appId": params.appId, //公众号ID,由商户传入
|
|
|
+ "timeStamp": params.timeStamp, //时间戳,自1970年以来的秒数
|
|
|
+ "nonceStr": params.nonceStr, //随机串
|
|
|
+ "package": params.package,
|
|
|
+ "signType": "RSA", //微信签名方式:
|
|
|
+ "paySign": params.paySign //微信签名
|
|
|
+ },
|
|
|
+ function (res) {
|
|
|
+ if (res.err_msg == "get_brand_wcpay_request:ok") {
|
|
|
+ console.log("支付成功");
|
|
|
+ showSuccessToast('支付成功');
|
|
|
+ } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
|
|
|
+ console.log("取消支付");
|
|
|
+ showToast('取消支付');
|
|
|
+ } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
|
|
|
+ console.log("支付失败");
|
|
|
+ showFailToast('支付失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
};
|
|
|
-
|
|
|
return {
|
|
|
- wxPay
|
|
|
+ wxPay,
|
|
|
+ getOrder,
|
|
|
+ orderDetails,
|
|
|
+ showSugarPhoto,
|
|
|
+ // price,
|
|
|
+ amount
|
|
|
};
|
|
|
}
|
|
|
};
|
|
|
-</script>
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+.van-image__img {
|
|
|
+ object-fit: contain !important;
|
|
|
+}
|
|
|
+</style>
|