Commit e82f237b by 冷斌

微信 支付

parent 2bf62355
...@@ -23,7 +23,7 @@ class WxpayController extends Controller{ ...@@ -23,7 +23,7 @@ class WxpayController extends Controller{
$total_fee = $find['s_price'] * 100;//支付金额(乘以100) $total_fee = $find['s_price'] * 100;//支付金额(乘以100)
// $total_fee = 0.01 * 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);//调用微信支付的方法 $order = $wx->getPrePayOrder($body, $out_trade_no, $total_fee, $notify_url);//调用微信支付的方法
...@@ -33,13 +33,13 @@ class WxpayController extends Controller{ ...@@ -33,13 +33,13 @@ class WxpayController extends Controller{
// echo json_encode(array('status' => 1, 'prepay_order' => no_null($order1))); // echo json_encode(array('status' => 1, 'prepay_order' => no_null($order1)));
$oty = M('order')->where('order_num = "'.$out_trade_no.'"')->setField('order_type',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); // $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(); // $mem = M('order')->field('id')->where('order_num = "'.$out_trade_no.'"')->find();
//
$ordertype = M('order_goods')->where('order_id = '.$mem['id'])->setField('status',2); // $ordertype = M('order_goods')->where('order_id = '.$mem['id'])->setField('status',2);
...@@ -74,7 +74,7 @@ class WxpayController extends Controller{ ...@@ -74,7 +74,7 @@ class WxpayController extends Controller{
$input->SetTime_start(date("YmdHis")); $input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test"); $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->SetTrade_type("JSAPI");
$input->SetOpenid($tsk['openid']); $input->SetOpenid($tsk['openid']);
$order = \WxPayApi::unifiedOrder($input); $order = \WxPayApi::unifiedOrder($input);
...@@ -100,7 +100,8 @@ class WxpayController extends Controller{ ...@@ -100,7 +100,8 @@ class WxpayController extends Controller{
$notify = new \Notify_pub(); $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); $notify->saveData($xml);
//验证签名,并回应微信。 //验证签名,并回应微信。
...@@ -114,7 +115,6 @@ class WxpayController extends Controller{ ...@@ -114,7 +115,6 @@ class WxpayController extends Controller{
$notify->setReturnParameter("return_code", "SUCCESS");//设置返回码 $notify->setReturnParameter("return_code", "SUCCESS");//设置返回码
} }
$returnXml = $notify->returnXml(); $returnXml = $notify->returnXml();
echo $returnXml;
//==商户根据实际情况设置相应的处理流程,此处仅作举例======= //==商户根据实际情况设置相应的处理流程,此处仅作举例=======
...@@ -165,9 +165,9 @@ class WxpayController extends Controller{ ...@@ -165,9 +165,9 @@ class WxpayController extends Controller{
// //
// file_put_contents($filename, $oty.'=='.$ordertype, FILE_APPEND); // file_put_contents($filename, $oty.'=='.$ordertype, FILE_APPEND);
echo 'SUCCESS'; // echo 'SUCCESS';
} }
} }
echo $returnXml;
} }
} }
<?php <?php
namespace Home\Model; namespace Home\Model;
use Think\Model; use Think\Model;
class WxpayModel{
class WxpayModel
{
//接口API URL前缀 //接口API URL前缀
const API_URL_PREFIX = 'https://api.mch.weixin.qq.com'; const API_URL_PREFIX = 'https://api.mch.weixin.qq.com';
//下单地址URL //下单地址URL
...@@ -26,26 +30,29 @@ class WxpayModel{ ...@@ -26,26 +30,29 @@ class WxpayModel{
//支付总金额 //支付总金额
private $total_fee; private $total_fee;
//终端IP //终端IP
private $spbill_create_ip; private $spbill_create_ip;
//支付结果回调通知地址 //支付结果回调通知地址
private $notify_url; private $notify_url;
//交易类型 //交易类型
private $trade_type; private $trade_type;
//支付密钥 //支付密钥
private $key; private $key;
//证书路径 //证书路径
private $SSLCERT_PATH; private $SSLCERT_PATH;
private $SSLKEY_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"; $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
$onoce_str = $this->getRandChar(32); $onoce_str = $this->getRandChar(32);
...@@ -71,7 +78,7 @@ class WxpayModel{ ...@@ -71,7 +78,7 @@ class WxpayModel{
} }
/** /**
* 作用:将xml转为array * 作用:将xml转为array
*/ */
public function xmlToArray($xml) public function xmlToArray($xml)
{ {
...@@ -81,7 +88,8 @@ class WxpayModel{ ...@@ -81,7 +88,8 @@ class WxpayModel{
} }
//执行第二次签名,才能返回给客户端使用 //执行第二次签名,才能返回给客户端使用
public function getOrder($prepayId){ public function getOrder($prepayId)
{
$data["appid"] = $this->config["appid"]; $data["appid"] = $this->config["appid"];
$data["noncestr"] = $this->getRandChar(32);; $data["noncestr"] = $this->getRandChar(32);;
$data["package"] = "Sign=WXPay"; $data["package"] = "Sign=WXPay";
...@@ -99,8 +107,7 @@ class WxpayModel{ ...@@ -99,8 +107,7 @@ class WxpayModel{
*/ */
function getSign($Obj) function getSign($Obj)
{ {
foreach ($Obj as $k => $v) foreach ($Obj as $k => $v) {
{
$Parameters[strtolower($k)] = $v; $Parameters[strtolower($k)] = $v;
} }
//签名步骤一:按字典序排序参数 //签名步骤一:按字典序排序参数
...@@ -108,7 +115,7 @@ class WxpayModel{ ...@@ -108,7 +115,7 @@ class WxpayModel{
$String = $this->formatBizQueryParaMap($Parameters, false); $String = $this->formatBizQueryParaMap($Parameters, false);
//echo "【string】 =".$String."</br>"; //echo "【string】 =".$String."</br>";
//签名步骤二:在string后加入KEY //签名步骤二:在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 />"; // echo "<textarea style='width: 50%; height: 150px;'>$String</textarea> <br />";
//签名步骤三:MD5加密 //签名步骤三:MD5加密
$result_ = strtoupper(md5($String)); $result_ = strtoupper(md5($String));
...@@ -116,13 +123,14 @@ class WxpayModel{ ...@@ -116,13 +123,14 @@ class WxpayModel{
} }
//获取指定长度的随机字符串 //获取指定长度的随机字符串
function getRandChar($length){ function getRandChar($length)
{
$str = null; $str = null;
$strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
$max = strlen($strPol)-1; $max = strlen($strPol) - 1;
for($i=0;$i<$length;$i++){ for ($i = 0; $i < $length; $i++) {
$str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数 $str .= $strPol[rand(0, $max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
} }
return $str; return $str;
...@@ -132,33 +140,31 @@ class WxpayModel{ ...@@ -132,33 +140,31 @@ class WxpayModel{
function arrayToXml($arr) function arrayToXml($arr)
{ {
$xml = "<xml>"; $xml = "<xml>";
foreach ($arr as $key=>$val) foreach ($arr as $key => $val) {
{ if (is_numeric($val)) {
if (is_numeric($val)) $xml .= "<" . $key . ">" . $val . "</" . $key . ">";
{
$xml.="<".$key.">".$val."</".$key.">";
} else {
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
} }
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
} }
$xml.="</xml>"; $xml .= "</xml>";
return $xml; return $xml;
} }
//post https请求,CURLOPT_POSTFIELDS xml格式 //post https请求,CURLOPT_POSTFIELDS xml格式
function postXmlCurl($xml,$url,$second=30) function postXmlCurl($xml, $url, $second = 30)
{ {
//初始化curl //初始化curl
$ch = curl_init(); $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_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//设置header //设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求结果为字符串且输出到屏幕上 //要求结果为字符串且输出到屏幕上
...@@ -169,15 +175,12 @@ class WxpayModel{ ...@@ -169,15 +175,12 @@ class WxpayModel{
//运行curl //运行curl
$data = curl_exec($ch); $data = curl_exec($ch);
//返回结果 //返回结果
if($data) if ($data) {
{
curl_close($ch); curl_close($ch);
return $data; return $data;
} } else {
else
{
$error = curl_errno($ch); $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>"; echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
curl_close($ch); curl_close($ch);
return false; return false;
...@@ -206,62 +209,59 @@ class WxpayModel{ ...@@ -206,62 +209,59 @@ class WxpayModel{
{ {
$buff = ""; $buff = "";
ksort($paraMap); ksort($paraMap);
foreach ($paraMap as $k => $v) foreach ($paraMap as $k => $v) {
{ if ($urlencode) {
if($urlencode)
{
$v = urlencode($v); $v = urlencode($v);
} }
$buff .= strtolower($k) . "=" . $v . "&"; $buff .= strtolower($k) . "=" . $v . "&";
} }
$reqPar=''; $reqPar = '';
if (strlen($buff) > 0) if (strlen($buff) > 0) {
{ $reqPar = substr($buff, 0, strlen($buff) - 1);
$reqPar = substr($buff, 0, strlen($buff)-1);
} }
return $reqPar; return $reqPar;
} }
/** /**
xml转成数组 * xml转成数组
*/ */
// function xmlstr_to_array($xmlstr) { // function xmlstr_to_array($xmlstr) {
// $doc = new DOMDocument(); // $doc = new DOMDocument();
// $doc->loadXML($xmlstr); // $doc->loadXML($xmlstr);
// return $this->domnode_to_array($doc->documentElement); // return $this->domnode_to_array($doc->documentElement);
// } // }
function domnode_to_array($node) { function domnode_to_array($node)
$output = array(); {
$output = [];
switch ($node->nodeType) { switch ($node->nodeType) {
case XML_CDATA_SECTION_NODE: case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE: case XML_TEXT_NODE:
$output = trim($node->textContent); $output = trim($node->textContent);
break; break;
case XML_ELEMENT_NODE: 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); $child = $node->childNodes->item($i);
$v = $this->domnode_to_array($child); $v = $this->domnode_to_array($child);
if(isset($child->tagName)) { if (isset($child->tagName)) {
$t = $child->tagName; $t = $child->tagName;
if(!isset($output[$t])) { if (!isset($output[$t])) {
$output[$t] = array(); $output[$t] = [];
} }
$output[$t][] = $v; $output[$t][] = $v;
} } elseif ($v) {
elseif($v) { $output = (string)$v;
$output = (string) $v;
} }
} }
if(is_array($output)) { if (is_array($output)) {
if($node->attributes->length) { if ($node->attributes->length) {
$a = array(); $a = [];
foreach($node->attributes as $attrName => $attrNode) { foreach ($node->attributes as $attrName => $attrNode) {
$a[$attrName] = (string) $attrNode->value; $a[$attrName] = (string)$attrNode->value;
} }
$output['@attributes'] = $a; $output['@attributes'] = $a;
} }
foreach ($output as $t => $v) { 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]; $output[$t] = $v[0];
} }
} }
...@@ -271,4 +271,4 @@ class WxpayModel{ ...@@ -271,4 +271,4 @@ class WxpayModel{
return $output; return $output;
} }
} }
\ No newline at end of file
...@@ -6,11 +6,11 @@ class WxPayConf_pub ...@@ -6,11 +6,11 @@ class WxPayConf_pub
{ {
//=======【基本信息设置】===================================== //=======【基本信息设置】=====================================
//微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看 //微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看
const APPID = 'wx8504016ab1c4530f'; const APPID = 'wxea130ad0abf37505';
//受理商ID,身份标识 //受理商ID,身份标识
const MCHID = '1536579071'; const MCHID = '1592613321';
//商户支付密钥Key。审核通过后,在微信发送的邮件中查看 //商户支付密钥Key。审核通过后,在微信发送的邮件中查看
const KEY = 'caiyin19890000000000000000000000'; const KEY = 'To3VvVD8X9aTjqUpk2uLFRq6A9vjWzZb';
//JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看 //JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看
const APPSECRET = ''; const APPSECRET = '';
...@@ -25,7 +25,7 @@ class WxPayConf_pub ...@@ -25,7 +25,7 @@ class WxPayConf_pub
//=======【异步通知url设置】=================================== //=======【异步通知url设置】===================================
//异步通知url,商户根据实际开发过程设定 //异步通知url,商户根据实际开发过程设定
const NOTIFY_URL = 'http://www.yhctvip.com/Home/Wxpay/notifyurl'; const NOTIFY_URL = 'http://www.zjyg6.com/Home/Wxpay/notifyurl';
//=======【curl超时设置】=================================== //=======【curl超时设置】===================================
//本例程通过curl使用HTTP POST方法,此处可修改其超时时间,默认为30秒 //本例程通过curl使用HTTP POST方法,此处可修改其超时时间,默认为30秒
......
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIID9jCCAt6gAwIBAgIUIE4svb4LuIRq46mWNRyH9jhw0xowDQYJKoZIhvcNAQEL MIID/DCCAuSgAwIBAgIUI2au3Rc6pgUtcw/KkNLKHu+KtZEwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMTkwNTI4MDgwNzI0WhcNMjQwNTI2MDgwNzI0WjCBhzETMBEGA1UEAwwK Q0EwHhcNMjAwNjAzMDgwMTU4WhcNMjUwNjAyMDgwMTU4WjCBjTETMBEGA1UEAwwK
MTUzNjU3OTA3MTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTMwMQYDVQQL MTU5MjYxMzMyMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
DCrlm5vlt53mmJPotK3kupHllYbnvZHnu5znp5HmioDmnInpmZDlhazlj7gxCzAJ DDDmlIDmnp3oirHluILlvIDlv4PkuIDotK3nvZHnu5znp5HmioDmnInpmZDlhazl
BgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQAD j7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
ggEPADCCAQoCggEBAMewBiEGTT+eSH2yocv4B6AF2g6fo23cdAO1+L0I6GCjwIc1 AQEBBQADggEPADCCAQoCggEBAKx5WtUfG34HbedELPUgPN6us8XUoQknL1PZoaW5
ZVdlHvwS1PYBSVsDZ5C2E/5pd8lsVJGcpw3kYNRaBrs+iCpNGoldJG8m8wqw4Fzy NWKBTf2en4fCt05CP7slEefUAm4fUrJJL5it0SSSQkwG+RiqB5fw0PQEgMez7MM3
9lZxqc2cyBrKTvlYfOhCm8PY105cVPmcGYbzKsFvVgSoiPS9T7eLV1VxGe+lKusE KzQI1aOdSwmLatyee7yFYeccB3xYIlACvai39qrHc+nPiUMjc3ZaIza7fivl45e7
SkXEexO43cZhAuQE5BtLHmazjjDjMOQ3Fjv36xnZ8x7IJrcQ80Nb7C6y7kim34RF 0H/etyAiJ+hFsEMViD+WffI8fufr1mPIwkcCfpLoSefrazMZtBzrJwFzNXnpL1lH
5E9H0zMJwlqMKEfyiCZe+IHhvrZxlY+jZKFijcdO3DBSTqp9nZhDpP9KCRAqpqP+ STEjtyHdkNSrOv2nnVpg2F0yq3AfoykGRQrDc+vPS3XzoD39MIasPgM4WcvcBVHQ
AIFRgxwYbuAo3wCHTfmDBpdzBCla2L1CdnP8eX8CAwEAAaOBgTB/MAkGA1UdEwQC mHxbgNGZY0b8TtPKb90DouACwFM5QjChncRlHtda6w7D/a8CAwEAAaOBgTB/MAkG
MAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0 A1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9l
cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2 dmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERC
QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEAGiDxCcEf QzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEA
O1Kt9QHGM7iQPY3gu0o9tLI4kDnmUaw4e3ZfGiGpT50hcFYMnd6rs0w+1Bbi66KR KBKZtu0ine7uFOxieMLRw5m0HbOcmawuFJ+hw1EBvJ/iKJapnCxZr3egGhv950zz
REJFgm1seja4tZvbINTS/37r81+oRKBllneGBa48AqBCb8xC2sz43QlX12ySS1dO u8g+ktZDBChvRYT6s65+nb+0oAkL+hZyj4SfcPFblCMc7qkN1903o5HSPc+QXK4B
JjxMLgFiclPJu7R/5D3UJr3pziKpz40o4nlQQXYQjbYifcQE495STou/sutzwnMs KGgmXvFMXSHPVa04utgxeYzOOTo3VzEXGP3R4eXmyp38MPl7WhmMeM7J00zdpyrV
ZLn8twcUlnf6wyxF3VtJpryXO3iqn5/dVf5nCFHuqwt+8qfSJnIE0XnBwaVLXd4R 5ig4zOEJ0H3FZZS5wlZ2qoDzpRh8MvYgpe4Bb/YACNfbnqa6vjriKFz3iRF+ezOc
sK9pfnRIxybHTOWHgnReGYmUpbExAG327w+Epk4z0IeAd7lk+WeQmqp3QIzdwZ/k H3E3YbP/2L69pXDkIAHeyo94nnTbUVpiG9g4WOF+EkJsAQC6ZBL6PFrhpdpCVD5F
UolkK/nDPTJMsA== sQA60QKj87T/WHsceRo1ow==
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
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
ZM1/LQEsz0tHgSvS+WN9vBY= pmuJQwO7Kqoq29tMkgA8ILUs
-----END PRIVATE KEY----- -----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