PHP云软件短信接口,Thinkphp对接华为云短信接口

在对接短信之前我们需要拿到下面这些东西

a. 已

b. (仅国内短信)已

c. 已

composer安装Guzzle 可能会比较慢,耐心等待下

b3c25f8c25bf51885b5f8c7217146828.png

接下来就是封装好短信发送类代码如下:

namespace HWcloud;

require 'vendor/autoload.php';

use GuzzleHttp\Psr7;

use GuzzleHttp\Client;

use GuzzleHttp\Exception\RequestException;

class HuaWeiCloud

{

private $appkey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';

private $appSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';

private $sender = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'; //国内短信签名通道号或国际/港澳台短信通道号

private $templateId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';

private $statusCallback = '';//选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告

private $url = 'https://api.rtc.huaweicloud.com:10443/sms/batchSendSms/v1';//请求地址接口

/**

* 发送短信验证码

* @param string $phone 手机号码

* @param string $code 短信验证码

* @param string $signature 签名名称国际/港澳台短信不用关注该参数

* @return string

*/

public function sendMsgCode($phone,$code,$signature){

$templateParas = "[\"".$code."\"]"; //模板变量

$client = new Client();

try{

$response = $client->request('POST', $this->url,[

'form_params' => [

'from' => $this->sender,

'to' => $phone,

'templateId' => $this->templateId,

'templateParas' => $templateParas,

'statusCallback' => $this->statusCallback,

'signature' => $signature //使用国内短信通用模板时,必须填写签名名称

],

'headers' => [

'Authorization' => 'WSSE realm="SDP",profile="UsernameToken",type="Appkey"',

'X-WSSE' => $this->buildWsseHeader($this->appkey,$this->appSecret)

],

'verify' => false //为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题

]);

//echo Psr7\str($response); //打印响应信息

//echo $response -> getStatusCode(); //获取发送状态

//echo $response ->getBody();//获取发送主题内容

return json_decode($response ->getBody(),true);

}catch(RequestException $e) {

echo Psr7\str($e->getRequest()), "\n";

if($e->hasResponse()){

echo Psr7\str($e->getResponse());

}

}

}

/**

* 构造X-WSSE参数值

* @param string $appKey

* @param string $appSecret

* @return string

*/

private function buildWsseHeader(){

$now = date('Y-m-d\TH:i:s\Z'); //Created

$nonce = uniqid(); //Nonce

$base64 = base64_encode(hash('sha256', ($nonce . $now . $this->appSecret))); //PasswordDigest

return sprintf("UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\"",$this->appkey, $base64, $nonce, $now);

}

}

实例化当前类,调用sendMsgCode方法即可(填写对应的参数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值