php 와 아 리 클 라 우 드 문자 인터페이스 접속 조작 사례 분석
아 리 클 라 우 드 문자 API 를 사용 하려 면 콘 솔 에서 다음 과 같은 필요 한 인 자 를 받 아야 한다.그 중에서 자신의 핸드폰 검증+공식 심 사 를 여러 번 해 야 한다.특히 심 사 는 인내심 을 가 져 야 한다.
1. accessKeyId 개인 계 정 키 에 해당 합 니 다.
2.accessKeySecret 는 위 와 쌍 을 이룬다.
3. SignName 개인 서명,보 낸 문자 에서 이 서명 회 는 시작 에 표 시 됩 니 다.[서명]사랑 하 는 사용자 와 같은 형식 입 니 다.SignName 은 심 사 를 통과 해 야 합 니 다.
4.TemplateCode 템 플 릿 코드,아 리 클 라 우 드 문 자 는 문자 메 시 지 를 완전히 사용자 정의 할 수 없습니다.심 사 를 통과 한 템 플 릿 을 통 해 템 플 릿 의 변 수 를 스스로 교체 해 야 합 니 다.예 를 들 어 템 플 릿:"인증 코드 는$[code]입 니 다.code 는 변수 입 니 다.사용 할 때 변수 값{"code":"12345"}(변수 값 을 설정 하 는 과정 은 demo 에서 이 루어 집 니 다).문자 메 시 지 를 보 내 면'인증 코드 는 12345 입 니 다'로 바 뀌 고 심 사 를 통과 한 템 플 릿 마다 템 플 릿 코드 를 제공 합 니 다.
최신 아 리 클 라 우 드 문자 인 터 페 이 스 는 아 리 가 이사 후 보다 큰 경우 에 적용 된다.
그동안 아 리 보다 큰 문자 인 터 페 이 스 를 사용 해 왔 는데 최근 프로젝트 에 들 어 갔 을 때 아 리 가 아 리 운 으로 몰래 이사 한 것 을 발견 했다!아 리 운 의 SDK 파일 은 매우 많아 서 안개 가 자욱 하 게 보인다!아래 코드 는 최신 아 리 클 라 우 드 문자 서비스 에 사용 할 수 있 는 클래스 입 니 다.직접 테스트 성공!
<?php
/**
*
* @author Administrator
*
*/
class Sms {
//
public $error;
// Access Key ID
private $accessKeyId = '';
// Access Access Key Secret
private $accessKeySecret = '';
//
private $signName = '';
// ID
private $templateCode = '';
public function __construct($cofig = array()) {
$cofig = array (
'accessKeyId' => 'xxxxxxxxxxx',
'accessKeySecret' => 'xxxxxxxxxx',
'signName' => ' ',
'templateCode' => 'SMS_76510109'
);
//
$this->accessKeyId = $cofig ['accessKeyId'];
$this->accessKeySecret = $cofig ['accessKeySecret'];
$this->signName = $cofig ['signName'];
$this->templateCode = $cofig ['templateCode'];
}
private function percentEncode($string) {
$string = urlencode ( $string );
$string = preg_replace ( '/\+/', '%20', $string );
$string = preg_replace ( '/\*/', '%2A', $string );
$string = preg_replace ( '/%7E/', '~', $string );
return $string;
}
/**
*
*
* @param unknown $parameters
* @param unknown $accessKeySecret
* @return string
*/
private function computeSignature($parameters, $accessKeySecret) {
ksort ( $parameters );
$canonicalizedQueryString = '';
foreach ( $parameters as $key => $value ) {
$canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value );
}
$stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) );
$signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) );
return $signature;
}
/**
* @param unknown $mobile
* @param unknown $verify_code
*
*/
public function send_verify($mobile, $verify_code) {
$params = array ( //
'SignName' => $this->signName,
'Format' => 'JSON',
'Version' => '2017-05-25',
'AccessKeyId' => $this->accessKeyId,
'SignatureVersion' => '1.0',
'SignatureMethod' => 'HMAC-SHA1',
'SignatureNonce' => uniqid (),
'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ),
'Action' => 'SendSms',
'TemplateCode' => $this->templateCode,
'PhoneNumbers' => $mobile,
//'TemplateParam' => '{"code":"' . $verify_code . '"}'
'TemplateParam' => '{"time":"1234"}' //
);
//var_dump($params);die;
//
$params ['Signature'] = $this->computeSignature ( $params, $this->accessKeySecret );
// ( )
//$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params );
$url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params );
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 );
$result = curl_exec ( $ch );
curl_close ( $ch );
$result = json_decode ( $result, true );
//var_dump($result);die;
if (isset ( $result ['Code'] )) {
$this->error = $this->getErrorMessage ( $result ['Code'] );
return false;
}
return true;
}
/**
*
*
* @param unknown $status
*/
public function getErrorMessage($status) {
// ( )
// https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450
$message = array (
'InvalidDayuStatus.Malformed' => ' ',
'InvalidSignName.Malformed' => ' ',
'InvalidTemplateCode.MalFormed' => ' Code ',
'InvalidRecNum.Malformed' => ' , 100',
'InvalidParamString.MalFormed' => ' json ',
'InvalidParamStringTemplate.Malformed' => ' ',
'InvalidSendSms' => ' ',
'InvalidDayu.Malformed' => ' url, '
);
if (isset ( $message [$status] )) {
return $message [$status];
}
return $status;
}
}
호출 방법:
//
$mobile = 'xxxxxxx';
$code = rand ( 1000, 9999 );
//
$sms = new Sms();
//
$status = $sms->send_verify($mobile, $code);
if (!$status) {
echo $sms->error;
}
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.