package com.fs.tzBankPay;

import com.fs.tzBankPay.TzBankService.TzBankServiceImpl.TzBankServiceImpl;
import com.fs.tzBankPay.doman.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;


public class RequestController {
    @Autowired
    private TzBankServiceImpl service;
    /**
     * 请求并获得响应报文
     * @return
     * @throws Exception
     */
    @GetMapping (value = "/createOrder")
    public TzBankResult<PayCreateOrderResult> createOrder() throws Exception {
        PayCreateOrder o = new PayCreateOrder();
        o.setOrderNo("wdOrder"+System.currentTimeMillis()); // 业务系统订单号
        o.setOrderSource("00"); // 场景号
        o.setTrxAmt(0.01); // 交易金额
        o.setCurrency("CNY"); // 币种
        o.setTransType("2001"); // 交易类型
        o.setTradeMerCstNo("8592241714146578500"); // 交易商户号
        o.setPlatMerCstNo("8197833247112040502"); // 平台商户号
        o.setBusinessCstNo("123456789"); // 业务平台客户号
        o.setGoodsInfo("订单信息"); // 订单信息
        //   o.setPayReturnUrl("YourPayReturnUrl"); // 前台返回地址
        o.setPayNotifyUrl("http://whtrjy.natappfree.cc/decrypt"); // 交易结果异步通知地址
        o.setPayerName("小敏测试"); // 付款用户姓名
        o.setPayerMobileNo("17302557020"); // 付款用户手机号
        o.setNeedLedger("00"); // 是否需要分账
        o.setCoreCorCstNo("5610006906"); // 核心企业客户号
        o.setAgreeNo("COOP00001000926"); // 协议号

        o.setExpiredTime("1709213076000"); // 订单过期时间
        o.setPayCertType("22"); // 证件类型
        o.setPayCertNo("520321199801300897"); // 证件号码

        List<String> payType = Arrays.asList(PayType.WECHAT_QR_CODE_PAYMENT.getCode(),PayType.ALIPAY_BARCODE_PAYMENT.getCode());
        //    o.setPayType(payType); // 支付方式
        //o.setClientIp("YourClientIp"); // 客户端 IP
//        o.setRiskClientImei("1582220"); // 手机 Imei 数字人民币支付必传
//        o.setRiskClientMac("1582000"); // 手机 Mac 数字人民币支付必传
        o.setIdentityNo("320921988755213515"); // 身份证号码
        o.setIdentityName("小敏测试"); // 用户真实名称
        TzBankResult<PayCreateOrderResult> result = service.createOrder(o);
        return result;
    }

    @GetMapping (value = "/get")
    public TzBankResult payQueryOrder() throws Exception {

        payQueryOrder payQueryOrder = new payQueryOrder();
        payQueryOrder.setOrderFlowNo("847252354783779608");
        payQueryOrder.setPlatMerCstNo("8197833247112040502");
        TzBankResult<QueryOrderResult> result = service.queryOrder(payQueryOrder);
        return result;
    }

    @GetMapping (value = "/tui")
    public TzBankResult tui() throws Exception {
        RefundParam tzBankResult = new RefundParam();
        // 使用set方法为对象的字段赋值
        //商户原支付订单号
        tzBankResult.setOldPayOutOrderNo("wdOrder1699775831364");
        // 商户退款订单号 对接平台系统里自己生成的退款订单号
        tzBankResult.setRefundOrderNo("re1234567890");
        // 交易发送时间 yyyyMMddHHmmss
        tzBankResult.setTrxSendTime("20231110144300");
        // 平台商户号
        tzBankResult.setPlatMerCstNo("8197833247112040502");
        // 退款金额
        tzBankResult.setRefundOrdTransAmt(0.01);
        TzBankResult<RefundResult> result = service.refund(tzBankResult);
        return result;
    }
    @GetMapping (value = "/getTui")
    public TzBankResult getTui() throws Exception {
        QueryRefundOrderParam r = new QueryRefundOrderParam();
        // 使用 setter 方法为对象赋值
        r.setRefundOrderNo("re123456789");
        r.setTrxSendTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); // 示例时间格式，根据实际情况调整
        r.setPlatMerCstNo("8197833247112040502");
        TzBankResult<QueryRefundResult> result = service.queryRefundOrder(r);
        return result;
    }






    public TzBankParam newOrder(){

        PayCreateOrder o = new PayCreateOrder();
        o.setOrderNo("wdOrder"+System.currentTimeMillis()); // 业务系统订单号
        o.setOrderSource("00"); // 场景号
        o.setTrxAmt(0.01); // 交易金额
        o.setCurrency("CNY"); // 币种
        o.setTransType("2001"); // 交易类型
        o.setTradeMerCstNo("8592241714146578500"); // 交易商户号
        o.setPlatMerCstNo("8197833247112040502"); // 平台商户号
        o.setBusinessCstNo("123456789"); // 业务平台客户号
        o.setGoodsInfo("订单信息"); // 订单信息
     //   o.setPayReturnUrl("YourPayReturnUrl"); // 前台返回地址
        o.setPayNotifyUrl("http://whtrjy.natappfree.cc/decrypt"); // 交易结果异步通知地址
        o.setPayerName("小敏测试"); // 付款用户姓名
        o.setPayerMobileNo("17302557020"); // 付款用户手机号
        o.setNeedLedger("00"); // 是否需要分账
        o.setCoreCorCstNo("5610006906"); // 核心企业客户号
        o.setAgreeNo("COOP00001000926"); // 协议号

       o.setExpiredTime("1709213076000"); // 订单过期时间
        o.setPayCertType("22"); // 证件类型
        o.setPayCertNo("520321199801300897"); // 证件号码

        List<String> payType = Arrays.asList(PayType.WECHAT_QR_CODE_PAYMENT.getCode(),PayType.ALIPAY_BARCODE_PAYMENT.getCode());
    //    o.setPayType(payType); // 支付方式
        //o.setClientIp("YourClientIp"); // 客户端 IP
//        o.setRiskClientImei("1582220"); // 手机 Imei 数字人民币支付必传
//        o.setRiskClientMac("1582000"); // 手机 Mac 数字人民币支付必传
        o.setIdentityNo("320921988755213515"); // 身份证号码
        o.setIdentityName("小敏测试"); // 用户真实名称

        TzBankParam tz = new TzBankParam();
        tz.setReqBody(o);
        tz.setTranSeq("20231025"+System.currentTimeMillis());
        return tz;
    }



}

