<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      閃速碼

      導(dǎo)航

       

      PHP 快速接入國際短信 API 接口:實(shí)現(xiàn)國際驗(yàn)證碼短信發(fā)送

      本文將詳細(xì)介紹如何使用 PHP 語言快速接入國際短信 API 接口,實(shí)現(xiàn)國際驗(yàn)證碼短信的發(fā)送功能,拿來就能用,10 分鐘就能完成接入

      一、主要提供兩大功能

      • 單條短信發(fā)送(支持黑名單等攔截錯(cuò)誤實(shí)時(shí)返回)
      • 獲取狀態(tài)報(bào)告(每條短信狀態(tài)僅可獲取一次)

      二、環(huán)境要求

      • PHP 5.6 或更高版本
      • 開啟 cURL 擴(kuò)展
      • 有效的 SP_ID 和密鑰(開發(fā)者中心查看)

      三、完整 PHP 代碼實(shí)現(xiàn)

      以下是完整的 PHP 示例代碼,只需替換配置參數(shù)即可使用:

      <?php
      /**
       * 國際短信接口Demo
       * 適用于3yit.com的短信API
       * 只需替換下面的配置參數(shù)即可使用
       */
       
      class InternationalSMS {
          // ==================== 配置區(qū)域 ====================
          private $sp_id = '908452'; // 替換為您的SP_ID
          private $raw_password = 'your_raw_password'; // 替換為您的原始密碼
          private $api_send_url = 'https://api.3yit.com/api/send-sms-single';
          private $api_report_url = 'https://api.3yit.com/api/report';
          // ==================== 配置結(jié)束 ====================
          
          private $password;
          
          public function __construct() {
              // 自動將密碼轉(zhuǎn)換為MD5格式
              $this->password = md5($this->raw_password);
          }
          
          /**
           * 發(fā)送單條國際驗(yàn)證碼短信
           * @param string $mobile 國際手機(jī)號(格式:國家代碼+號碼,如639257890123)
           * @param string $message 短信內(nèi)容
           * @param string $ext 擴(kuò)展號(可選)
           * @return array 返回結(jié)果
           */
          public function sendVerificationCode($mobile, $message, $ext = '') {
              // 準(zhǔn)備請求參數(shù)
              $params = [
                  'sp_id' => $this->sp_id,
                  'mobile' => $mobile,
                  'content' => $message,
                  'password' => $this->password,
                  'ext' => $ext
              ];
              
              // 發(fā)送POST請求
              $result = $this->httpPost($this->api_send_url, $params);
              
              // 解析返回的JSON
              $response = json_decode($result, true);
              
              if (!$response) {
                  return [
                      'success' => false,
                      'message' => 'API響應(yīng)解析失敗',
                      'raw_response' => $result
                  ];
              }
              
              // 判斷是否發(fā)送成功
              if ($response['code'] == 0) {
                  return [
                      'success' => true,
                      'message' => '短信發(fā)送成功',
                      'msg_id' => $response['msg_id'],
                      'response' => $response
                  ];
              } else {
                  return [
                      'success' => false,
                      'message' => $this->getErrorMessage($response['code'], isset($response['data']) ? $response['data'] : ''),
                      'error_code' => $response['code'],
                      'response' => $response
                  ];
              }
          }
          
          /**
           * 獲取狀態(tài)報(bào)告
           * @return array 返回狀態(tài)報(bào)告數(shù)據(jù)
           */
          public function getReport() {
              // 準(zhǔn)備請求參數(shù)
              $params = [
                  'sp_id' => $this->sp_id,
                  'password' => $this->password
              ];
              
              // 構(gòu)建查詢字符串
              $queryString = http_build_query($params);
              $url = $this->api_report_url . '?' . $queryString;
              
              // 發(fā)送GET請求
              $result = $this->httpGet($url);
              
              // 解析返回的JSON
              $response = json_decode($result, true);
              
              if (!$response) {
                  return [
                      'success' => false,
                      'message' => 'API響應(yīng)解析失敗',
                      'raw_response' => $result
                  ];
              }
              
              // 判斷是否獲取成功
              if ($response['code'] == 0) {
                  $reports = [];
                  if (!empty($response['data'])) {
                      // 解析多條報(bào)告數(shù)據(jù)
                      $reportList = explode('|', $response['data']);
                      foreach ($reportList as $report) {
                          $fields = explode(',', $report);
                          if (count($fields) >= 5) {
                              $reports[] = [
                                  'ext' => $fields[0],
                                  'msg_id' => $fields[1],
                                  'mobile' => $fields[2],
                                  'status' => $fields[3],
                                  'time' => $fields[4],
                                  'price' => isset($fields[5]) ? $fields[5] : ''
                              ];
                          }
                      }
                  }
                  
                  return [
                      'success' => true,
                      'message' => '獲取狀態(tài)報(bào)告成功',
                      'reports' => $reports,
                      'response' => $response
                  ];
              } else {
                  return [
                      'success' => false,
                      'message' => $this->getErrorMessage($response['code']),
                      'error_code' => $response['code'],
                      'response' => $response
                  ];
              }
          }
          
          /**
           * 發(fā)送HTTP POST請求
           * @param string $url 請求地址
           * @param array $params 請求參數(shù)
           * @return string 響應(yīng)內(nèi)容
           */
          private function httpPost($url, $params) {
              $ch = curl_init();
              
              curl_setopt($ch, CURLOPT_URL, $url);
              curl_setopt($ch, CURLOPT_POST, true);
              curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
              curl_setopt($ch, CURLOPT_TIMEOUT, 30);
              
              $response = curl_exec($ch);
              curl_close($ch);
              
              return $response;
          }
          
          /**
           * 發(fā)送HTTP GET請求
           * @param string $url 請求地址
           * @return string 響應(yīng)內(nèi)容
           */
          private function httpGet($url) {
              $ch = curl_init();
              
              curl_setopt($ch, CURLOPT_URL, $url);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
              curl_setopt($ch, CURLOPT_TIMEOUT, 30);
              
              $response = curl_exec($ch);
              curl_close($ch);
              
              return $response;
          }
          
          /**
           * 獲取錯(cuò)誤信息
           * @param int $code 錯(cuò)誤碼
           * @param string $data 錯(cuò)誤數(shù)據(jù)
           * @return string 錯(cuò)誤描述
           */
          private function getErrorMessage($code, $data = '') {
              $errorMessages = [
                  10000 => '服務(wù)出錯(cuò),請稍后再試',
                  10001 => '參數(shù)錯(cuò)誤,請確認(rèn)',
                  10008 => '賬號被鎖定,請聯(lián)系管理員確認(rèn)',
                  10011 => '余額不足,請盡快充值',
                  10100 => '簽名校驗(yàn)失敗',
                  10101 => '您的ip不在白名單內(nèi),請確認(rèn)',
                  10102 => '密碼錯(cuò)誤,請確認(rèn)',
                  10200 => '產(chǎn)品sp_id必須填寫',
                  10201 => '手機(jī)號必須填寫',
                  10202 => '短信內(nèi)容必須填寫',
                  10203 => '發(fā)送時(shí)間格式必須為UNIX時(shí)間戳',
                  10208 => '短信進(jìn)攔截,具體原因參考data字段',
                  10209 => '觸發(fā)防刷,請調(diào)整配置'
              ];
              
              $dataMessages = [
                  'WL:MBLJ' => '短信內(nèi)容匹配到了模板,并且此模板類型是攔截',
                  'WL:MBSH' => '命中審核模板',
                  'WL:NMLJ' => '短信內(nèi)容沒有匹配到模板,并且用戶的模板審核方式是未匹配到就進(jìn)攔截',
                  'WL:NMSH' => '短信內(nèi)容沒有匹配到模板,并且用戶的模板審核方式是未匹配到就進(jìn)審核',
                  'WL:KHLJ' => '命中空號,進(jìn)攔截',
                  'WL:QHLJ' => '命中用戶簽名黑名單,進(jìn)攔截',
                  'WL:SHLJ' => '命中用戶SPID黑名單,進(jìn)攔截',
                  'WL:CHLJ' => '命中系統(tǒng)產(chǎn)品黑名單,進(jìn)攔截',
                  'WL:CWHM' => '錯(cuò)誤號碼',
                  'WL:QWBB' => '簽名未報(bào)備,進(jìn)攔截',
                  'WL:MQM' => '需要簽名但沒有,進(jìn)攔截',
                  'WL:CS' => '超過限速了',
                  'WL:ZJLJ' => '不匹配任何模板,直接攔截',
                  'WL:CMT' => '產(chǎn)品未配置相應(yīng)通道,進(jìn)攔截',
                  'WL:CDQC' => '通道不支持該地區(qū)發(fā)送,進(jìn)攔截',
                  'WL:CGMT' => '產(chǎn)品通道池中沒有相應(yīng)通道,進(jìn)攔截',
                  'WL:CNH' => '所選的通道不健康,進(jìn)攔截',
                  'WL:TCLJ' => '不在發(fā)送時(shí)間段,進(jìn)攔截',
                  'WL:TCSH' => '不在發(fā)送時(shí)間段,進(jìn)審核',
                  'WL:CPL' => '超頻限制'
              ];
              
              $message = isset($errorMessages[$code]) ? $errorMessages[$code] : "未知錯(cuò)誤 (代碼: {$code})";
              
              // 如果是攔截錯(cuò)誤,添加詳細(xì)原因
              if ($code == 10208 && !empty($data) && isset($dataMessages[$data])) {
                  $message .= ': ' . $dataMessages[$data];
              }
              
              return $message;
          }
      }
       
      // ==================== 使用示例 ====================
       
      // 創(chuàng)建短信實(shí)例
      $sms = new InternationalSMS();
       
      // 示例1:發(fā)送驗(yàn)證碼短信
      $mobile = '639257890123'; // 國際手機(jī)號(菲律賓示例)
      $verificationCode = rand(1000, 9999); // 生成隨機(jī)驗(yàn)證碼
      $message = "Your verification code is {$verificationCode}. Please use it within 10 minutes.";
       
      $result = $sms->sendVerificationCode($mobile, $message);
       
      if ($result['success']) {
          echo "短信發(fā)送成功!消息ID: " . $result['msg_id'] . "\n";
          // 這里應(yīng)該將msg_id保存到數(shù)據(jù)庫,與用戶關(guān)聯(lián)
      } else {
          echo "短信發(fā)送失敗: " . $result['message'] . "\n";
      }
       
      // 示例2:獲取狀態(tài)報(bào)告
      // $reportResult = $sms->getReport();
      // if ($reportResult['success']) {
      //     echo "獲取到 " . count($reportResult['reports']) . " 條狀態(tài)報(bào)告\n";
      //     foreach ($reportResult['reports'] as $report) {
      //         echo "手機(jī)號: {$report['mobile']}, 狀態(tài): {$report['status']}, 時(shí)間: {$report['time']}\n";
      //     }
      // } else {
      //     echo "獲取狀態(tài)報(bào)告失敗: " . $reportResult['message'] . "\n";
      // }
       
      ?>

      879ed07f213c41f4b933b963d5cdd3bb

      四、使用說明

      1. 配置參數(shù)
        • 將$sp_id替換為您的實(shí)際 SP_ID
        • 將$raw_password替換為您的原始密碼
      2. 發(fā)送短信
        • 調(diào)用sendVerificationCode方法,傳入國際手機(jī)號和短信內(nèi)容
        • 國際手機(jī)號格式:國家代碼 + 號碼(如菲律賓:639257890123)
      3. 獲取狀態(tài)報(bào)告
        • 調(diào)用getReport方法獲取短信發(fā)送狀態(tài)
      4. 錯(cuò)誤處理
        • 代碼已包含完整的錯(cuò)誤碼解析功能
        • 發(fā)送失敗時(shí)會返回詳細(xì)的錯(cuò)誤信息

      五、注意事項(xiàng)

      • 確保服務(wù)器已開啟 cURL 擴(kuò)展
      • 國際手機(jī)號不需要添加 "+" 前綴
      • 每條短信的狀態(tài)報(bào)告只能獲取一次,獲取后需要本地存儲

      這個(gè) Demo 提供了完整的功能實(shí)現(xiàn)和錯(cuò)誤處理,下載后只需替換配置參數(shù)即可使用。

      posted on 2025-09-09 22:13  閃速碼  閱讀(49)  評論(0)    收藏  舉報(bào)
       
      主站蜘蛛池模板: 国内精品免费久久久久电影院97| 无码专区 人妻系列 在线| 99精品久久精品| 中文字幕日韩精品国产| 国产熟女精品一区二区三区| 亚洲成av人片无码天堂下载| 天堂√最新版中文在线地址| 国产熟睡乱子伦视频在线播放| 中文字幕av无码一区二区三区 | 欧美黑人又粗又大久久久| 中文字幕乱码熟妇五十中出| 国产精品无码无卡在线播放| 国产中年熟女大集合| 云安县| 欧美一进一出抽搐大尺度视频| 中国女人高潮hd| 丰满爆乳一区二区三区| av午夜福利亚洲精品福利| 美女自卫慰黄网站| 免费又黄又爽1000禁片| 国产粉嫩一区二区三区av| 最近中文字幕国产精选| 好了av四色综合无码| 国产精品一区二区久久毛片| 一区二区三区精品不卡| 神木县| 精品久久久久无码| 唐人社视频呦一区二区| 久久久久免费看成人影片| 4虎四虎永久在线精品免费| 国产 亚洲 制服 无码 中文| 99久久国产成人免费网站| 欧美成人www免费全部网站| 国产香蕉一区二区三区在线视频| 欧美牲交a欧美牲交aⅴ图片| 欧美成人精品三级网站| 蜜桃视频在线观看网站免费| 国产亚洲一二三区精品| 激情综合网激情国产av| 永久免费AV无码网站YY| 无码人妻斩一区二区三区 |