package com.ruoyi.app.order;

import com.ruoyi.app.utils.ezPay.EzPay;
import com.ruoyi.app.utils.ezPay.EzPayConfig;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * ezPay 调试接口（Swagger 可调）。
 *
 * <p>⚠️ <b>仅排查用</b>：含写死的<b>正式环境</b>商店凭证，且直连正式 ezPay。
 * 上线前必须删除本类，或至少加上权限注解 / 移除写死凭证，避免正式金钥泄露与被滥用。
 *
 * @author ruoyi
 * @date 2026-08-03
 */
@RestController
@RequestMapping("/debug/ezpay")
public class EzPayDebugController extends BaseController {

    @Autowired
    private EzPay ezPay;

    /** 正式环境商店凭证（排查用，写死）。 */
    private static final String MERCHANT_ID = "349957237";
    private static final String HASH_KEY = "diuFXyDzKTHmyu60IBxT9M1qgfoQW5gZ";
    private static final String HASH_IV = "PF6B3JpTiym6zm3C";

    /**
     * 手机条码校验（直连正式环境 inv.ezpay.com.tw）。
     *
     * @param barCode 手机条码，如 /ABC1234（/ + 7 位大写英文/数字）
     * @return isExist=true 条码存在于财政部平台；同时回传 ezPay 原始回应与解密内容便于排查
     */
    @Anonymous
    @GetMapping("/checkBarCode")
    public AjaxResult checkBarCode(@RequestParam String barCode) throws Exception {
        EzPayConfig cfg = new EzPayConfig(MERCHANT_ID, HASH_KEY, HASH_IV);
        return AjaxResult.success(ezPay.checkBarCodeDetail(EzPay.BASE_PROD, cfg, barCode));
    }
}
