|
@@ -64,6 +64,8 @@ import { definePayTypeList, qrCodePay, walletPay } from './until/payType'
|
|
import { getEnableCodeList, getUnpaidOrder, payOrderSubmit, getOrderPayStatus } from '@/api/common'
|
|
import { getEnableCodeList, getUnpaidOrder, payOrderSubmit, getOrderPayStatus } from '@/api/common'
|
|
import { createTradeOrder } from '@/api/position'
|
|
import { createTradeOrder } from '@/api/position'
|
|
import { useSharedState } from '@/store/sharedState'
|
|
import { useSharedState } from '@/store/sharedState'
|
|
|
|
+import { rechargeOrderCreate } from '@/api/recruit/enterprise/member/points'
|
|
|
|
+
|
|
const emit = defineEmits(['payTypeChange', 'paySuccess'])
|
|
const emit = defineEmits(['payTypeChange', 'paySuccess'])
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
params: {
|
|
params: {
|
|
@@ -86,7 +88,15 @@ const props = defineProps({
|
|
type: String,
|
|
type: String,
|
|
default: ''
|
|
default: ''
|
|
},
|
|
},
|
|
- type: {
|
|
|
|
|
|
+ rechargeInfo: {
|
|
|
|
+ type: Object,
|
|
|
|
+ default: () => {}
|
|
|
|
+ },
|
|
|
|
+ appId: {
|
|
|
|
+ type: Number,
|
|
|
|
+ default: 10 // 10为一般情况下支付,11为充值支付
|
|
|
|
+ },
|
|
|
|
+ orderType: {
|
|
type: Number,
|
|
type: Number,
|
|
default: 2 // 订单类型 0平台订单| 1发布职位订单| 2发布众聘职位订单,示例值(1)
|
|
default: 2 // 订单类型 0平台订单| 1发布职位订单| 2发布众聘职位订单,示例值(1)
|
|
},
|
|
},
|
|
@@ -96,8 +106,8 @@ const loading = ref(true)
|
|
const tip = ref('')
|
|
const tip = ref('')
|
|
|
|
|
|
// 步骤:
|
|
// 步骤:
|
|
-// 1. 获取支付方式类型列表getCodeList
|
|
|
|
-// 2. 创建支付订单(先获取有无创建的,没有就创建)getUnpaidOrderList
|
|
|
|
|
|
+// 1. 获取支付方式类型列表getCodeList (appId不同时数据返回有区别)
|
|
|
|
+// 2. 创建支付订单(先获取有无创建的,没有就创建)getUnpaidOrderList (appId=11时只有创建,没有获取)
|
|
// 3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要绑定支付订单的订单号)
|
|
// 3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要绑定支付订单的订单号)
|
|
|
|
|
|
|
|
|
|
@@ -113,19 +123,27 @@ onUnmounted(() => {
|
|
if (timer.value) clearInterval(timer.value); timer.value = null
|
|
if (timer.value) clearInterval(timer.value); timer.value = null
|
|
})
|
|
})
|
|
const initPayQrCode = async () => { // 生成二维码内容
|
|
const initPayQrCode = async () => { // 生成二维码内容
|
|
- if (!payOrder.value?.id || !payOrder.value.notifyUrl || !payType.value) return
|
|
|
|
- if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
|
|
+ if (!payType.value) return
|
|
try {
|
|
try {
|
|
if (payOrder.value) {
|
|
if (payOrder.value) {
|
|
// 提交支付订单
|
|
// 提交支付订单
|
|
const params = {
|
|
const params = {
|
|
- id: payOrder.value.id, // 支付单编号
|
|
|
|
channelCode: payType.value, // 支付渠道
|
|
channelCode: payType.value, // 支付渠道
|
|
- displayMode: payOrder.value.notifyUrl, // 展示模式 notifyUrl
|
|
|
|
- // returnUrl: location.href, // 支付成功后,支付渠道跳转回当前页;再由当前页,跳转回 {@link returnUrl} 对应的地址
|
|
|
|
|
|
+ // returnUrl: , // 支付成功后,支付渠道跳转回当前页;再由当前页,跳转回 {@link returnUrl} 对应的地址
|
|
|
|
+ }
|
|
|
|
+ if ((props.appId - 0) === 10) { // 众聘
|
|
|
|
+ if (!payOrder.value?.id || !payOrder.value.notifyUrl) return
|
|
|
|
+ params.id = payOrder.value.id // 支付单编号
|
|
|
|
+ params.displayMode = payOrder.value.notifyUrl // 展示模式 notifyUrl
|
|
|
|
+ }
|
|
|
|
+ if ((props.appId - 0) === 11) { // 充值
|
|
|
|
+ if (!payOrder.value?.payOrderId) return
|
|
|
|
+ params.id = payOrder.value.payOrderId // 支付单编号
|
|
}
|
|
}
|
|
const res = await payOrderSubmit(params)
|
|
const res = await payOrderSubmit(params)
|
|
payQrCodeTxt.value = res?.displayContent || '' // 支付二维码
|
|
payQrCodeTxt.value = res?.displayContent || '' // 支付二维码
|
|
|
|
+
|
|
|
|
+ if (timer.value) clearInterval(timer.value); timer.value = null
|
|
timer.value = setInterval(() => { payStatus() }, 1000) // 轮巡查询用户是否支付
|
|
timer.value = setInterval(() => { payStatus() }, 1000) // 轮巡查询用户是否支付
|
|
}
|
|
}
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -138,23 +156,34 @@ const payOrder = ref({})
|
|
let maxCount = 0
|
|
let maxCount = 0
|
|
const getUnpaidOrderList = async () => {
|
|
const getUnpaidOrderList = async () => {
|
|
try {
|
|
try {
|
|
- const data = await getUnpaidOrder({ spuId: props.spuId, type: props.type }) // 获取待支付的订单 (order:业务订单; payOrder:支付订单)
|
|
|
|
- if (!data) {
|
|
|
|
- // 订单超时,重新提交订单
|
|
|
|
- await createTradeOrder({
|
|
|
|
- spuId: props.spuId,
|
|
|
|
- spuName: props.spuName,
|
|
|
|
- price: props.cost,
|
|
|
|
- type: props.type, // 发布众聘职位订单
|
|
|
|
- })
|
|
|
|
- if (maxCount > 3) return // 避免死循环
|
|
|
|
- maxCount++
|
|
|
|
- setTimeout(() => {
|
|
|
|
- getUnpaidOrderList()
|
|
|
|
- }, 1000)
|
|
|
|
|
|
+ if ((props.appId - 0) === 11) {
|
|
|
|
+ // 充值
|
|
|
|
+ if (props.rechargeInfo.payPrice === undefined && props.rechargeInfo.packageId === undefined) return
|
|
|
|
+ const params = {
|
|
|
|
+ payPrice: props.rechargeInfo.payPrice,
|
|
|
|
+ packageId: props.rechargeInfo.id,
|
|
|
|
+ }
|
|
|
|
+ const data = await rechargeOrderCreate(params)
|
|
|
|
+ payOrder.value = data || {}
|
|
|
|
+ } else {
|
|
|
|
+ const data = await getUnpaidOrder({ spuId: props.spuId, type: props.orderType }) // 获取待支付的订单 (order:业务订单; payOrder:支付订单)
|
|
|
|
+ if (!data) {
|
|
|
|
+ // 订单超时,重新提交订单
|
|
|
|
+ await createTradeOrder({
|
|
|
|
+ spuId: props.spuId,
|
|
|
|
+ spuName: props.spuName,
|
|
|
|
+ price: props.cost,
|
|
|
|
+ type: props.orderType, // 发布众聘职位订单
|
|
|
|
+ })
|
|
|
|
+ if (maxCount > 3) return // 避免死循环
|
|
|
|
+ maxCount++
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ getUnpaidOrderList()
|
|
|
|
+ }, 1000)
|
|
|
|
+ }
|
|
|
|
+ //
|
|
|
|
+ payOrder.value = data?.payOrder || null
|
|
}
|
|
}
|
|
- //
|
|
|
|
- payOrder.value = data?.payOrder || null
|
|
|
|
if (isQrCodePay.value) initPayQrCode() // 生成二维码内容
|
|
if (isQrCodePay.value) initPayQrCode() // 生成二维码内容
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.log(error)
|
|
console.log(error)
|
|
@@ -162,7 +191,6 @@ const getUnpaidOrderList = async () => {
|
|
loading.value = false
|
|
loading.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-// getUnpaidOrderList() // getUnpaidOrder
|
|
|
|
|
|
|
|
|
|
|
|
// 支付方式
|
|
// 支付方式
|
|
@@ -184,7 +212,7 @@ const codeList = ref(sharedState.payCodeList || [])
|
|
const getCodeList = async () => {
|
|
const getCodeList = async () => {
|
|
try {
|
|
try {
|
|
if (!codeList.value?.length) {
|
|
if (!codeList.value?.length) {
|
|
- const list = await getEnableCodeList({appId: 10})
|
|
|
|
|
|
+ const list = await getEnableCodeList({appId: props.appId})
|
|
codeList.value = list || []
|
|
codeList.value = list || []
|
|
sharedState.setPayCodeList(codeList.value)
|
|
sharedState.setPayCodeList(codeList.value)
|
|
} else {
|
|
} else {
|
|
@@ -224,13 +252,10 @@ import { useRoute } from 'vue-router'; const route = useRoute()
|
|
import { useRouter } from 'vue-router'; const router = useRouter()
|
|
import { useRouter } from 'vue-router'; const router = useRouter()
|
|
const payStatus = async () => {
|
|
const payStatus = async () => {
|
|
// if (timer.value) clearInterval(timer.value); timer.value = null
|
|
// if (timer.value) clearInterval(timer.value); timer.value = null
|
|
- // setTimeout(() => {
|
|
|
|
- // console.log('fullPath1', route.fullPath)
|
|
|
|
- // console.log('returnUrl2',props.returnUrl)
|
|
|
|
- // debugger
|
|
|
|
|
|
+ // setTimeout(() => { // 测试代码
|
|
// if (route.fullPath === props.returnUrl) router.go(0)
|
|
// if (route.fullPath === props.returnUrl) router.go(0)
|
|
// else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
// else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
- // else emit('paySuccess')
|
|
|
|
|
|
+ // emit('paySuccess')
|
|
// Snackbar.success('付款成功')
|
|
// Snackbar.success('付款成功')
|
|
// }, 2000)
|
|
// }, 2000)
|
|
try {
|
|
try {
|
|
@@ -241,7 +266,7 @@ const payStatus = async () => {
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
if (route.fullPath === props.returnUrl) router.go(0)
|
|
if (route.fullPath === props.returnUrl) router.go(0)
|
|
else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
- else emit('paySuccess')
|
|
|
|
|
|
+ emit('paySuccess')
|
|
Snackbar.success('付款成功')
|
|
Snackbar.success('付款成功')
|
|
}, 1000);
|
|
}, 1000);
|
|
}
|
|
}
|