Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
冷斌
bds
Commits
e82f237b
Commit
e82f237b
authored
Jun 04, 2020
by
冷斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
微信 支付
parent
2bf62355
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
122 additions
and
122 deletions
+122
-122
Application/Home/Controller/WxpayController.class.php
+13
-13
Application/Home/Model/WxpayModel.class.php
+59
-59
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/WxPay.pub.config.php
+4
-4
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/cacert/apiclient_cert.pem
+20
-20
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/cacert/apiclient_key.pem
+26
-26
No files found.
Application/Home/Controller/WxpayController.class.php
View file @
e82f237b
...
...
@@ -23,7 +23,7 @@ class WxpayController extends Controller{
$total_fee
=
$find
[
's_price'
]
*
100
;
//支付金额(乘以100)
// $total_fee = 0.01 * 100;//支付金额(乘以100)
$notify_url
=
'http://www.
yhctvip
.com/Home/Wxpay/notifyurl'
;
//回调地址
$notify_url
=
'http://www.
zjyg6
.com/Home/Wxpay/notifyurl'
;
//回调地址
$order
=
$wx
->
getPrePayOrder
(
$body
,
$out_trade_no
,
$total_fee
,
$notify_url
);
//调用微信支付的方法
...
...
@@ -33,13 +33,13 @@ class WxpayController extends Controller{
// echo json_encode(array('status' => 1, 'prepay_order' => no_null($order1)));
$oty
=
M
(
'order'
)
->
where
(
'order_num = "'
.
$out_trade_no
.
'"'
)
->
setField
(
'order_type'
,
2
);
$otys
=
M
(
'order'
)
->
where
(
'order_num = "'
.
$out_trade_no
.
'"'
)
->
setField
(
'pay_type'
,
3
);
$mem
=
M
(
'order'
)
->
field
(
'id'
)
->
where
(
'order_num = "'
.
$out_trade_no
.
'"'
)
->
find
();
$ordertype
=
M
(
'order_goods'
)
->
where
(
'order_id = '
.
$mem
[
'id'
])
->
setField
(
'status'
,
2
);
//
$oty = M('order')->where('order_num = "'.$out_trade_no.'"')->setField('order_type',2);
//
//
$otys = M('order')->where('order_num = "'.$out_trade_no.'"')->setField('pay_type',3);
//
//
$mem = M('order')->field('id')->where('order_num = "'.$out_trade_no.'"')->find();
//
//
$ordertype = M('order_goods')->where('order_id = '.$mem['id'])->setField('status',2);
...
...
@@ -74,7 +74,7 @@ class WxpayController extends Controller{
$input
->
SetTime_start
(
date
(
"YmdHis"
));
$input
->
SetTime_expire
(
date
(
"YmdHis"
,
time
()
+
600
));
$input
->
SetGoods_tag
(
"test"
);
$input
->
SetNotify_url
(
"http://www.
yhctvip
.com/Home/Wxpay/notifyurl"
);
$input
->
SetNotify_url
(
"http://www.
zjyg6
.com/Home/Wxpay/notifyurl"
);
$input
->
SetTrade_type
(
"JSAPI"
);
$input
->
SetOpenid
(
$tsk
[
'openid'
]);
$order
=
\WxPayApi
::
unifiedOrder
(
$input
);
...
...
@@ -100,7 +100,8 @@ class WxpayController extends Controller{
$notify
=
new
\Notify_pub
();
//存储微信的回调
$xml
=
$GLOBALS
[
'HTTP_RAW_POST_DATA'
];
// $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$xml
=
file_get_contents
(
'php://input'
);
$notify
->
saveData
(
$xml
);
//验证签名,并回应微信。
...
...
@@ -114,7 +115,6 @@ class WxpayController extends Controller{
$notify
->
setReturnParameter
(
"return_code"
,
"SUCCESS"
);
//设置返回码
}
$returnXml
=
$notify
->
returnXml
();
echo
$returnXml
;
//==商户根据实际情况设置相应的处理流程,此处仅作举例=======
...
...
@@ -165,9 +165,9 @@ class WxpayController extends Controller{
//
// file_put_contents($filename, $oty.'=='.$ordertype, FILE_APPEND);
echo
'SUCCESS'
;
//
echo 'SUCCESS';
}
}
echo
$returnXml
;
}
}
Application/Home/Model/WxpayModel.class.php
View file @
e82f237b
<?php
namespace
Home\Model
;
use
Think\Model
;
class
WxpayModel
{
class
WxpayModel
{
//接口API URL前缀
const
API_URL_PREFIX
=
'https://api.mch.weixin.qq.com'
;
//下单地址URL
...
...
@@ -37,15 +41,18 @@ class WxpayModel{
private
$SSLCERT_PATH
;
private
$SSLKEY_PATH
;
//所有参数
private
$params
=
array
();
private
$params
=
[];
private
$config
=
[
'appid'
=>
"wxea130ad0abf37505"
,
/*微信开放平台上的应用id*/
'appSecret'
=>
'a9e52f1e9368ee2655cfbb7ad8cf1121'
,
'mch_id'
=>
"1592613321"
,
//"1440493402", /*微信申请成功之后邮件中的商户id*/
'api_key'
=>
"To3VvVD8X9aTjqUpk2uLFRq6A9vjWzZb"
/*在微信商户平台上自己设定的api密钥 32位*/
];
private
$config
=
array
(
'appid'
=>
"wx8504016ab1c4530f"
,
/*微信开放平台上的应用id*/
'mch_id'
=>
"1536579071"
,
//"1440493402", /*微信申请成功之后邮件中的商户id*/
'api_key'
=>
"caiyin19890000000000000000000000"
/*在微信商户平台上自己设定的api密钥 32位*/
);
//获取预支付订单
public
function
getPrePayOrder
(
$body
,
$out_trade_no
,
$total_fee
,
$notify_url
){
public
function
getPrePayOrder
(
$body
,
$out_trade_no
,
$total_fee
,
$notify_url
)
{
$url
=
"https://api.mch.weixin.qq.com/pay/unifiedorder"
;
$onoce_str
=
$this
->
getRandChar
(
32
);
...
...
@@ -81,7 +88,8 @@ class WxpayModel{
}
//执行第二次签名,才能返回给客户端使用
public
function
getOrder
(
$prepayId
){
public
function
getOrder
(
$prepayId
)
{
$data
[
"appid"
]
=
$this
->
config
[
"appid"
];
$data
[
"noncestr"
]
=
$this
->
getRandChar
(
32
);;
$data
[
"package"
]
=
"Sign=WXPay"
;
...
...
@@ -99,8 +107,7 @@ class WxpayModel{
*/
function
getSign
(
$Obj
)
{
foreach
(
$Obj
as
$k
=>
$v
)
{
foreach
(
$Obj
as
$k
=>
$v
)
{
$Parameters
[
strtolower
(
$k
)]
=
$v
;
}
//签名步骤一:按字典序排序参数
...
...
@@ -108,7 +115,7 @@ class WxpayModel{
$String
=
$this
->
formatBizQueryParaMap
(
$Parameters
,
false
);
//echo "【string】 =".$String."</br>";
//签名步骤二:在string后加入KEY
$String
=
$String
.
"&key="
.
$this
->
config
[
'api_key'
];
$String
=
$String
.
"&key="
.
$this
->
config
[
'api_key'
];
// echo "<textarea style='width: 50%; height: 150px;'>$String</textarea> <br />";
//签名步骤三:MD5加密
$result_
=
strtoupper
(
md5
(
$String
));
...
...
@@ -116,13 +123,14 @@ class WxpayModel{
}
//获取指定长度的随机字符串
function
getRandChar
(
$length
){
function
getRandChar
(
$length
)
{
$str
=
null
;
$strPol
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
;
$max
=
strlen
(
$strPol
)
-
1
;
$max
=
strlen
(
$strPol
)
-
1
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$str
.=
$strPol
[
rand
(
0
,
$max
)];
//rand($min,$max)生成介于min和max两个数之间的一个随机整数
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$str
.=
$strPol
[
rand
(
0
,
$max
)];
//rand($min,$max)生成介于min和max两个数之间的一个随机整数
}
return
$str
;
...
...
@@ -132,33 +140,31 @@ class WxpayModel{
function
arrayToXml
(
$arr
)
{
$xml
=
"<xml>"
;
foreach
(
$arr
as
$key
=>
$val
)
{
if
(
is_numeric
(
$val
))
{
$xml
.=
"<"
.
$key
.
">"
.
$val
.
"</"
.
$key
.
">"
;
foreach
(
$arr
as
$key
=>
$val
)
{
if
(
is_numeric
(
$val
))
{
$xml
.=
"<"
.
$key
.
">"
.
$val
.
"</"
.
$key
.
">"
;
}
else
{
$xml
.=
"<"
.
$key
.
"><![CDATA["
.
$val
.
"]]></"
.
$key
.
">"
;
}
else
$xml
.=
"<"
.
$key
.
"><![CDATA["
.
$val
.
"]]></"
.
$key
.
">"
;
}
$xml
.=
"</xml>"
;
$xml
.=
"</xml>"
;
return
$xml
;
}
//post https请求,CURLOPT_POSTFIELDS xml格式
function
postXmlCurl
(
$xml
,
$url
,
$second
=
30
)
function
postXmlCurl
(
$xml
,
$url
,
$second
=
30
)
{
//初始化curl
$ch
=
curl_init
();
//超时时间
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
$second
);
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
$second
);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYHOST
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYHOST
,
FALSE
);
//设置header
curl_setopt
(
$ch
,
CURLOPT_HEADER
,
FALSE
);
//要求结果为字符串且输出到屏幕上
...
...
@@ -169,15 +175,12 @@ class WxpayModel{
//运行curl
$data
=
curl_exec
(
$ch
);
//返回结果
if
(
$data
)
{
if
(
$data
)
{
curl_close
(
$ch
);
return
$data
;
}
else
{
}
else
{
$error
=
curl_errno
(
$ch
);
echo
"curl出错,错误码:
$error
"
.
"<br>"
;
echo
"curl出错,错误码:
$error
"
.
"<br>"
;
echo
"<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>"
;
curl_close
(
$ch
);
return
false
;
...
...
@@ -206,62 +209,59 @@ class WxpayModel{
{
$buff
=
""
;
ksort
(
$paraMap
);
foreach
(
$paraMap
as
$k
=>
$v
)
{
if
(
$urlencode
)
{
foreach
(
$paraMap
as
$k
=>
$v
)
{
if
(
$urlencode
)
{
$v
=
urlencode
(
$v
);
}
$buff
.=
strtolower
(
$k
)
.
"="
.
$v
.
"&"
;
}
$reqPar
=
''
;
if
(
strlen
(
$buff
)
>
0
)
{
$reqPar
=
substr
(
$buff
,
0
,
strlen
(
$buff
)
-
1
);
$reqPar
=
''
;
if
(
strlen
(
$buff
)
>
0
)
{
$reqPar
=
substr
(
$buff
,
0
,
strlen
(
$buff
)
-
1
);
}
return
$reqPar
;
}
/**
xml转成数组
*
xml转成数组
*/
// function xmlstr_to_array($xmlstr) {
// $doc = new DOMDocument();
// $doc->loadXML($xmlstr);
// return $this->domnode_to_array($doc->documentElement);
// }
function
domnode_to_array
(
$node
)
{
$output
=
array
();
function
domnode_to_array
(
$node
)
{
$output
=
[];
switch
(
$node
->
nodeType
)
{
case
XML_CDATA_SECTION_NODE
:
case
XML_TEXT_NODE
:
$output
=
trim
(
$node
->
textContent
);
break
;
case
XML_ELEMENT_NODE
:
for
(
$i
=
0
,
$m
=
$node
->
childNodes
->
length
;
$i
<
$m
;
$i
++
)
{
for
(
$i
=
0
,
$m
=
$node
->
childNodes
->
length
;
$i
<
$m
;
$i
++
)
{
$child
=
$node
->
childNodes
->
item
(
$i
);
$v
=
$this
->
domnode_to_array
(
$child
);
if
(
isset
(
$child
->
tagName
))
{
if
(
isset
(
$child
->
tagName
))
{
$t
=
$child
->
tagName
;
if
(
!
isset
(
$output
[
$t
]))
{
$output
[
$t
]
=
array
()
;
if
(
!
isset
(
$output
[
$t
]))
{
$output
[
$t
]
=
[]
;
}
$output
[
$t
][]
=
$v
;
}
elseif
(
$v
)
{
$output
=
(
string
)
$v
;
}
elseif
(
$v
)
{
$output
=
(
string
)
$v
;
}
}
if
(
is_array
(
$output
))
{
if
(
$node
->
attributes
->
length
)
{
$a
=
array
()
;
foreach
(
$node
->
attributes
as
$attrName
=>
$attrNode
)
{
$a
[
$attrName
]
=
(
string
)
$attrNode
->
value
;
if
(
is_array
(
$output
))
{
if
(
$node
->
attributes
->
length
)
{
$a
=
[]
;
foreach
(
$node
->
attributes
as
$attrName
=>
$attrNode
)
{
$a
[
$attrName
]
=
(
string
)
$attrNode
->
value
;
}
$output
[
'@attributes'
]
=
$a
;
}
foreach
(
$output
as
$t
=>
$v
)
{
if
(
is_array
(
$v
)
&&
count
(
$v
)
==
1
&&
$t
!=
'@attributes'
)
{
if
(
is_array
(
$v
)
&&
count
(
$v
)
==
1
&&
$t
!=
'@attributes'
)
{
$output
[
$t
]
=
$v
[
0
];
}
}
...
...
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/WxPay.pub.config.php
View file @
e82f237b
...
...
@@ -6,11 +6,11 @@ class WxPayConf_pub
{
//=======【基本信息设置】=====================================
//微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看
const
APPID
=
'wx
8504016ab1c4530f
'
;
const
APPID
=
'wx
ea130ad0abf37505
'
;
//受理商ID,身份标识
const
MCHID
=
'15
3657907
1'
;
const
MCHID
=
'15
9261332
1'
;
//商户支付密钥Key。审核通过后,在微信发送的邮件中查看
const
KEY
=
'
caiyin19890000000000000000000000
'
;
const
KEY
=
'
To3VvVD8X9aTjqUpk2uLFRq6A9vjWzZb
'
;
//JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看
const
APPSECRET
=
''
;
...
...
@@ -25,7 +25,7 @@ class WxPayConf_pub
//=======【异步通知url设置】===================================
//异步通知url,商户根据实际开发过程设定
const
NOTIFY_URL
=
'http://www.
yhctvip
.com/Home/Wxpay/notifyurl'
;
const
NOTIFY_URL
=
'http://www.
zjyg6
.com/Home/Wxpay/notifyurl'
;
//=======【curl超时设置】===================================
//本例程通过curl使用HTTP POST方法,此处可修改其超时时间,默认为30秒
...
...
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/cacert/apiclient_cert.pem
View file @
e82f237b
-----BEGIN CERTIFICATE-----
MIID
9jCCAt6gAwIBAgIUIE4svb4LuIRq46mWNRyH9jhw0xo
wDQYJKoZIhvcNAQEL
MIID
/DCCAuSgAwIBAgIUI2au3Rc6pgUtcw/KkNLKHu+KtZE
wDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNM
TkwNTI4MDgwNzI0WhcNMjQwNTI2MDgwNzI0WjCBhz
ETMBEGA1UEAwwK
MTU
zNjU3OTA3MTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTMwMQ
YDVQQL
D
Crlm5vlt53mmJPotK3kupHllYbnvZHnu5znp5HmioDmnInpmZDlhazlj7gxCzAJ
BgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMewBiEGTT+eSH2yocv4B6AF2g6fo23cdAO1+L0I6GCjwIc1
ZVdlHvwS1PYBSVsDZ5C2E/5pd8lsVJGcpw3kYNRaBrs+iCpNGoldJG8m8wqw4Fzy
9lZxqc2cyBrKTvlYfOhCm8PY105cVPmcGYbzKsFvVgSoiPS9T7eLV1VxGe+lKusE
SkXEexO43cZhAuQE5BtLHmazjjDjMOQ3Fjv36xnZ8x7IJrcQ80Nb7C6y7kim34RF
5E9H0zMJwlqMKEfyiCZe+IHhvrZxlY+jZKFijcdO3DBSTqp9nZhDpP9KCRAqpqP+
AIFRgxwYbuAo3wCHTfmDBpdzBCla2L1CdnP8eX8CAwEAAaOBgTB/MAkGA1UdEwQC
MAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0
cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2
Q
UQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEAGiDxCcEf
O1Kt9QHGM7iQPY3gu0o9tLI4kDnmUaw4e3ZfGiGpT50hcFYMnd6rs0w+1Bbi66KR
REJFgm1seja4tZvbINTS/37r81+oRKBllneGBa48AqBCb8xC2sz43QlX12ySS1dO
JjxMLgFiclPJu7R/5D3UJr3pziKpz40o4nlQQXYQjbYifcQE495STou/sutzwnMs
ZLn8twcUlnf6wyxF3VtJpryXO3iqn5/dVf5nCFHuqwt+8qfSJnIE0XnBwaVLXd4R
sK9pfnRIxybHTOWHgnReGYmUpbExAG327w+Epk4z0IeAd7lk+WeQmqp3QIzdwZ/k
UolkK/nDPTJMsA
==
Q0EwHhcNM
jAwNjAzMDgwMTU4WhcNMjUwNjAyMDgwMTU4WjCBjT
ETMBEGA1UEAwwK
MTU
5MjYxMzMyMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNw
YDVQQL
D
DDmlIDmnp3oirHluILlvIDlv4PkuIDotK3nvZHnu5znp5HmioDmnInpmZDlhazl
j7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKx5WtUfG34HbedELPUgPN6us8XUoQknL1PZoaW5
NWKBTf2en4fCt05CP7slEefUAm4fUrJJL5it0SSSQkwG+RiqB5fw0PQEgMez7MM3
KzQI1aOdSwmLatyee7yFYeccB3xYIlACvai39qrHc+nPiUMjc3ZaIza7fivl45e7
0H/etyAiJ+hFsEMViD+WffI8fufr1mPIwkcCfpLoSefrazMZtBzrJwFzNXnpL1lH
STEjtyHdkNSrOv2nnVpg2F0yq3AfoykGRQrDc+vPS3XzoD39MIasPgM4WcvcBVHQ
mHxbgNGZY0b8TtPKb90DouACwFM5QjChncRlHtda6w7D/a8CAwEAAaOBgTB/MAkG
A1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9l
dmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERC
Q
zA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEA
KBKZtu0ine7uFOxieMLRw5m0HbOcmawuFJ+hw1EBvJ/iKJapnCxZr3egGhv950zz
u8g+ktZDBChvRYT6s65+nb+0oAkL+hZyj4SfcPFblCMc7qkN1903o5HSPc+QXK4B
KGgmXvFMXSHPVa04utgxeYzOOTo3VzEXGP3R4eXmyp38MPl7WhmMeM7J00zdpyrV
5ig4zOEJ0H3FZZS5wlZ2qoDzpRh8MvYgpe4Bb/YACNfbnqa6vjriKFz3iRF+ezOc
H3E3YbP/2L69pXDkIAHeyo94nnTbUVpiG9g4WOF+EkJsAQC6ZBL6PFrhpdpCVD5F
sQA60QKj87T/WHsceRo1ow
==
-----END CERTIFICATE-----
ThinkPHP/Library/Vendor/Wxpay/WxPayPubHelper/cacert/apiclient_key.pem
View file @
e82f237b
-----BEGIN PRIVATE KEY-----
MIIEv
QIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHsAYhBk0/nkh9
sqHL+AegBdoOn6Nt3HQDtfi9COhgo8CHNWVXZR78EtT2AUlbA2eQthP+aXfJbFSR
nKcN5GDUWga7PogqTRqJXSRvJvMKsOBc8vZWcanNnMgayk75WHzoQpvD2NdOXFT5
nBmG8yrBb1YEqIj0vU+3i1dVcRnvpSrrBEpFxHsTuN3GYQLkBOQbSx5ms44w4zDk
NxY79+sZ2fMeyCa3EPNDW+wusu5Ipt+EReRPR9MzCcJajChH8ogmXviB4b62cZWP
o2ShYo3HTtwwUk6qfZ2YQ6T/SgkQKqaj/gCBUYMcGG7gKN8Ah035gwaXcwQpWti9
QnZz/Hl/AgMBAAECggEAQernewtbgL69a1EGfBB6Y+bKnr0v89osKfVuEOjZ3Nzx
dzC3LWxiGBAXYMX38yVikLCqVPd35XPvTsoJk1pqZG77feAcjuo48lNe7ZpL7KGK
z
uQdUVfgF9HDdKSIAWOmh/1E8heoq2NrYaKYAqZO3N/l40/HNhMwN4S15ayaRTMI
3xWyCXVDBGKKr2QY18DyEWOpbJP2i019YvIESVe5TyAx12pvsAppKx1PnXVVHmUF
1ZKcV81swjmMLTYulInKK5cIGsNaHask18Pqxn+Kow/HC0moZcTDvL1QA/F4XsAS
EnVqRkV7JDMpKdZ5Xdhqc+rparbezzQkGGnTD8H44QKBgQD3hzL9ACRgu+KXpfTm
BOCA0BvcKFHSa4RipZNq9R/r1hmH5WuK/pILqqrgGJW7pfStmqSlm18BDMkKdBLO
EcToWjs1mQ4d/v1JjcDAzOLer3FY92/QA5bNY36Xr/rXf+72RM9KmQVhVDPHsZfT
hbGAxgsySS6f+SQ4HC96Ff1nJwKBgQDOhadmIbtQToqTchwR8IQMvdP9xheq+fr+
/g+GsivExllXCovVXdQQ4FkSBH64bNps29O5+fcDnc/lSJdE7U4J8uQgOo2ozGhp
CQwY4SIFup1T8pxZ4Y6XMxO12O+T0uuFXRUMJtO5WDUmcsEAowX7oXQfHqunWlQT
qk4WT4AR6QKBgD/l4N266aknF2l6Z+vxGltmXarJpcWiB7zHbXTQ7nqc/F4+dTKe
YOkuF4peDlkwkCc4ooQ1xaKpwEQ4jpovsBsjH+HILwLDTnNsanPa8D34IFSNG4oh
Qw6mPom93g0/c1qTjMd/FQp5CBzm1YC/JIFPnphOmACn+heZ/w+PGalFAoGAb+M1
SD3qL539sdhWoNl/kS+fFJQn6ne4pkGaw8zvrZIQgPmzvIszA1mop/xLczt2Mxf9
43ore4gaRAxJ+AvhBb7UHSnb6aGkx5MhPLFsL1JlPj/ouUFccUo42YKIebwB4aUG
bCj0+Ctz0DrHmcK40RUtxlZlhSuI9YaE+81ig1ECgYEA9BPLZRQkJrVHaIYZIC8v
xL6GWKxOyeFHs2HuAiDnml15xJTgJeYV35TkkopG5jb91YwJ0mqgGuYEvXLWYPbr
Rky/wA5FrDtorp5yv9l+P3tUCOEPjTvhZ9FGzDsppyP5gunynN1J6AbjRM8GlIGX
ZM1/LQEsz0tHgSvS+WN9vBY=
MIIEv
gIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCseVrVHxt+B23n
RCz1IDzerrPF1KEJJy9T2aGluTVigU39np+HwrdOQj+7JRHn1AJuH1KySS+YrdEk
kkJMBvkYqgeX8ND0BIDHs+zDNys0CNWjnUsJi2rcnnu8hWHnHAd8WCJQAr2ot/aq
x3Ppz4lDI3N2WiM2u34r5eOXu9B/3rcgIifoRbBDFYg/ln3yPH7n69ZjyMJHAn6S
6Enn62szGbQc6ycBczV56S9ZR0kxI7ch3ZDUqzr9p51aYNhdMqtwH6MpBkUKw3Pr
z0t186A9/TCGrD4DOFnL3AVR0Jh8W4DRmWNG/E7Tym/dA6LgAsBTOUIwoZ3EZR7X
WusOw/2vAgMBAAECggEBAIp7ohgPMxbdRjxzvBlRui4eXhARKv/ba5/K1YToEdo2
8nUaQQNTr7TxcpSELj1TOGRNWCv4oXPY1F2l5f9/ddB87T3tSQk0+GXgrNEN4e2U
z
lzhtddDDxl3UujKvBJBqi0H4v0VRk1K8I6tOP/Z+F9k/pdfxnhy0NrUagpx7fZM
fXvVUTkq0FffO4T81P0ONUpwV9peVF0ZgcSlvPead1kheqbhZGoE/KKVqFIcKM7M
HJFi97CQQs3QLrhJ4al5AxhAComf4yky1bE8tYDk6fxiIj6NP7a8v/5Nlob+Ah9W
RS40enj6Yey7tpwgFXVtkb0Xo1vm//isKlXt4RtJVckCgYEA47tFaXa//3zNpt0H
SFcwHS3Zl/ObTSGrS6MgNszMz0KqPTi3eMbyftIwhWnpOQq4SC/GgteKVIeU2pX4
1TWPUzVjw1lp5vrZ1It+xeOZ5i7RS7hIiiTn4KQHGvHcCOMwGjZQsuw9utY2zyoG
5hRnZ322LMAXkbo4y42Vb06w95UCgYEAweIkK9cAKLPfr24qYMNvu4413SUYcTQB
GWeMyrkfSR1q9yKmBU4E5YlCopIRxVnrs5zGc4mp0sC5965op50awzMEcjggv9fK
TCkSHXaMy4hmuQ/V6pl3wSC4nKYsfjbNeZtby5OgYHSL7f6mHRwUCptZcnNTO+Nt
hBkYpSkBPzMCgYAFEBfF9XblRjAIQqezywRt0aQhxa+xMkttng3MShdPkEram5Uw
oTOo8CFWBfnCY+Oe7zj5lbMkl/MOPQFQNCWgkvJJ2IYLNY58NDG4UowMWwQaK9mp
AJMLInpp9fCPXgWmv4hhwfDJY5PKXUPT/6Yg3eGb8xVTDxHOLLKiy9wRVQKBgAYD
rt2RSNb6ZXj6sOPZjDDEQ5V9nhl85H/WP37WaUsKV5QdBgtqFSrNrDyAzX5SwMYM
mfdhkNwR0HMHfQWeEQN3JK8qYJGy7vqX15EEaW+y5oTdIeSqKBXcnv11BjJQHuWj
1SAmjzYOx3x1hs+mXFTL5uVvAGj+MBqF8MbG09wTAoGBAJoo+YUu9l9d6vkLBS71
ZHrZUNgog5MWymRLLTemUTwzSldK0ATi0hIR9ispE4exQhCgmLkZMbV4RlSNMooW
yoT8ScWQm2mUPWSbCQztF4TlJMHzdDARUqwixzSufnnu7+LCC6Yp9FOPed9ethvn
pmuJQwO7Kqoq29tMkgA8ILUs
-----END PRIVATE KEY-----
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment