Commit e82f237b by 冷斌

微信 支付

parent 2bf62355
......@@ -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;
}
}
<?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];
}
}
......
......@@ -6,11 +6,11 @@ class WxPayConf_pub
{
//=======【基本信息设置】=====================================
//微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看
const APPID = 'wx8504016ab1c4530f';
const APPID = 'wxea130ad0abf37505';
//受理商ID,身份标识
const MCHID = '1536579071';
const MCHID = '1592613321';
//商户支付密钥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秒
......
-----BEGIN CERTIFICATE-----
MIID9jCCAt6gAwIBAgIUIE4svb4LuIRq46mWNRyH9jhw0xowDQYJKoZIhvcNAQEL
MIID/DCCAuSgAwIBAgIUI2au3Rc6pgUtcw/KkNLKHu+KtZEwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMTkwNTI4MDgwNzI0WhcNMjQwNTI2MDgwNzI0WjCBhzETMBEGA1UEAwwK
MTUzNjU3OTA3MTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTMwMQYDVQQL
DCrlm5vlt53mmJPotK3kupHllYbnvZHnu5znp5HmioDmnInpmZDlhazlj7gxCzAJ
BgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMewBiEGTT+eSH2yocv4B6AF2g6fo23cdAO1+L0I6GCjwIc1
ZVdlHvwS1PYBSVsDZ5C2E/5pd8lsVJGcpw3kYNRaBrs+iCpNGoldJG8m8wqw4Fzy
9lZxqc2cyBrKTvlYfOhCm8PY105cVPmcGYbzKsFvVgSoiPS9T7eLV1VxGe+lKusE
SkXEexO43cZhAuQE5BtLHmazjjDjMOQ3Fjv36xnZ8x7IJrcQ80Nb7C6y7kim34RF
5E9H0zMJwlqMKEfyiCZe+IHhvrZxlY+jZKFijcdO3DBSTqp9nZhDpP9KCRAqpqP+
AIFRgxwYbuAo3wCHTfmDBpdzBCla2L1CdnP8eX8CAwEAAaOBgTB/MAkGA1UdEwQC
MAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0
cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2
QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEAGiDxCcEf
O1Kt9QHGM7iQPY3gu0o9tLI4kDnmUaw4e3ZfGiGpT50hcFYMnd6rs0w+1Bbi66KR
REJFgm1seja4tZvbINTS/37r81+oRKBllneGBa48AqBCb8xC2sz43QlX12ySS1dO
JjxMLgFiclPJu7R/5D3UJr3pziKpz40o4nlQQXYQjbYifcQE495STou/sutzwnMs
ZLn8twcUlnf6wyxF3VtJpryXO3iqn5/dVf5nCFHuqwt+8qfSJnIE0XnBwaVLXd4R
sK9pfnRIxybHTOWHgnReGYmUpbExAG327w+Epk4z0IeAd7lk+WeQmqp3QIzdwZ/k
UolkK/nDPTJMsA==
Q0EwHhcNMjAwNjAzMDgwMTU4WhcNMjUwNjAyMDgwMTU4WjCBjTETMBEGA1UEAwwK
MTU5MjYxMzMyMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
DDDmlIDmnp3oirHluILlvIDlv4PkuIDotK3nvZHnu5znp5HmioDmnInpmZDlhazl
j7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKx5WtUfG34HbedELPUgPN6us8XUoQknL1PZoaW5
NWKBTf2en4fCt05CP7slEefUAm4fUrJJL5it0SSSQkwG+RiqB5fw0PQEgMez7MM3
KzQI1aOdSwmLatyee7yFYeccB3xYIlACvai39qrHc+nPiUMjc3ZaIza7fivl45e7
0H/etyAiJ+hFsEMViD+WffI8fufr1mPIwkcCfpLoSefrazMZtBzrJwFzNXnpL1lH
STEjtyHdkNSrOv2nnVpg2F0yq3AfoykGRQrDc+vPS3XzoD39MIasPgM4WcvcBVHQ
mHxbgNGZY0b8TtPKb90DouACwFM5QjChncRlHtda6w7D/a8CAwEAAaOBgTB/MAkG
A1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9l
dmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERC
QzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEA
KBKZtu0ine7uFOxieMLRw5m0HbOcmawuFJ+hw1EBvJ/iKJapnCxZr3egGhv950zz
u8g+ktZDBChvRYT6s65+nb+0oAkL+hZyj4SfcPFblCMc7qkN1903o5HSPc+QXK4B
KGgmXvFMXSHPVa04utgxeYzOOTo3VzEXGP3R4eXmyp38MPl7WhmMeM7J00zdpyrV
5ig4zOEJ0H3FZZS5wlZ2qoDzpRh8MvYgpe4Bb/YACNfbnqa6vjriKFz3iRF+ezOc
H3E3YbP/2L69pXDkIAHeyo94nnTbUVpiG9g4WOF+EkJsAQC6ZBL6PFrhpdpCVD5F
sQA60QKj87T/WHsceRo1ow==
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHsAYhBk0/nkh9
sqHL+AegBdoOn6Nt3HQDtfi9COhgo8CHNWVXZR78EtT2AUlbA2eQthP+aXfJbFSR
nKcN5GDUWga7PogqTRqJXSRvJvMKsOBc8vZWcanNnMgayk75WHzoQpvD2NdOXFT5
nBmG8yrBb1YEqIj0vU+3i1dVcRnvpSrrBEpFxHsTuN3GYQLkBOQbSx5ms44w4zDk
NxY79+sZ2fMeyCa3EPNDW+wusu5Ipt+EReRPR9MzCcJajChH8ogmXviB4b62cZWP
o2ShYo3HTtwwUk6qfZ2YQ6T/SgkQKqaj/gCBUYMcGG7gKN8Ah035gwaXcwQpWti9
QnZz/Hl/AgMBAAECggEAQernewtbgL69a1EGfBB6Y+bKnr0v89osKfVuEOjZ3Nzx
dzC3LWxiGBAXYMX38yVikLCqVPd35XPvTsoJk1pqZG77feAcjuo48lNe7ZpL7KGK
zuQdUVfgF9HDdKSIAWOmh/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=
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCseVrVHxt+B23n
RCz1IDzerrPF1KEJJy9T2aGluTVigU39np+HwrdOQj+7JRHn1AJuH1KySS+YrdEk
kkJMBvkYqgeX8ND0BIDHs+zDNys0CNWjnUsJi2rcnnu8hWHnHAd8WCJQAr2ot/aq
x3Ppz4lDI3N2WiM2u34r5eOXu9B/3rcgIifoRbBDFYg/ln3yPH7n69ZjyMJHAn6S
6Enn62szGbQc6ycBczV56S9ZR0kxI7ch3ZDUqzr9p51aYNhdMqtwH6MpBkUKw3Pr
z0t186A9/TCGrD4DOFnL3AVR0Jh8W4DRmWNG/E7Tym/dA6LgAsBTOUIwoZ3EZR7X
WusOw/2vAgMBAAECggEBAIp7ohgPMxbdRjxzvBlRui4eXhARKv/ba5/K1YToEdo2
8nUaQQNTr7TxcpSELj1TOGRNWCv4oXPY1F2l5f9/ddB87T3tSQk0+GXgrNEN4e2U
zlzhtddDDxl3UujKvBJBqi0H4v0VRk1K8I6tOP/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-----
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment