使用给华为云 消息 服务 API 方式发送短信

代码来自华为云,已通过测试

<?php
/**
* 华为云发送短信示例代码
* 本段代码需要使用自己的配置信息才能正常运行,出配置信息外,不需要改动任何代码内容即可运行
*
* @version 0.1
* @author huawei cloud(https://support.huaweicloud.com/devg-msgsms/sms_04_0003.html)
*
* 2019-03-05 IIS10 + PHP 7.2.5调试通过
*/ //
// 为避免误调用而加入的提示,测试&部署时需移除本段代码
//
$tips = array(
"code"=>"200",
"msg"=>"Config ur info first",
"time"=>date("h:i:sa")
);
die(json_encode($tips)); //必填,请参考"开发准备"获取如下数据,替换为实际值
$url = 'https://api.rtc.huaweicloud.com:10443/sms/batchSendSms/v1'; //APP接入地址+接口访问URI
$APP_KEY = ''; //APP_Key
$APP_SECRET = ''; //APP_Secret
$sender = ''; //国内短信签名通道号或国际/港澳台短信通道号
$TEMPLATE_ID = ''; //模板ID //条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称
//国际/港澳台短信不用关注该参数
$signature = ''; //签名名称 //必填,全局号码格式(包含国家码),示例:+8615123456789,多个号码之间用英文逗号分隔
$receiver = '+8615123456789,+8615123456789'; //短信接收人号码 //选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告
$statusCallback = ''; /**
* 选填,使用无变量模板时请赋空值 $TEMPLATE_PARAS = '';
* 单变量模板示例:模板内容为"您的验证码是${NUM_6}"时,$TEMPLATE_PARAS可填写为'["369751"]'
* 双变量模板示例:模板内容为"您有${NUM_2}件快递请到${TXT_32}领取"时,$TEMPLATE_PARAS可填写为'["3","人民公园正门"]'
* 查看更多模板变量规则:常见问题>业务规则>短信模板内容审核标准
* @var string $TEMPLATE_PARAS
*/
$TEMPLATE_PARAS = '["369751"]'; //模板变量,根据自身使用的模板,其值长度和个数与模板对应 //请求Headers
$headers = [
'Content-Type: application/x-www-form-urlencoded',
'Authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey"',
'X-WSSE: ' . buildWsseHeader($APP_KEY, $APP_SECRET)
];
//请求Body
$data = http_build_query([
'from' => $sender,
'to' => $receiver,
'templateId' => $TEMPLATE_ID,
'templateParas' => $TEMPLATE_PARAS,
'statusCallback' => $statusCallback,
// 'signature' => $signature //使用国内短信通用模板时,必须填写签名名称
]); $context_options = [
'http' => ['method' => 'POST', 'header'=> $headers, 'content' => $data],
'ssl' => ['verify_peer' => false, 'verify_peer_name' => false] //为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题
];
print_r($context_options) . PHP_EOL; //打印请求信息 $response = file_get_contents($url, false, stream_context_create($context_options));
print_r(json_decode($response)) . PHP_EOL; //打印响应信息 /**
* 构造X-WSSE参数值
* @param string $appKey
* @param string $appSecret
* @return string
*/
function buildWsseHeader(string $appKey, string $appSecret){
date_default_timezone_set('Asia/Shanghai');
$now = date('Y-m-d\TH:i:s\Z'); //Created
$nonce = uniqid(); //Nonce
$base64 = base64_encode(hash('sha256', ($nonce . $now . $appSecret))); //PasswordDigest
return sprintf("UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\"",
$appKey, $base64, $nonce, $now);
}
?>

#PHP# 华为云 API 方式发送短信的更多相关文章

  1. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  2. java 阿里云接口实现发送短信验证码

    此刻自己做的小项目中,需要用到手机发送短信验证码实现注册功能,于是就去阿里云注册了账号,并实现随机发送验证码的功能 第一步:在阿里云官网登录注册   已有支付宝或淘宝的账号可以直接登录,最后需要实名认 ...

  3. java 调用短信 api 接口发送短信

    参考:   https://blog.csdn.net/u014793522/article/details/59062014 参考 :https://blog.csdn.net/Lu_shilusi ...

  4. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)

    微信时代的今天,短信一样不可缺席,大系统都有集成短信接口.若只是临时用一下,若能够直接在Excel上加工好内容就可以直接发送,这些假设在此篇批量群发短信功能中都为大家带来完美答案. 业务场景 不多说, ...

  5. ios调用本地拨打电话,发送短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话   [[UIApplication sharedApplicat ...

  6. android 中调用接口发送短信

    android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...

  7. Linux-C实现GPRS模块发送短信

    “GSM模块,是将GSM射频芯片.基带处理芯片.存储器.功放器件等集成在一块线路板上,具有独立的操作系统.GSM射频处理.基带处理并提供标准接口的功能模块.GSM模块根据其提供的数据传输速率又可以分为 ...

  8. SmsUtils 发送短信

    import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import j ...

  9. PHP控制阿里云短信API接口实现短信群发功能

    阿里云短信支持先使用后支付的原则,价格为4分半1条. 通过SDK可以与网站功能的绑定,实现响应的短信发送功能 现已统一合并升级为:消息服务. 消息服务 阿里云消息服务(Message Service, ...

随机推荐

  1. velocity在html中换行符转换

    <td colspan="3" class="tdContent2">$!obj.getDealInfo().replaceAll("\r ...

  2. Devexpress VCL Build v2013 vol 13.2.2 发布

    devexpress 2013 的第二个大版本出来了,一如既往, 基本上还是一个大补丁包.各位看官,自己看. What's New in 13.2.2 (VCL Product Line)   New ...

  3. Google Tango Java SDK开发:Motion Tracking 运动追踪

    Java API Motion Tracking Tutorial运动追踪教程 This page describes how the Java API handles motion tracking ...

  4. Receiving Transaction Processor Conundrum

    what would we do if we are faced with a situation to execute a receiving transaction in oracle ebusi ...

  5. Apps: Help > Diagnostics > Custom Code > Personalize 查看LOV中的查询语句

    Apps Menu Path: Help > Diagnostics > Custom Code > Personalize 查看LOV中的查询语句   一直有实施顾问询问我XXFo ...

  6. 如何在Mirth Connect中创建和调用自定义Java代码

    0-前言 本文章将向您展示如何创建自定义Java类,将其编译/打包到JAR中,将其包含在Mirth Connect在,并在JavaScript中调用它,您可以从任何JavaScript上下文调用自定义 ...

  7. chrome一个奇怪的问题

    我去........... 这牢骚发完了才发现,  多谢了个e 呃................. ================================= 晚上用bootstrap搭建一 ...

  8. leetcode 有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: - 左括号必须用相同类型的右括号闭合. - 左括号必须以正确的顺序闭合. 注意空字符 ...

  9. ES6——异步操作之Promise

    基本概念: Promise : 是 ES6 中新增的异步编程解决方案,提现在代码中他是一个对象 可以通过Promise构造函数来实例化. -new Promise(cb) ===> 实例的基本使 ...

  10. columns数组形式展示不同列数据

    function workList() { var status = $("#status1").val(); if (null == status || status == &q ...