xiaoyong931011
2023-05-11 bb1e84b94474f1d513c25b2122576370a29d5033
src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java
@@ -1,6 +1,21 @@
package cc.mrbird.febs.pay.service.impl;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.mall.entity.MallMqRecord;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.MallMqRecordMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.pay.model.LaKaLaBasicReqDate;
import cc.mrbird.febs.pay.model.LaKaLaCreateOrderReqDate;
import cc.mrbird.febs.pay.model.LaKaLaQueryOrderReqDate;
import cc.mrbird.febs.pay.service.LaKaLaService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
@@ -13,6 +28,10 @@
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
@@ -23,12 +42,30 @@
import java.security.cert.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Date;
import java.util.HashMap;
@Slf4j
@Service
public class LaKaLaServiceImpl implements LaKaLaService {
    @Autowired
    private ICommonService commonService;
    @Autowired
    private MallOrderInfoMapper orderInfoMapper;
    @Autowired
    private MallMqRecordMapper mallMqRecordMapper;
    @Autowired
    private AgentProducer agentProducer;
    @Autowired
    ResourceLoader resourceLoader;
    @Value("${spring.profiles.active}")
    private String active;
    /**
     * 字符集固定 utf-8
@@ -44,63 +81,117 @@
     * 接入 appid
     */
    public static final String appid = "OP00000418";
//    public static final String appid = "800000010334001";
    public static final String appid_prd = "OP00000418";
    /**
     * 商户证书序列号,和商户私钥对应
     */
//    public static final String mchSerialNo = "017d6ae9ad6e";
    public static final String mchSerialNo = "01848940fd41";
    public static final String mchSerialNo_prd = "018804e5ecd9";
    /**
     * 商户号
     */
    public static final String merchant_no = "8222900701107M5";
    public static final String merchant_no_prd = "8222900701107M5";
    /**
     * 商户证书私钥,用于请求签名
     */
    public static final String merchantPrivateKeyPath = "./src/api_private_key.pem";
    public static final String merchantPrivateKeyPathName = "classpath:lkl/api_private_key.pem";
    public static final String merchantPrivateKeyPathName_prd = "classpath:lkl/prd/api_private_key.pem";
    /**
     * 拉卡拉公钥证书,用于response签名验证,务必区分测试环境和生产环境证书
     */
    public static final String lklCertificatePath = "./src/lkl-apigw-v2.cer";
    public static final String lklCertificatePathName = "classpath:lkl/lkl-apigw-v2.cer";
    public static final String lklCertificatePathName_prd = "classpath:lkl/prd/lkl-apigw-v2.cer";
    /**
     * api请求地址
     */
    public final static String apiUrl = "https://test.wsmsd.cn/sit";
    public final static String apiUrlCreate = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create";
    public final static String apiUrlCreate_prd = "https://s2.lakala.com/api/v3/ccss/counter/order/create";
    public final static String apiUrlQuery = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/query";
    public final static String apiUrlQuery_prd = "https://s2.lakala.com/api/v3/ccss/counter/order/query";
    /**
     * 支付回调地址
     */
    public final static String notify_url = "http://120.27.238.55:8185/api/pay/laKaLaPayCallBack";
    public final static String notify_url_prd = "https://hlm.meiao.biz/api/pay/laKaLaPayCallBack";
    private static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private static final SecureRandom RANDOM = new SecureRandom();
    @Override
    public boolean verifyCreateOrder() {
    public String verifyCreateOrder(LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDateInfo) {
        /**
         * {"req_time":"20221026100323",
         * "version":"1.0",
         * "req_data":{
         *      "out_order_no":"GHSNVDY8033038232443530",
         *      "merchant_no":"8222900701107M5",
         *      "vpos_id":"627872798014865408",
         *      "total_amount":1,
         *      "order_efficient_time":"20221118220823",
         *      "notify_url":"",
         *      "support_cancel":0,
         *      "support_refund":1,
         *      "support_repeat_pay":1,
         *      "order_info":"测试"}}
         */
        HashMap<String, Object> objectObjectHashMap = new HashMap<>();
        String yyyyMMddHHmmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        //过期时间
        String order_efficient_time = DateUtil.format(DateUtil.offsetHour(new Date(),1), "yyyyMMddHHmmss");
        LaKaLaCreateOrderReqDate laKaLaCreateOrderReqDate = new LaKaLaCreateOrderReqDate();
        laKaLaCreateOrderReqDate.setOut_order_no(laKaLaCreateOrderReqDateInfo.getOut_order_no());
        laKaLaCreateOrderReqDate.setTotal_amount(laKaLaCreateOrderReqDateInfo.getTotal_amount());
        laKaLaCreateOrderReqDate.setOrder_efficient_time(order_efficient_time);
        if ("dev".equals(active) || "test".equals(active)) {
            laKaLaCreateOrderReqDate.setNotify_url(notify_url);
            laKaLaCreateOrderReqDate.setMerchant_no(merchant_no);
        }else{
            laKaLaCreateOrderReqDate.setNotify_url(notify_url_prd);
            laKaLaCreateOrderReqDate.setMerchant_no(merchant_no_prd);
        }
        laKaLaCreateOrderReqDate.setSupport_cancel(0);
        laKaLaCreateOrderReqDate.setSupport_refund(1);
        laKaLaCreateOrderReqDate.setSupport_repeat_pay(1);
        laKaLaCreateOrderReqDate.setOrder_info(laKaLaCreateOrderReqDateInfo.getOrder_info());
        LaKaLaBasicReqDate laKaLaBasicReqDate = new LaKaLaBasicReqDate();
        laKaLaBasicReqDate.setReq_time(yyyyMMddHHmmss);
        laKaLaBasicReqDate.setVersion("3.0");
        JSONObject jsonObject = JSONUtil.parseObj(laKaLaCreateOrderReqDate);
        laKaLaBasicReqDate.setReq_data(jsonObject);
        try {
            String apiPath = "/api/v3/labs/trans/micropay";
            String body = "{\n" +
                    "    \"req_time\": \"20210907150256\",\n" +
                    "    \"version\": \"3.0\",\n" +
                    "    \"out_org_code\": \"OP00000003\",\n" +
                    "    \"req_data\": {\n" +
                    "        \"merchant_no\": \"8222900701107M5\",\n" +
                    "        \"term_no\": \"A1062976\",\n" +
                    "        \"out_trade_no\": \"FD660E1FAA3A4470933CDEDAE1EC1D8E\",\n" +
                    "        \"auth_code\": \"135178236713755038\",\n" +
                    "        \"total_amount\": \"23\",\n" +
                    "        \"location_info\": {\n" +
                    "            \"request_ip\": \"10.176.1.192\",\n" +
                    "            \"location\": \"+37.123456789,-121.123456789\"\n" +
                    "        },\n" +
                    "        \"out_order_no\": \"08F4542EEC6A4497BC419161747A92FA1\"\n" +
                    "    }\n" +
                    "}";
            String body = JSONUtil.parseObj(laKaLaBasicReqDate).toString();
            log.info("LKL创建请求Body,{}",body);
            String authorization = getAuthorization(body);
            HttpResponse response = post(apiUrl + apiPath, body, authorization);
            String apiUrlCreateHttp = "";
            if ("dev".equals(active) || "test".equals(active)) {
                apiUrlCreateHttp = apiUrlCreate;
            }else{
                apiUrlCreateHttp = apiUrlCreate_prd;
            }
            HttpResponse response = post(apiUrlCreateHttp , body, authorization);
            if (response.getStatusLine().getStatusCode() != 200) {
                System.out.println("请求失败,statusCode  " + response.getStatusLine()
                        + IOUtils.toString(response.getEntity().getContent(), ENCODING));
                return false;
                objectObjectHashMap.put("code","false");
                return JSONUtil.parseObj(objectObjectHashMap).toString();
            }
            String appid = getHeadValue(response, "Lklapi-Appid");
@@ -109,92 +200,222 @@
            String nonce = getHeadValue(response, "Lklapi-Nonce");
            String signature = getHeadValue(response, "Lklapi-Signature");
            String responseStr = IOUtils.toString(response.getEntity().getContent(), ENCODING);
            System.out.println("responseStr  " + responseStr);
            log.info("LKL创建请求返回的responseStr,{}",responseStr);
            String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
            System.out.println("source  " + source);
            X509Certificate lklCertificate = loadCertificate(new FileInputStream(new File(lklCertificatePath)));
            String lklCertificatePathNameStr = "";
            if ("dev".equals(active) || "test".equals(active)) {
                lklCertificatePathNameStr = lklCertificatePathName;
            }else{
                lklCertificatePathNameStr = lklCertificatePathName_prd;
            }
            InputStream fileInputStream = resourceLoader.getResource(lklCertificatePathNameStr).getInputStream();
            X509Certificate lklCertificate = loadCertificate(fileInputStream);
            boolean verify = verify(lklCertificate, source.getBytes(ENCODING), signature);
            if (verify) {
                System.out.println("验签成功");
                return true;
                JSONObject parseObj = JSONUtil.parseObj(responseStr);
                String code = parseObj.get("code").toString();
                if("000000".equals(code)){
                    Object respData = parseObj.get("resp_data");
                    JSONObject respDataChild = JSONUtil.parseObj(respData);
                    String counterUrl = respDataChild.get("counter_url").toString();
                    String payOrderNo = respDataChild.get("pay_order_no").toString();
                    objectObjectHashMap.put("code","true");
                    objectObjectHashMap.put("counterUrl",counterUrl);
                    objectObjectHashMap.put("payOrderNo",payOrderNo);
                }else{
                    objectObjectHashMap.put("code","false");
                }
                return JSONUtil.parseObj(objectObjectHashMap).toString();
            } else {
                System.err.println("验签失败");
                return false;
                objectObjectHashMap.put("code","false");
                return JSONUtil.parseObj(objectObjectHashMap).toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
        objectObjectHashMap.put("code","false");
        return JSONUtil.parseObj(objectObjectHashMap).toString();
    }
//    public static void main(String[] args) {
//        try {
//            String apiPath = "/api/v3/labs/trans/micropay";
//
//            String body = "{\n" +
//                    "    \"req_time\": \"20210907150256\",\n" +
//                    "    \"version\": \"3.0\",\n" +
//                    "    \"out_org_code\": \"OP00000003\",\n" +
//                    "    \"req_data\": {\n" +
//                    "        \"merchant_no\": \"822290070111135\",\n" +
//                    "        \"term_no\": \"29034705\",\n" +
//                    "        \"out_trade_no\": \"FD660E1FAA3A4470933CDEDAE1EC1D8E\",\n" +
//                    "        \"auth_code\": \"135178236713755038\",\n" +
//                    "        \"total_amount\": \"123\",\n" +
//                    "        \"location_info\": {\n" +
//                    "            \"request_ip\": \"10.176.1.192\",\n" +
//                    "            \"location\": \"+37.123456789,-121.123456789\"\n" +
//                    "        },\n" +
//                    "        \"out_order_no\": \"08F4542EEC6A4497BC419161747A92FA\"\n" +
//                    "    }\n" +
//                    "}";
//
//
//            String authorization = getAuthorization(body);
//            HttpResponse response = post(apiUrl + apiPath, body, authorization);
//            if (response.getStatusLine().getStatusCode() != 200) {
//                System.out.println("请求失败,statusCode  " + response.getStatusLine()
//                        + IOUtils.toString(response.getEntity().getContent(), ENCODING));
//                return;
//            }
//
//            String appid = getHeadValue(response, "Lklapi-Appid");
//            String lklapiSerial = getHeadValue(response, "Lklapi-Serial");
//            String timestamp = getHeadValue(response, "Lklapi-Timestamp");
//            String nonce = getHeadValue(response, "Lklapi-Nonce");
//            String signature = getHeadValue(response, "Lklapi-Signature");
//            String responseStr = IOUtils.toString(response.getEntity().getContent(), ENCODING);
//
//            System.out.println("responseStr  " + responseStr);
//
//            String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
//
//            System.out.println("source  " + source);
//
//            X509Certificate lklCertificate = loadCertificate(new FileInputStream(new File(lklCertificatePath)));
//
//            boolean verify = verify(lklCertificate, source.getBytes(ENCODING), signature);
//
//            if (verify) {
//                System.out.println("验签成功");
//
//                // TODO: 业务处理
//
//            } else {
//                System.err.println("验签失败");
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
    @Override
    public String payCallback(JSONObject jsonObject) {
        boolean flag = false;
        String orderStatus = jsonObject.get("order_status").toString();
        if(2 != Integer.parseInt(orderStatus)){
            return "FAIL";
        }
        String orderNo = jsonObject.get("out_order_no").toString();
        /*
            {"req_time":"1660205634885","version":"3.0","req_data":{"out_order_no":"GHSNVDY8033038232443530","merchant_no":"8222900701107M5"}}
         */
        LaKaLaQueryOrderReqDate laKaLaQueryOrderReqDate = new LaKaLaQueryOrderReqDate();
        laKaLaQueryOrderReqDate.setOut_order_no(orderNo);
        if ("dev".equals(active) || "test".equals(active)) {
            laKaLaQueryOrderReqDate.setMerchant_no(merchant_no);
        }else{
            laKaLaQueryOrderReqDate.setMerchant_no(merchant_no_prd);
        }
        String yyyyMMddHHmmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        LaKaLaBasicReqDate laKaLaBasicReqDate = new LaKaLaBasicReqDate();
        laKaLaBasicReqDate.setReq_time(yyyyMMddHHmmss);
        laKaLaBasicReqDate.setVersion("3.0");
        JSONObject jsonObjectQuery = JSONUtil.parseObj(laKaLaQueryOrderReqDate);
        laKaLaBasicReqDate.setReq_data(jsonObjectQuery);
        try {
            String body = JSONUtil.parseObj(laKaLaBasicReqDate).toString();
            log.info("LKL查询请求Body,{}",body);
            String authorization = getAuthorization(body);
            String apiUrlCreateHttp = "";
            if ("dev".equals(active) || "test".equals(active)) {
                apiUrlCreateHttp = apiUrlQuery;
            }else{
                apiUrlCreateHttp = apiUrlQuery_prd;
            }
            HttpResponse response = post(apiUrlCreateHttp , body, authorization);
            if (response.getStatusLine().getStatusCode() != 200) {
                return "FAIL";
            }
            String appid = getHeadValue(response, "Lklapi-Appid");
            String lklapiSerial = getHeadValue(response, "Lklapi-Serial");
            String timestamp = getHeadValue(response, "Lklapi-Timestamp");
            String nonce = getHeadValue(response, "Lklapi-Nonce");
            String signature = getHeadValue(response, "Lklapi-Signature");
            String responseStr = IOUtils.toString(response.getEntity().getContent(), ENCODING);
            System.out.println("responseStr  " + responseStr);
            log.info("LKL查询返回的responseStr,{}",responseStr);
            String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
            System.out.println("source  " + source);
            String lklCertificatePathNameStr = "";
            if ("dev".equals(active) || "test".equals(active)) {
                lklCertificatePathNameStr = lklCertificatePathName;
            }else{
                lklCertificatePathNameStr = lklCertificatePathName_prd;
            }
            InputStream fileInputStream = resourceLoader.getResource(lklCertificatePathNameStr).getInputStream();
            X509Certificate lklCertificate = loadCertificate(fileInputStream);
            boolean verify = verify(lklCertificate, source.getBytes(ENCODING), signature);
            if (verify) {
                System.out.println("验签成功");
                JSONObject parseObj = JSONUtil.parseObj(responseStr);
                String code = parseObj.get("code").toString();
                if("000000".equals(code)){
                    Object respData = parseObj.get("resp_data");
                    JSONObject respDataChild = JSONUtil.parseObj(respData);
                    String orderStatusQuery = respDataChild.get("order_status").toString();
                    if(2 != Integer.parseInt(orderStatusQuery)){
                        return "FAIL";
                    }
                    String tradeStatus = respDataChild.getJSONArray("order_trade_info_list").getJSONObject(0).get("trade_status").toString();
                    if(!"S".equals(tradeStatus)){
                        return "FAIL";
                    }
                    flag = true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(flag){
            LambdaQueryWrapper<MallOrderInfo> query = new LambdaQueryWrapper<>();
            query.eq(MallOrderInfo::getOrderNo, orderNo);
            MallOrderInfo orderInfo = this.orderInfoMapper.selectOne(query);
            if ("1".equals(orderInfo.getPayResult())) {
                return "SUCCESS";
            }
            orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
            orderInfo.setPayResult("1");
            orderInfo.setPayTime(new Date());
            String payOrderNo = jsonObject.get("pay_order_no").toString();
            orderInfo.setPayTradeNo(payOrderNo);
            orderInfoMapper.updateById(orderInfo);
            commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.WECHAT.getValue());
            /**
             * 插入一条待处理记录
             * mq处理之后,更新状态
             */
            MallMqRecord mallMqRecord = new MallMqRecord();
            mallMqRecord.setOrderId(orderInfo.getId());
            mallMqRecord.setState(2);
            mallMqRecord.setRetryTimes(2);
            mallMqRecordMapper.insert(mallMqRecord);
            //发送补贴消息
            agentProducer.sendPerkMoneyMsg(orderInfo.getId());
            //发送代理自动升级消息
            agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
            return "SUCCESS";
        }else{
            return "FAIL";
        }
    }
    public static void main(String[] args) {
        String s = "{\"code\":\"000000\"," +
                "\"msg\":\"操作成功\"," +
                "\"resp_time\":\"20230510154634\"," +
                "\"resp_data\":{\"pay_order_no\":\"23051011012001101011000969911\"," +
                "\"out_order_no\":\"2023051015455302379\"," +
                "\"channel_id\":\"95\"," +
                "\"trans_merchant_no\":\"8222900701107M5\"," +
                "\"trans_term_no\":\"A1062976\"," +
                "\"merchant_no\":\"8222900701107M5\"," +
                "\"term_no\":\"A1062976\"," +
                "\"order_status\":\"2\"," +
                "\"order_info\":\"礼包一\"," +
                "\"total_amount\":1," +
                "\"order_create_time\":\"20230510154556\"," +
                "\"order_efficient_time\":\"20230510164555\"," +
                "\"settle_type\":\"0\"," +
                "\"split_mark\":\"\"," +
                "\"counter_param\":null," +
                "\"counter_remark\":null," +
                "\"busi_type_param\":\"\"," +
                "\"sgn_info\":[]," +
                "\"goods_mark\":\"\"," +
                "\"goods_field\":\"\"," +
                "\"order_trade_info_list\":[{\"trade_no\":\"2023051066210308370172\"," +
                "\"log_No\":\"66210308370172\"," +
                "\"trade_ref_no\":\"\"," +
                "\"trade_type\":\"PAY\"," +
                "\"trade_status\":\"S\"," +
                "\"trade_amount\":1,\"payer_amount\":1,\"user_id1\":\"oLvoQ5W-MMaepM5fIf2XGOkatAzQ\",\"user_id2\":\"oUpF8uPxTeOlCA4eunIiiK6vZ9IA\",\"busi_type\":\"SCPAY\",\"trade_time\":\"20230510154610\",\"acc_trade_no\":\"4200001884202305101607494108\",\"payer_account_no\":\"\",\"payer_name\":\"\",\"payer_account_bank\":\"\",\"acc_type\":\"99\",\"pay_mode\":\"WECHAT\",\"client_batch_no\":\"\",\"client_seq_no\":\"\",\"settle_merchant_no\":\"8222900701107M5\",\"settle_term_no\":\"A1062976\",\"origin_trade_no\":\"\",\"auth_code\":\"\",\"bank_type\":\"OTHERS\"}]}}";
        JSONObject parseObj = JSONUtil.parseObj(s);
        String code = parseObj.get("code").toString();
        if("000000".equals(code)){
            Object respData = parseObj.get("resp_data");
            JSONObject respDataChild = JSONUtil.parseObj(respData);
            System.out.println(respDataChild);
//            String orderStatusQuery = respDataChild.get("order_status").toString();
            String orderStatusQuery = respDataChild.get("order_trade_info_list").toString();
            System.out.println(orderStatusQuery);
            String tradeStatus = respDataChild.getJSONArray("order_trade_info_list").getJSONObject(0).get("trade_status").toString();
            System.out.println(tradeStatus);
        }
    }
    public HttpResponse post(String url, String message, String authorization) throws Exception {
        SSLContext ctx = SSLContext.getInstance("TLS");
@@ -237,15 +458,32 @@
        String nonceStr = generateNonceStr();
        long timestamp = generateTimestamp();
        String message = appid + "\n" + mchSerialNo + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
        String appidStr = "";
        String mchSerialNoStr = "";
        if ("dev".equals(active) || "test".equals(active)) {
            appidStr = appid;
            mchSerialNoStr = mchSerialNo;
        }else{
            appidStr = appid_prd;
            mchSerialNoStr = mchSerialNo_prd;
        }
        String message = appidStr + "\n" + mchSerialNoStr + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
        System.out.println("getToken message :  " + message);
        PrivateKey merchantPrivateKey = loadPrivateKey(new FileInputStream(new File(merchantPrivateKeyPath)));
        String merchantPrivateKeyPathNameStr = "";
        if ("dev".equals(active) || "test".equals(active)) {
            merchantPrivateKeyPathNameStr = merchantPrivateKeyPathName;
        }else{
            merchantPrivateKeyPathNameStr = merchantPrivateKeyPathName_prd;
        }
        InputStream fileInputStream = resourceLoader.getResource(merchantPrivateKeyPathNameStr).getInputStream();
        PrivateKey merchantPrivateKey = loadPrivateKey(fileInputStream);
        String signature = this.sign(message.getBytes(ENCODING), merchantPrivateKey);
        String authorization = "appid=\"" + appid + "\"," + "serial_no=\"" + mchSerialNo + "\"," + "timestamp=\""
        String authorization = "appid=\"" + appidStr + "\"," + "serial_no=\"" + mchSerialNoStr + "\"," + "timestamp=\""
                + timestamp + "\"," + "nonce_str=\"" + nonceStr + "\"," + "signature=\"" + signature + "\"";
        System.out.println("authorization message :" + authorization);