"use client"; import React, { useState, useEffect } from "react"; import { getCookie } from "cookies-next"; import { useRouter } from "next/navigation"; import baseRequest from "@/utils/baseRequest"; import { Toast, Modal } from "antd-mobile"; import { generateSignature } from "@/utils/crypto"; import { JSEncrypt } from "jsencrypt"; export default function Checkout() { const router = useRouter(); //查看主播实名认证情况、可提现钻石数量 const [data, setData] = useState({}); const getData = async () => { const mid = getCookie("mid"); if (!mid) return; try { const base = baseRequest(); //查实名认证情况 const body = { ...base, }; const signature = generateSignature(body); const verificationResponse = await fetch( `/api/hvyogo/query_agree_state?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const verificationData = await verificationResponse.json(); if (verificationData.ret === -1) { Toast.show({ content: verificationData.msg, }); } //查认证信息详情 const body2 = { ...base, }; const signature2 = generateSignature(body2); const detailResponse = await fetch( `/api/hvyogo/worker_find_detail?signature=${signature2}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const detailData = await detailResponse.json(); if (detailData.ret === -1) { Toast.show({ content: detailData.msg, }); } //查可提现钻石数量 const body3 = { ...base, }; const signature3 = generateSignature(body3); const withdrawalResponse = await fetch( `/api/vas/withdraw_page?signature=${signature3}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body3), } ); const withdrawalData = await withdrawalResponse.json(); if (withdrawalData.ret === -1) { Toast.show({ content: withdrawalData.msg, }); return; } setData({ verificationStatus: verificationData.data?.agree_state, detail: detailData.data, withdrawal_diamond: withdrawalData.data.withdraw_diamonds, }); } catch (error) { console.error(error); } }; useEffect(() => { getData(); }, []); const [withdrawalNum, setWithdrawalNum] = useState(""); const [receiptChannel, setReceiptChannel] = useState(10); const [alipayAccount, setAlipayAccount] = useState(""); const [newBankCardNo, setNewBankCardNo] = useState(""); //这是提现钻石的数量 const handleChangeWithdrawalNum = (e) => { let newValue = parseInt(e.target.value, 10); // 确保输入的值在最小值和最大值范围内 if ( newValue >= 0 && newValue <= Math.min(data?.withdrawal_diamond, 200000) ) { setWithdrawalNum(newValue); } else if (isNaN(newValue)) { setWithdrawalNum(0); } else if (newValue > Math.min(data?.withdrawal_diamond, 200000)) { setWithdrawalNum(Math.min(data?.withdrawal_diamond, 200000)); } }; //点击提交申请按钮 const handleSubmit = async () => { // if (!withdrawalNum || withdrawalNum < 1000) { // Toast.show({ // content: "提现最低金额为100元(即1000钻石)", // }); // return; // } if (receiptChannel === 20 && !alipayAccount) { Toast.show({ content: "请填写支付宝账号", }); return; } document.getElementById("comfirm_modal").showModal(); }; //点击二次确认按钮 const [errorMessage, setErrorMessage] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const handleConfirm = async () => { try { setIsSubmitting(true); //对支付宝账号进行RSA加密 const encrypt = new JSEncrypt(); encrypt.setPublicKey(process.env.NEXT_PUBLIC_RSA_KEY); const encryptedAlipayAccount = encrypt.encrypt(alipayAccount); const base = baseRequest(); const body = receiptChannel === 20 ? { receipt_channel: receiptChannel, worker_account: encryptedAlipayAccount, distribute_amount: (withdrawalNum * 10).toString(), ...base, } : { distribute_amount: (withdrawalNum * 10).toString(), ...base, }; const signature = generateSignature(body); const applyResponse = await fetch( `/api/hvyogo/single_distribute?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const applyData = await applyResponse.json(); if (applyData.ret === -1) { setErrorMessage(applyData.msg); setIsSubmitting(false); return; } router.push("/withdrawal/success"); } catch (error) { console.error(error); } finally { setIsSubmitting(false); } }; //修改银行卡账号 const handleEditBankCardNo = async () => { try { setIsSubmitting(true); //对手机号和银行卡号进行rsa加密 const encrypt = new JSEncrypt(); encrypt.setPublicKey(process.env.NEXT_PUBLIC_RSA_KEY); const encryptedWorkerMobile = encrypt.encrypt( data?.detail?.worker_mobile ); const encryptedBankCard = encrypt.encrypt(newBankCardNo); const base = baseRequest(); const body = { worker_mobile: encryptedWorkerMobile, bank_card: encryptedBankCard, receipt_channel: 10, ...base, }; const signature = generateSignature(body); const _response = await fetch( `/api/hvyogo/worker_update?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const _data = await _response.json(); if (_data.ret === -1) { setIsSubmitting(false); return; } await getData(); document.getElementById("edit_bank_card_no_modal").close(); Toast.show({ content: _data.data.status_text, }); } catch (error) { console.error(error); } finally { setIsSubmitting(false); } }; return (

可提现钻石:

{data?.withdrawal_diamond}

(新入帐钻石需等待7日才能提现哦)

兑换比例:10钻石=1RMB

*提现数量

{data?.verificationStatus !== 2 ? (
您还未通过实名认证
) : ( )}

预估实到金额: {withdrawalNum ? ((withdrawalNum / 10) * 0.97).toFixed(2) + "元" : "自动计算"}

*提现方式

setReceiptChannel(10)} className={`${ receiptChannel === 10 ? "border-primary" : "border-[#FFFFFF1A]" } border flex flex-row items-center justify-between cursor-pointer bg-[#FFFFFF1A] rounded-lg px-4 py-2`} >

银行卡

( {data?.detail?.bank_card_no?.replace( /(\d{4})\d+(\d{4})/, "$1****$2" )} )

document.getElementById("edit_bank_card_no_modal").showModal() } className="text-primary text-base font-medium cursor-pointer" > 修改

setReceiptChannel(20)} className={`${ receiptChannel === 20 ? "border-primary" : "border-[#FFFFFF1A]" } border flex flex-row items-center cursor-pointer bg-[#FFFFFF1A] rounded-lg px-4 py-2`} >

支付宝

{receiptChannel === 20 && (data?.verificationStatus !== 2 ? (
您还未通过实名认证
) : ( setAlipayAccount(e.target.value)} className="input input-bordered input-md input-primary w-full" /> ))}

注意事项:

1.需实名认证并绑定收款方式后方可提现;

2.平台将收取提现金额的3%作为提现手续费用,该笔费用将用于为收款人缴纳相关税费;

3.收款账户需与实名认证本人保持一致;

4.单笔最低提现金额为100元(即1,000钻石),单月最高提现金额为95,000元(即950,000钻石);

5.自助提现渠道每日只能提现一次,若有更多提现需求,请联系客服。

{/* 修改银行卡 */}

原银行卡: {data?.detail?.bank_card_no?.replace( /(\d{4})\d+(\d{4})/, "$1****$2" )}

新银行卡:

setNewBankCardNo(e.target.value)} className="input input-bordered input-sm input-primary" />
{/* 确认提现 */}

提现钻石: {withdrawalNum}

预估实到金额: ¥{((withdrawalNum / 10) * 0.97).toFixed(2)}

收款人姓名: {data?.detail?.worker_name}

收款渠道: {receiptChannel === 10 ? "银行卡" : "支付宝"}

收款账号: {receiptChannel === 10 ? data?.detail?.bank_card_no : alipayAccount}

{errorMessage && (

提现失败:{errorMessage}

)}
); }