"use client";

import React, { useState, useEffect } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import { Toast } from "antd-mobile";
import { generateSignature } from "@/utils/crypto";

export default function InWeixin({ params }) {
  const router = useRouter();
  const searchParams = useSearchParams();

  //微信支付jsapi支付参数
  const [jsapiParams, setJsapiParams] = useState();

  //用户支付成功
  const [success, setSuccess] = useState(false);

  //获取微信支付jsapi支付参数
  useEffect(() => {
    const createOrder = async () => {
      //获取code
      const code = searchParams.get("code");

      //构建body
      const strBody = decodeURIComponent(params.body);
      const temBody = JSON.parse(strBody);
      const body = { ...temBody, wechat_auth_code: code };
      const signature = generateSignature(body);

      try {
        const response = await fetch(
          `/api/vas/create_order?signature=${signature}`,
          {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
            },
            body: JSON.stringify(body),
          }
        );
        const data = await response.json();
        if (data.ret === -1) {
          Toast.show({
            content: data.msg,
          });
          return;
        }
        setJsapiParams(data.data.wxpay_jsapi_param_obj);
      } catch (error) {
        console.error(error);
      }
    };
    createOrder();
  }, []);

  //调起收银台
  useEffect(() => {
    if (!jsapiParams) return;
    function onBridgeReady() {
      WeixinJSBridge.invoke(
        "getBrandWCPayRequest",
        {
          appId: jsapiParams.appId, //公众号ID，由商户传入
          timeStamp: jsapiParams.timeStamp, //时间戳，自1970年以来的秒数
          nonceStr: jsapiParams.nonceStr, //随机串
          package: jsapiParams.package,
          signType: jsapiParams.signType, //微信签名方式：
          paySign: jsapiParams.paySign, //微信签名
        },
        function (res) {
          if (res.err_msg == "get_brand_wcpay_request:ok") {
            setSuccess(true);
          }
        }
      );
    }
    if (typeof WeixinJSBridge == "undefined") {
      if (document.addEventListener) {
        document.addEventListener("WeixinJSBridgeReady", onBridgeReady, false);
      } else if (document.attachEvent) {
        document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
        document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
      }
    } else {
      onBridgeReady();
    }
  }, [jsapiParams]);

  return (
    <section className="flex flex-1 flex-col bg-white">
      <div className="flex flex-col">
        <p className="text-center text-black text-lg font-medium py-2">
          微信安全支付
        </p>
        <hr className="bg-secondary" />
      </div>
      <div className="flex flex-col items-center">
        <svg viewBox="0 0 1024 1024" width="100" height="100">
          <path
            d="M512 85.333333a426.666667 426.666667 0 1 0 426.666667 426.666667A426.666667 426.666667 0 0 0 512 85.333333z m42.666667 597.333334a42.666667 42.666667 0 0 1-85.333334 0v-213.333334a42.666667 42.666667 0 0 1 85.333334 0z m-42.666667-298.666667a42.666667 42.666667 0 1 1 42.666667-42.666667 42.666667 42.666667 0 0 1-42.666667 42.666667z"
            fill="#5fc157"
          ></path>
        </svg>
        <p className="text-sm text-[#5fc157]">
          {success ? "充值成功，请返回APP查看结果" : "正在跳转..."}
        </p>
      </div>
    </section>
  );
}
