package com.sonic.lion.domain.input;

import com.sonic.lion.utils.MD5Utils;
import lombok.Data;
import lombok.ToString;

@ToString
@Data
public class PayssionCreateOrderReq {
    private String api_key;
    private String pm_id = "payssion_test";
    private String amount;
    private String currency = "USD";
    private String description;
    /**
     * 必填	商户订单号，最长64字符
     */
    private String order_id;
    /**
     * api签名
     */
    private String api_sig;

    /**
     * 支付返回后跳转的页面URL
     */
    private String return_url;

    /**
     * 客户邮箱
     */
    private String payer_email;

    /**
     * 客户姓名
     */
    private String payer_name;

    public String getApi_sig(String secret_key) {
        /**
         * 1、将api_key, pm_id, amount, currency, order_id以及应用的secret_key字符串，以 “|”为分隔符串联成一个字符串 api_key|pm_id|amount|currency|order_id|secret_key
         * 2、将第一步骤串联起来的的字符串经md5加密生成最终的api_sig（小写） 具体代码示例：
         */
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(api_key);
        stringBuilder.append("|");
        stringBuilder.append(pm_id);
        stringBuilder.append("|");
        stringBuilder.append(amount);
        stringBuilder.append("|");
        stringBuilder.append(currency);
        stringBuilder.append("|");
        stringBuilder.append(order_id);
        stringBuilder.append("|");
        stringBuilder.append(secret_key);
        return MD5Utils.stringToMD5(stringBuilder.toString()).toLowerCase();
    }

    public static void main(String[] args) {
        PayssionCreateOrderReq req = new PayssionCreateOrderReq();
        req.setApi_key("sandbox_d7c4d8dc5e959e43");
        req.setAmount("1.00");
        req.setCurrency("USD");
        req.setOrder_id("aaa111111");
        String s = req.getApi_sigV2("hqconFULlNCmaBhdF0c61UZt7zHGKF21");
        System.out.println(s);
    }

    public String getApi_sigV2(String secret_key) {
        /**
         * 1、将api_key, pm_id, amount, currency, order_id以及应用的secret_key字符串，以 “|”为分隔符串联成一个字符串 api_key|amount|currency|order_id|secret_key
         * 2、将第一步骤串联起来的的字符串经md5加密生成最终的api_sig（小写） 具体代码示例：
         */
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(api_key);
        stringBuilder.append("|");
        stringBuilder.append(amount);
        stringBuilder.append("|");
        stringBuilder.append(currency);
        stringBuilder.append("|");
        stringBuilder.append(order_id);
        stringBuilder.append("|");
        stringBuilder.append(secret_key);
        return MD5Utils.stringToMD5(stringBuilder.toString()).toLowerCase();
    }
}
