소스 검색

修改需求

zhs 3 년 전
부모
커밋
d0b74b32cd

+ 4 - 5
src/main/java/com/travel/controller/ZfbCashController.java

@@ -1,6 +1,5 @@
 package com.travel.controller;
 
-import cn.hutool.core.io.resource.ClassPathResource;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.CertAlipayRequest;
@@ -17,11 +16,11 @@ import com.travel.util.ParsingToken;
 import com.travel.util.SnowflakeUtil;
 import com.travel.zfb.ZfbPayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ClassUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
-import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Map;
@@ -68,9 +67,9 @@ public class ZfbCashController extends ZfbPayUtils {
         alipayConfig.setSignType(SIGNTYPE);
         alipayConfig.setEncryptor("");
         alipayConfig.setFormat("json");
-        alipayConfig.setCertPath(this.getClass().getClassLoader().getResource("csr/appCertPublicKey_2021003146630260.crt").getPath());
-        alipayConfig.setAlipayPublicCertPath(this.getClass().getClassLoader().getResource("csr/alipayCertPublicKey_RSA2.crt").getPath());
-        alipayConfig.setRootCertPath(this.getClass().getClassLoader().getResource("csr/alipayRootCert.crt").getPath());
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
         //获得初始化的AlipayClient
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         //设置请求参数

+ 22 - 12
src/main/java/com/travel/controller/ZfbPayController.java

@@ -3,7 +3,6 @@ package com.travel.controller;
 import com.alipay.api.CertAlipayRequest;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.request.AlipayTradePagePayRequest;
-import com.alipay.api.request.AlipayTradeWapPayRequest;
 import com.travel.model.BuyOfferNum;
 import com.travel.model.Supplier;
 import com.travel.model.SupplierRelease;
@@ -12,7 +11,11 @@ import com.travel.service.ZFBPayService;
 import com.travel.util.ParsingToken;
 import com.travel.util.SnowflakeUtil;
 import com.travel.zfb.ZfbPayUtils;
+import lombok.var;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.util.ClassUtils;
+import org.springframework.util.FileCopyUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -21,7 +24,10 @@ import com.alipay.api.DefaultAlipayClient;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -56,9 +62,9 @@ public class ZfbPayController extends ZfbPayUtils {
         alipayConfig.setSignType(SIGNTYPE);
         alipayConfig.setEncryptor("");
         alipayConfig.setFormat("json");
-        alipayConfig.setCertPath(this.getClass().getClassLoader().getResource("csr/appCertPublicKey_2021003146630260.crt").getPath());
-        alipayConfig.setAlipayPublicCertPath(this.getClass().getClassLoader().getResource("csr/alipayCertPublicKey_RSA2.crt").getPath());
-        alipayConfig.setRootCertPath(this.getClass().getClassLoader().getResource("csr/alipayRootCert.crt").getPath());
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
         //获得初始化的AlipayClient
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         //设置请求参数
@@ -106,9 +112,9 @@ public class ZfbPayController extends ZfbPayUtils {
         alipayConfig.setSignType(SIGNTYPE);
         alipayConfig.setEncryptor("");
         alipayConfig.setFormat("json");
-        alipayConfig.setCertPath(this.getClass().getClassLoader().getResource("csr/appCertPublicKey_2021003146630260.crt").getPath());
-        alipayConfig.setAlipayPublicCertPath(this.getClass().getClassLoader().getResource("csr/alipayCertPublicKey_RSA2.crt").getPath());
-        alipayConfig.setRootCertPath(this.getClass().getClassLoader().getResource("csr/alipayRootCert.crt").getPath());
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
         //获得初始化的AlipayClient
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         //设置请求参数
@@ -159,9 +165,9 @@ public class ZfbPayController extends ZfbPayUtils {
         alipayConfig.setSignType(SIGNTYPE);
         alipayConfig.setEncryptor("");
         alipayConfig.setFormat("json");
-        alipayConfig.setCertPath(this.getClass().getClassLoader().getResource("csr/appCertPublicKey_2021003146630260.crt").getPath());
-        alipayConfig.setAlipayPublicCertPath(this.getClass().getClassLoader().getResource("csr/alipayCertPublicKey_RSA2.crt").getPath());
-        alipayConfig.setRootCertPath(this.getClass().getClassLoader().getResource("csr/alipayRootCert.crt").getPath());
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
         //获得初始化的AlipayClient
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         //设置请求参数
@@ -218,8 +224,12 @@ public class ZfbPayController extends ZfbPayUtils {
                 //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
                 params.put(name, valueStr);
             }
-            //异步验签:切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
-            boolean flag = AlipaySignature.rsaCheckV1(params, ALIPAYPUBLICKEY, "utf-8", "RSA2");
+//            ClassPathResource classPathResource = new ClassPathResource("csr/alipayCertPublicKey_RSA2.crt");
+//            var bs = FileCopyUtils.copyToByteArray(classPathResource.getInputStream());
+//            System.out.println(new String(bs, StandardCharsets.UTF_8));
+            //异步验签:切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。 rsaCertCheckV1
+            boolean flag = AlipaySignature.rsaCertCheckV1(params, "C:\\java\\csr\\alipayCertPublicKey_RSA2.crt", "utf-8", "RSA2");
+            System.out.println(flag);
             if (flag) {
                 //说明是支付宝调用的本接口
                 if (params.get("trade_status").equals("TRADE_SUCCESS") || params.get("trade_status").equals("TRADE_FINISHED")) {

+ 18 - 3
src/main/java/com/travel/service/impl/ZFBPayServiceImpl.java

@@ -2,6 +2,7 @@ package com.travel.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.api.AlipayClient;
+import com.alipay.api.CertAlipayRequest;
 import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.request.AlipayTradeRefundRequest;
 import com.alipay.api.response.AlipayTradeRefundResponse;
@@ -13,6 +14,7 @@ import com.travel.zfb.ZfbPayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ClassUtils;
 
 import java.util.HashMap;
 import java.util.List;
@@ -196,16 +198,29 @@ public class ZFBPayServiceImpl extends ZfbPayUtils implements ZFBPayService {
     public Map<String, Object> refund(String money, ZFBPay zfbPay) throws Exception {
         //获得初始化的AlipayClient
         Map<String, Object> mapReturn = new HashMap<>();
-        AlipayClient alipayClient = new DefaultAlipayClient(GATEWAYURL, APPID, MERCHANTPRIVATEKEY, "json", CHARSET, ALIPAYPUBLICKEY, SIGNTYPE);
-
+        //获得初始化的alipayConfig参数 //证书模式
+        CertAlipayRequest alipayConfig  = new CertAlipayRequest();
+        alipayConfig.setPrivateKey(MERCHANTPRIVATEKEY);//应用秘钥
+        alipayConfig.setServerUrl(GATEWAYURL);
+        alipayConfig.setAppId(APPID);
+        alipayConfig.setCharset(CHARSET);
+        alipayConfig.setSignType(SIGNTYPE);
+        alipayConfig.setEncryptor("");
+        alipayConfig.setFormat("json");
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
+        //获得初始化的AlipayClient
+        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
+
         JSONObject bizContent = new JSONObject();
         bizContent.put("trade_no", zfbPay.getPrepayId());
         bizContent.put("refund_amount", money);
         bizContent.put("out_request_no", zfbPay.getOutTradeNo());
 
         request.setBizContent(bizContent.toString());
-        AlipayTradeRefundResponse response = alipayClient.execute(request);
+        AlipayTradeRefundResponse response = alipayClient.certificateExecute(request);
         if(response.isSuccess()){
             mapReturn.put("msg", "200");
             mapReturn.put("data", "退款成功");

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 2
src/main/resources/application.yml


+ 1 - 1
src/main/resources/config/mapping/ZFBPayMapper.xml

@@ -107,7 +107,7 @@
     <!-- 存入提现记录 -->
     <insert id="zfbCash" parameterType="WxWithdrawal">
         insert into bus_withdrawal(uuid,jdrq,amount,out_trade_no,code)
-        values(#{uuid},#{jdrq},#{amount},#{outTradeNo},#{code})
+        values(#{uuid},SYSDATETIME(),#{amount},#{outTradeNo},#{code})
     </insert>
     <!-- 提现 -->
     <update id="minusBalanceOf" parameterType="WxWithdrawal">

+ 15 - 15
src/main/resources/csr/alipayCertPublicKey_RSA2.crt

@@ -1,21 +1,21 @@
 -----BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQICIJBwkWptPLPl/+F73q5TANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
+MIIDvjCCAqagAwIBAgIQICIJCEFu+18/uvk/y2VqiTANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
 BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
 aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
-YXNzIDIgUjEwHhcNMjIwOTA3MDk1NjU0WhcNMjcwOTA2MDk1NjU0WjB3MQswCQYDVQQGEwJDTjES
-MBAGA1UECgwJ54mf5rSq6ImzMQ8wDQYDVQQLDAZBbGlwYXkxQzBBBgNVBAMMOuaUr+S7mOWunSjk
-uK3lm70p572R57uc5oqA5pyv5pyJ6ZmQ5YWs5Y+4LTIwODg1MjI0MjM5NTExNTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCJbygruLksO0KaTKZ4J0ywRP5Oabf5HKYXgTUuabLiKQM/
-R/7sAR/Roz03pRJv65nOQ8Ob5znXDOy/wN3UZgjUB8ZDD0gBC6LTyVJCJMfiqYlq7szMJ7dWvsic
-mzv3+pxukukXTh6IP9q6n1rU4JQNyi1zhuCYnEPACaVfqM22IKgZ4llifEHoj/lvzl3A0jZrmV9z
-FVyspqjukcSKyJdnx/dUrmblMUdfOfFPLXJPWhuaPWo+2BTqlV/e/6x+3Q2F5KZYzR0zrHaJTD8o
-RzecUWsW9Zi3u4xUUc19VDzhbzonVXnG/OmriV8h2gb0WyHqtTSravlZNr/cwLNRiqElAgMBAAGj
-EjAQMA4GA1UdDwEB/wQEAwID+DANBgkqhkiG9w0BAQsFAAOCAQEAhsL5dY2cBX6JtfE2Bh+izXFA
-YhRVOETq0bbq2unxGP8hMlb/YzRCZustFE4sX3TOW5Kcer+nnUF+FGmtiHaRQOuNIdpSy8KhFUBs
-RkRatIsA0WWKvSTrKmNgCqQWyeORLD1uQyavbLVjnVmzlo7rjEyNAcSOmLW/FySIeFHMxpZdrO8R
-pjhaR3QyPQaJDDmUdjq8h9uGydfeyH2wkPawgZ74iq4GR6darwiAen87IL0N54YhT9pb4T3UDw8T
-FFbtqTVdILdcSDb1s6kUp6aAF3uEFCWTqai9ixgs1MA7UnhshFpM1Em621Kj56+655jM3dr9bqXU
-wgP2h6ZZiXTjVg==
+YXNzIDIgUjEwHhcNMjIwOTA4MDgyNDEzWhcNMjcwOTA3MDgyNDEzWjCBnjELMAkGA1UEBhMCQ04x
+OTA3BgNVBAoMMOiJvuWNmuWliOWFi+aZuuiDveenkeaKgO+8iOeDn+WPsO+8ieaciemZkOWFrOWP
+uDEPMA0GA1UECwwGQWxpcGF5MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOac
+r+aciemZkOWFrOWPuC0yMDg4NDQxOTMzNDg4ODE3MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAmQofsH3BtqDCYtieN2uTXsZ9WyYrPQIQvbjx3SiP0LM0zgpRk7PagtCiIg4eKKFHhJtP
+myYfDCQVYsNSXwtZtKJ3uPfPnSQMKyrN9Kzk2GMRDIbgmPsEPkLiUbGHQQ2l94D8UkqndqF1L9q7
+pk1bpY9T2Ss11/EzaMgNLCPiMa5gu2QTKGOykhEbjQXenagtm5kFuRNNbVvp0M67SThcxPZqo1mg
+ChAm81r2LGWP8GlV/k9g5qGXlkepdzZFAumcXVA1bm72wycqWksuHd9wz8GOxKFj5LBdbsJ/5qW8
+jUpGLD3oA5eS1PFuUT20AoYQGRhmGUGtTrdnvBumluRqtwIDAQABoxIwEDAOBgNVHQ8BAf8EBAMC
+A/gwDQYJKoZIhvcNAQELBQADggEBABd73HZQLBUXVJQUpwQ8PI3w2HeHCmpWPwVEWhnJzFEnSEAg
+jN0vYpOoHc/YFU/c+LciDEZoTExtYK5mtJ0yIBQOdzV1aCAYXkj4vSsto96GpQdwySh4eB/hX10h
+Vyk3nons3Xm9JbVJw134ecdvztxN8wGg46f2DYtbamdaYRGooJZEVv9zncRGB/s5gw4KUb3PbxXM
+OafeVX3cLMpYpAvMDKz4H7P8yJIdaChoIlPgwBgqfLhAnL1AEHs7t3PRjEqEdHKHGdICL9zsdkNq
+DOuhNrEwnLA3pN/Pow2k5wTZgtMNquR2LO45yYF/tMb2jVmSMxK/nVpHTtxeSiw9Ijo=
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
 MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAU

+ 0 - 23
src/main/resources/csr/appCertPublicKey_2021003146630260.crt

@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEljCCA36gAwIBAgIQICIJB1cKDLvvGCjyTPzYHjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
-BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
-YXNzIDEgUjEwHhcNMjIwOTA3MDk1NjU0WhcNMjcwOTA2MDk1NjU0WjBeMQswCQYDVQQGEwJDTjES
-MBAGA1UECgwJ54mf5rSq6ImzMQ8wDQYDVQQLDAZBbGlwYXkxKjAoBgNVBAMMITIwODg1MjI0MjM5
-NTExNTEtMjAyMTAwMzE0NjYzMDI2MDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK5b
-k0LXDZgl+g0/Imz4wOkp0SWmGyvp2INbJaxQBCpWB6COqrqPTjNQ81Y2/xT41gijRJ7aAMOxPBT8
-qvADL9fMfHBr05GegaABqyrTjzidINLF053ozypMvGAt03OOWw7E9l6eGR+kMa+wwy1kFWSCkkhc
-ynxIyAGtz+vKxOa6XTVz1GBOYBfruWpQlRerDVv6pvrNlMGChB5bMh5e6+HAlIiHkBaxxN3MEFgr
-4CmPm4vnFooxaOGblSVnLfWuFhy10N833Ysv42dvGhlpZqC8uFJFnkP+nwxekb7Kvgc8rlsfMmNI
-9BO6iMqoR1WQUXAhMdp74Mlhwy8wY44z44sCAwEAAaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRh
-FuTl8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBRsmoCCCJ3SkrV+pawBPzpimqtiWjBABgNVHSAEOTA3
-MDUGB2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0cDovL2NhLmFsaXBheS5jb20vY3BzLnBkZjAO
-BgNVHQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3Js
-NjkuY3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEFBQcwAoYcaHR0cDovL2NhLmFsaXBheS5jb20v
-Y2E2LmNlcjAmBggrBgEFBQcwAYYaaHR0cDovL2NhLmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcN
-AQELBQADggEBAK+aNmq95gg+M8M7mzMdBKGvEpQ2KC4LC274SzQtQmUtDtAAMwXDti6jAWOtW+Ua
-PmvQQ/Qjo5op0TY1r28YtytJ+ei+RnqeQIv23BOWYz+V6cFDDmmKBxg7jtvz36I5WRhofbcWmuff
-D1SDfiGMxShEV/OJe6XxOrQIgaph9lTltEKdcMjjcfjD/4uDMy3ZLjyMj4Ss4vmaN4XaOdQNQIRc
-xFkKrZDulSZiKfzrzcL0b7zR+KO1eFdBjcCFoiTYEJ38mppFmDlgRW0U6tYIWnjTFqzaWacfjbN/
-x2xomhznXoc2DQlOtJXNHGoxDMUgFVsaDVICLbZ6ugWdV0dMlis=
------END CERTIFICATE-----

+ 24 - 0
src/main/resources/csr/appCertPublicKey_2021003148600027.crt

@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEvjCCA6agAwIBAgIQICIJCOAk87LE7ZF5F6IqnzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
+BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
+YXNzIDEgUjEwHhcNMjIwOTA4MDg1NTMzWhcNMjcwOTA3MDg1NTMzWjCBhTELMAkGA1UEBhMCQ04x
+OTA3BgNVBAoMMOiJvuWNmuWliOWFi+aZuuiDveenkeaKgO+8iOeDn+WPsO+8ieaciemZkOWFrOWP
+uDEPMA0GA1UECwwGQWxpcGF5MSowKAYDVQQDDCEyMDg4NDQxOTMzNDg4ODE3LTIwMjEwMDMxNDg2
+MDAwMjcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVnnBeJupe8Dg6kpJOiFBJUFdv
+ZdUsSaKBJJXIw48sJFxEgYuqu3eVEGNpRdZaMKHQ26fn4NYg9cFW3gfryyNwKnxVWdZiGma/p2Yg
+CPTVtkhdc+6Q8m5mPVMoujDO+t7b5MweKWO8f1pwqOJIVQyYwakFJukXPtfC94QKUMdyQFh2x5Nr
+IUBlQUG6fB5F8bJOUz3mUT4uvCufRQc14/YaQStalm7JI7QOmL7K5svJa++i4w4bcDJzWJaWQXlk
+bJr40Zfm3rbCUuAoh46qzqqc7coW/ut66TSXE44emF1nJVq6U5oS5oRO8RLwxnfGWPszOnEYYFL6
+TEMU0X4x+auBAgMBAAGjggEpMIIBJTAfBgNVHSMEGDAWgBRxB+IEYRbk5fJl6zEPyeD0PJrVkTAd
+BgNVHQ4EFgQUhWFBy64VoqJ1SuZU7fw6KO3A5jMwQAYDVR0gBDkwNzA1BgdggRwBbgEBMCowKAYI
+KwYBBQUHAgEWHGh0dHA6Ly9jYS5hbGlwYXkuY29tL2Nwcy5wZGYwDgYDVR0PAQH/BAQDAgbAMC8G
+A1UdHwQoMCYwJKAioCCGHmh0dHA6Ly9jYS5hbGlwYXkuY29tL2NybDY5LmNybDBgBggrBgEFBQcB
+AQRUMFIwKAYIKwYBBQUHMAKGHGh0dHA6Ly9jYS5hbGlwYXkuY29tL2NhNi5jZXIwJgYIKwYBBQUH
+MAGGGmh0dHA6Ly9jYS5hbGlwYXkuY29tOjgzNDAvMA0GCSqGSIb3DQEBCwUAA4IBAQDXcG+IkB48
+nn3FZEZuJ5RID9Y06cO9prcTDrvSzjedOUkZQUqvbyEhbdlQVjewbJCrwZ74ofovughmjd07sElt
+At7gppBqJh3fYXDw/vzF1RtrAVllYcKImvh5IbECcH5ybejQ2E2al0HYtsEVXOLN9bh+BdITInz2
+RVAF8UH7mN4J5YLBzWGV6lcuQYK+SwAywb/I5NQoJM8Xh9AWHwzB2YHil4ASffB+o109DMmpToqk
+aq6ptdQymwRrbD2bIIqKRaAiO0xF0m1ZFKefFTG4FZXE0CzRn7ia/ecOxDtC7F0X3fLWwAzXuogJ
+tqghzN1cYdZ0auSuh4YCwHNMVb2m
+-----END CERTIFICATE-----