Backend: - Parse EasyPay `payurl2` field, prefer H5 link on mobile - Add `device=mobile` to EasyPay submit.php (popup) mode - Expand isMobile detection keywords (add ipad/ipod) Frontend: - Add `isMobileDevice()` utility (userAgentData + UA regex) - Mobile + pay_url: direct redirect instead of QR/popup - Popup blocked fallback: auto-redirect when window.open fails - Stripe WeChat Pay: dynamic client param (mobile_web vs web)
12 lines
488 B
TypeScript
12 lines
488 B
TypeScript
/**
|
|
* Detect whether the current device is mobile.
|
|
* Uses navigator.userAgentData (modern API) with UA regex fallback.
|
|
*/
|
|
export function isMobileDevice(): boolean {
|
|
const nav = navigator as unknown as Record<string, unknown>
|
|
if (nav.userAgentData && typeof (nav.userAgentData as Record<string, unknown>).mobile === 'boolean') {
|
|
return (nav.userAgentData as Record<string, unknown>).mobile as boolean
|
|
}
|
|
return /Android|iPhone|iPad|iPod|Mobile/i.test(navigator.userAgent)
|
|
}
|