| Server IP : 43.141.49.107 / Your IP : 113.219.202.141 Web Server : Apache System : Linux VM-8-5-opencloudos 6.6.34-9.oc9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 19 19:35:45 CST 2024 x86_64 User : www ( 1000) PHP Version : 8.1.27 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/wwwroot/www.ucppt.com/wp-content/plugins/wpcom-member-pro/sdk/ |
Upload File : |
<?php
class Dysmsapi {
protected $config;
protected $secret;
function __construct(){
$options = $GLOBALS['wpmx_options'];
$key = trim(isset($options['aliyun_sms_keyid']) ? $options['aliyun_sms_keyid'] : '');
$this->secret = trim(isset($options['aliyun_sms_secret']) ? $options['aliyun_sms_secret'] : '');
$template = trim(isset($options['aliyun_sms_tcode']) ? $options['aliyun_sms_tcode'] : '');
$sign = trim(isset($options['aliyun_sms_sign']) ? $options['aliyun_sms_sign'] : '');
if($key && $this->secret && $template && $sign) {
$this->config = array(
'AccessKeyId' => $key,
'Format' => 'JSON',
'RegionId' => 'cn-hangzhou',
'SignatureMethod' => 'HMAC-SHA256',
'SignatureVersion' => '1.0',
'Version' => '2017-05-25',
'SignatureNonce' => md5(time() . rand(100000, 999999)),
'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),
'SignName' => $sign,
'TemplateCode' => $template
);
}
}
function send($phone, $code, $nationCode='86'){
if(isset($this->config)){
$this->config['Action'] = 'SendSms';
$this->config['PhoneNumbers'] = !$nationCode || $nationCode=='86' ? $phone : $nationCode.$phone;
$this->config['TemplateParam'] = '{"code":"' . $code . '"}';
$signature = $this->get_signature();
$parameters = $this->config;
$url = 'https://dysmsapi.aliyuncs.com/?Signature=' . $signature . '&' . http_build_query($parameters);
$result = wp_remote_get($url, ['timeout' => 10]);
if(!is_wp_error($result)){
$result = isset($result['body']) ? json_decode($result['body']) : '';
if($result->Code==='OK'){
$result->result = 0;
}else{
$result->result = -1;
$result->errmsg = $result->Message;
}
}else{
$result = new stdClass();
$result->result = -1;
$result->errmsg = '发送失败';
}
}else{
$result = new stdClass();
$result->result = -1;
$result->errmsg = '网站未配置短信接口';
}
return $result;
}
private function percent_encode($string){
$result = urlencode($string);
$result = str_replace(['+', '*'], ['%20', '%2A'], $result);
$result = preg_replace('/%7E/', '~', $result);
return $result;
}
private function rpc_string($method, $parameters){
ksort($parameters);
$canonicalized = '';
foreach ($parameters as $key => $value) {
$canonicalized .= '&' . $this->percent_encode($key) . '=' . $this->percent_encode($value);
}
return $method . '&%2F&' . $this->percent_encode(substr($canonicalized, 1));
}
function get_signature(){
$string = $this->rpc_string('GET', $this->config);
return urlencode(base64_encode(hash_hmac('sha256', $string, $this->secret . '&', true)));
}
}