12
This commit is contained in:
parent
da43bb5429
commit
46d17fb6e6
@ -39,35 +39,17 @@ async function handleSubmit(e) {
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
|
|
||||||
// 保存当前时间戳,用于检测是否需要手动跳转
|
const { error } = await stripe.confirmPayment({
|
||||||
const paymentStartTime = Date.now()
|
|
||||||
|
|
||||||
// 检测是否为Android设备
|
|
||||||
const isAndroid = /android/i.test(navigator.userAgent)
|
|
||||||
|
|
||||||
const { error, paymentIntent } = await stripe.confirmPayment({
|
|
||||||
elements: elements.value,
|
elements: elements.value,
|
||||||
confirmParams: {
|
confirmParams: {
|
||||||
return_url: `${baseURL}/payment/result?orderNo=${payUid.value}`,
|
return_url: `${baseURL}/payment/result?orderNo=${payUid.value}`,
|
||||||
},
|
},
|
||||||
redirect: 'if_required',
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if (error) {
|
if (error.type === "card_error" || error.type === "validation_error") {
|
||||||
if (error.type === "card_error" || error.type === "validation_error") {
|
showMessage(error.message)
|
||||||
showMessage(error.message)
|
} else {
|
||||||
} else {
|
showMessage("An unexpected error occurred.")
|
||||||
showMessage("An unexpected error occurred.")
|
|
||||||
}
|
|
||||||
} else if (paymentIntent && paymentIntent.status === 'succeeded') {
|
|
||||||
// 支付成功但没有自动跳转,手动跳转到结果页面
|
|
||||||
window.location.href = `${baseURL}/payment/result?orderNo=${payUid.value}`
|
|
||||||
return
|
|
||||||
} else if (isAndroid) {
|
|
||||||
// 针对Android设备,添加额外检查
|
|
||||||
if (document.getElementById('payment-form')) {
|
|
||||||
window.location.href = `${baseURL}/payment/result?orderNo=${payUid.value}`
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
@ -5,7 +5,7 @@ import {goodStore} from "~/stores/goods/index.js";
|
|||||||
import { showLoadingToast ,closeToast} from 'vant';
|
import { showLoadingToast ,closeToast} from 'vant';
|
||||||
import {authStore} from "~/stores/auth/index.js";
|
import {authStore} from "~/stores/auth/index.js";
|
||||||
import {message} from "~/components/x-message/useMessage.js";
|
import {message} from "~/components/x-message/useMessage.js";
|
||||||
const {checkoutSessionUrl,payment,payUid}= authStore()
|
const {checkoutSessionUrl,payment,payUid,openRefreshResults}= authStore()
|
||||||
const payStatus=ref(0)
|
const payStatus=ref(0)
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
i18n: 'payment.title'
|
i18n: 'payment.title'
|
||||||
@ -40,11 +40,14 @@ const confirmPay=async ()=>{
|
|||||||
})
|
})
|
||||||
console.log('res',res);
|
console.log('res',res);
|
||||||
if (res.status===0){
|
if (res.status===0){
|
||||||
|
|
||||||
// if (res.status===0){
|
// if (res.status===0){
|
||||||
// window.location.href=res.data.checkoutSessionUrl
|
// window.location.href=res.data.checkoutSessionUrl
|
||||||
// }
|
// }
|
||||||
|
|
||||||
checkoutSessionUrl.value=res.data.checkoutSessionUrl
|
checkoutSessionUrl.value=res.data.checkoutSessionUrl
|
||||||
payUid.value=res.data.payUid
|
payUid.value=res.data.payUid
|
||||||
|
openRefreshResults()
|
||||||
router.push('/payment/checkoutPage')
|
router.push('/payment/checkoutPage')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
import { createGlobalState,useLocalStorage } from '@vueuse/core'
|
import { createGlobalState,useLocalStorage } from '@vueuse/core'
|
||||||
|
import { WebSocketClient } from '@/utils/websocket'
|
||||||
|
import {message} from "~/components/x-message/useMessage.js";
|
||||||
|
|
||||||
export const authStore = createGlobalState(() => {
|
export const authStore = createGlobalState(() => {
|
||||||
const token=useLocalStorage('token','')
|
const token=useLocalStorage('token','')
|
||||||
const RefreshToken=useLocalStorage('RefreshToken','')
|
const RefreshToken=useLocalStorage('RefreshToken','')
|
||||||
@ -12,8 +15,29 @@ export const authStore = createGlobalState(() => {
|
|||||||
buyUid:'',
|
buyUid:'',
|
||||||
auctionArtworkUuid:''
|
auctionArtworkUuid:''
|
||||||
})
|
})
|
||||||
|
const router=useRouter()
|
||||||
|
const config = useRuntimeConfig()
|
||||||
const payUid=useLocalStorage('payUid','')
|
const payUid=useLocalStorage('payUid','')
|
||||||
|
const openRefreshResults=()=>{
|
||||||
|
const wsClient = new WebSocketClient(
|
||||||
|
config.public.NUXT_PUBLIC_SOCKET_URL,
|
||||||
|
token.value
|
||||||
|
)
|
||||||
|
const ws = wsClient.connect('/api/v1/m/auction/live',{
|
||||||
|
payUid:payUid.value
|
||||||
|
})
|
||||||
|
ws.onMessage((data) => {
|
||||||
|
router.push({
|
||||||
|
path:'/payment/result',
|
||||||
|
query:{
|
||||||
|
orderNo:payUid.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
openRefreshResults,
|
||||||
payUid,
|
payUid,
|
||||||
selectedZone,
|
selectedZone,
|
||||||
payment,
|
payment,
|
||||||
|
Loading…
Reference in New Issue
Block a user