更新时间:2022-09-16 GMT+08:00
分享

PHP

  • 本文档所述Demo在提供服务的过程中,可能会涉及个人数据的使用,建议您遵从国家的相关法律采取足够的措施,以确保用户的个人数据受到充分的保护。
  • 本文档所述Demo仅用于功能演示,不允许客户直接进行商业使用。
  • 本文档信息仅供参考,不构成任何要约或承诺。

发送短信

<?php 
 
 
//必填,请参考"开发准备"获取如下数据,替换为实际值 
//请求参数 
$url = 'https://ip:port/common/sms/sendTemplateMessage'; //APP接入地址+接口访问URI 
$templateId  = 'templateId_123'; //模板ID 
$account = 'xxxxxx';//实际账号 
$password = 'xxxxxx';//实际密码 
 
 
//条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称 
$signature = '短信测试'; //签名名称 
 
 
//必填,全局号码格式(不包含国家码),示例:12345678911,多个号码之间用英文逗号分隔 
$mobiles = array("12345678911");//短信接收人号码 
 
 
/** 
 * 选填,使用无变量模板时请赋空值 
 * 单变量模板示例:模板内容为"您的验证码是${param1}"时,$templateParas['param1']='参数值' 
  * 模板中的每个变量都必须赋值,且取值不能为空  
 * @var string $templateParas 
 */ 
$templateParas['parameter1']='parameter value1'; //parameter1 为变量参数名称,parameter value1为变量参数值
 
 
//状态报告通知地址,根据实际情况修改 
$statusCallback = 'https://ip:port/xx/xx'; 
 
 
//请求Headers 
$headers = [ 
    'Content-Type: application/json;charset=UTF-8' 
]; 
 
 
$requestLists['mobiles']=$mobiles; 
$requestLists['templateId']=$templateId; 
$requestLists['templateParas']=$templateParas; 
$requestLists['signature']=$signature; 
 
 
//请求Body 
$data['account']=$account; 
$data['password']=$password; 
$data['requestLists']=array($requestLists); 
$data['statusCallback']=$statusCallback; 
 
 
$context_options = [ 
    'http' => ['method' => 'POST', 'header'=> $headers, 'content' => json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT), 'ignore_errors' => true], 
    '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($response) . PHP_EOL; //打印响应信息 
 
 
?>

上行短信接收

<?php
// 上行短信通知样例(urlencode)
$upData = 'mobile=%2B12345678911&content=***&sendTime=20220127020758&extCode=';

onSmsUpData($upData);

/**
 * 解析上行短信通知数据
 *
 * @param string $data 短信平台推送的上行短信通知数据
 */
function onSmsUpData(string $data)
{
    $keyValues = [];
    parse_str(urldecode($data), $keyValues); //解析上行短信通知数据

    /**
     * Example: 此处以解析content为例,请按需解析所需参数并自行实现相关处理
     *
     * 'mobile': 上行短信手机号
     * 'content': 短信内容
     * 'sendTime': 上行短信时间
     * 'extCode': 扩展码
     */
    $content = $keyValues['content']; // 上行短信发送的内容
    print 'Sms up data. Content: ' . $content . PHP_EOL;
}
?>

状态报告接收

<?php
// 短信平台上报状态报告数据样例(urlencode)
// $success_body = 'requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=DELIVRD&resultCode=000000&resultDesc=success&smsCount=null&receiveTime=null';
$failed_body = 'requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=E200027&resultCode=1020001&resultDesc=Parameter error&smsCount=null&receiveTime=null';

// onSmsStatusReport($success_body);
onSmsStatusReport($failed_body);

/**
 * 解析状态报告数据
 *
 * @param string $data 短信平台上报的状态报告数据
 */
function onSmsStatusReport(string $data)
{
    $keyValues = [];
    parse_str(urldecode($data), $keyValues); //解析状态报告数据

    /**
     * Example: 此处以解析status为例,请按需解析所需参数并自行实现相关处理
     *
     * 'messageId': 短信唯一标识
     * 'smsCount': 长短信拆分条数
     * 'receiveTime': 资源更新时间
     * 'status': 状态码
     */
    $status = $keyValues['status']; // 状态报告枚举值
    // 通过status判断短信是否发送成功
    if ('DELIVRD' === strtoupper($status)) {
        print 'Send sms success. messageId: ' . $keyValues['messageId'] . PHP_EOL;
    } else {
        // 发送失败,打印status
        print 'Send sms failed. messageId: ' . $keyValues['messageId'] . PHP_EOL;
        print 'Failed status: ' . $status . PHP_EOL;
    }
}
?>
分享:

    相关文档

    相关产品