PHP阿里大于(鱼) 短信发送函数

180it 2022-07-25 AM 1222℃ 0条

阿里大于(鱼) 短信发送函数

项目在用 短信发送服务商一直不稳定, 到达失效没有办法保证,无意间看到了 阿里大鱼 ,大公司做的用起来放心。

自己就试着用用,感觉速度还不错,当然官方 也有 PHP 的 SDK 但是用不到那么多功能只是发送个短信验证码,所以就自己照着文档写了一个简单的。

没有类 只有一个函数

<?php
/**
 * 短信发送 API
 *
 * @param string $to         短信接收者 多个用 英文逗号隔开
 * @param array $template    模板相关信息 (数组)
            code: 模板 id
            sign_name: 签名
            param: 模板内参数 数组
 * @param string $extend     这是一个混合类型
 * @since 1.0
 * @return array
 */
function sendSms($to, $template, $extend = ''){
    $app_key = '2332****'; // APP Key
    $app_secret = '*****'; // APP Secret
 
    $url = 'http://gw.api.taobao.com/router/rest'; // API 地址
    
    /* POST 参数 */
    $post = array(
        'app_key' => $app_key,
        'format' => 'json',
        'method' => 'alibaba.aliqin.fc.sms.num.send',
        'partner_id' => 'apidoc',
        'sign_method' => 'md5',
        'timestamp' => date('Y-m-d H:i:s'),
        'v' => '2.0',
        'extend' => $extend,
        'rec_num' => $to,
        'sms_free_sign_name' => $template['sign_name'],
        'sms_param' => json_encode($template['param']),
        'sms_template_code' => $template['code'],
        'sms_type' => 'normal'
    );
 
    ksort($post); // 按键名 排序 (大多签名生成的必须步骤)
 
    /* 按照签名算法 生成签名 */
    $res = '';
    foreach($post as $k => $v){    $res .= $k . $v; }
 
    $res = str_replace(
        array('/\+/', '/\*/', '/%7E/'),
        array('%20', '%2A', '~'),
        $res
    );
    $post['sign'] = strtoupper(md5($app_secret . $res . $app_secret));
 
    /* CURL 发送数据 */
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    $result = curl_exec($ch);
    curl_close($ch);
 
    $json = json_decode($result, true);
    return $json['alibaba_aliqin_fc_sms_num_send_response']['result'];
}

使用方法:

<?php
/* 模板信息 */
$template = array(
    'code' => 'SMS_6155318', // 模板 id
    'sign_name' => '注册验证', // 信息签名
    'param' => array('code' => '345435', 'product' => ' 简爱测试 '), // 模板内参数
);
 
/* 接收号码 */
$to = '136****8858';
$result = sendSms($to, $template);
print_r($result);

最后 地址 http://www.alidayu.com/

来源:https://www.gouji.org/?post=414

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

PHP阿里大于(鱼) 短信发送函数