如何發(fā)送國際短信
本教程可以實現(xiàn)給指定手機號發(fā)含驗證碼的短信,用于驗證手機號真實性或驗證操作安全性。
一、注冊、報備及設(shè)置
- 報備可以讓產(chǎn)品經(jīng)理、運營等業(yè)務(wù)人員完成。
- 開發(fā)階段,建議先關(guān)閉IP 白名單,或?qū)⒎?wù)器 IP 及本地 IP 均設(shè)置在 IP 白名單內(nèi)。
- 為了避免開發(fā)調(diào)試中,您的手機號被系統(tǒng)防騷擾機制攔截,可以在測試白名單填寫您的手機號。
二、調(diào)通國際短信接口
方法一:直接使用 API
請求
URL:https://sms.yunpian.com/v2/sms/single_send.json
訪問方式:POST
http 支持:支持 https 與 http 兩種訪問,建議使用 https
參數(shù):
參數(shù)名 | 類型 | 是否必傳 | 是否默認(rèn)開放 | 描述 | 示例 |
---|---|---|---|---|---|
apikey | String | 是 | 是 | 用戶唯一標(biāo)識,在管理控制臺獲取 | 9b11127a9701975c734b8aee81ee3526 |
mobile | String | 是 | 是 | 接收的手機號,僅支持單號碼發(fā)送; 國際號碼需包含國際地區(qū)前綴號碼 | +93701234567 |
text | String | 是 | 是 | 已審核短信模板 | 【云片網(wǎng)】您的驗證碼是 1234 |
extend | String | 否 | 否 | 下發(fā)號碼擴展號,純數(shù)字 | 001 |
uid | String | 否 | 否 | 該條短信在您業(yè)務(wù)系統(tǒng)內(nèi)的 ID,如訂單號或者短信發(fā)送記錄流水號 | 10001 |
callback_url | String | 否 | 是 | 短信發(fā)送后將向這個地址推送(運營商返回的)狀態(tài)報告。 如推送地址固定,建議在"數(shù)據(jù)推送與獲取”做批量設(shè)置。 如后臺已設(shè)置地址,且請求內(nèi)也包含此參數(shù),將以請求內(nèi)地址為準(zhǔn) | http://your_receive_url\_address |
注:如需使用"extend""uid"參數(shù),可免費向客服申請。
請求示例
/** *單條短信發(fā)送,智能匹配短信模板 * * @param apikey成功注冊后登錄云片官網(wǎng),進(jìn)入后臺可查看 * @param text需要使用已審核通過的模板或者默認(rèn)模板 * @param mobile接收的手機號,僅支持單號碼發(fā)送 * @return json格式字符串 */ public static String singleSend(String apikey, String text, String mobile) { Map<String, String> params = new HashMap<String, String>();//請求參數(shù)集合 params.put("apikey", apikey); params.put("text", text); params.put("mobile", mobile); return post("https://sms.yunpian.com/v2/sms/single_send.json", params);//請自行使用post方式請求,可使用Apache HttpClient }
響應(yīng)
名稱 | 類型 | 描述 |
---|---|---|
code | integer | 0 代表發(fā)送成功,其他 code 代表出錯,詳細(xì)見"返回值說明"頁面 |
msg | text | 例如""發(fā)送成功"",或者相應(yīng)錯誤信息 |
count | integer | 發(fā)送成功短信的計費條數(shù)(計費條數(shù):70 個字一條,超出 70 個字時按每 67 字一條計費) |
fee | double | 扣費金額,單位:元,類型:雙精度浮點型/double |
unit | string | 計費單位;例如:“RMB” |
mobile | string | 發(fā)送手機號 |
sid | long(64 位) | 短信 id,64 位整型, 對應(yīng) Java 和 C#的 long,不可用 int 解析 |
Json 返回示例
{ "code": 0, "msg": "發(fā)送成功", "count": 1, "fee": 0.05, "unit": "RMB", "mobile": "+93701234567", "sid": 3310228982 }
特別注意: 國際短信接口每次調(diào)用只能發(fā)送一條短信,如需發(fā)送多條,請多次調(diào)用。
方法二:下載、導(dǎo)入 SDK,并配置
目前云片提供 JAVA/PHP/Python/C#/Golang 5 種語言 SDK、如果您的編程語言云片未提供 SDK,您可以根據(jù)文檔自行對接。
SDK 下載地址(JAVA/PHP/Python/C#/GOLANG):去下載
//初始化clnt,使用單例方式 YunpianClient clnt = new YunpianClient("apikey").init(); //發(fā)送短信API Map<String, String> param = clnt.newParam(2); param.put(YunpianClient.MOBILE, "+1********"); param.put(YunpianClient.TEXT, "【云片網(wǎng)】您的驗證碼是1234"); Result<SmsSingleSend> r = clnt.sms().single_send(param); //獲取返回結(jié)果,返回碼:r.getCode(),返回碼描述:r.getMsg(),API結(jié)果:r.getData(),其他說明:r.getDetail(),調(diào)用異常:r.getThrowable() //賬戶:clnt.user().* 簽名:clnt.sign().* 模版:clnt.tpl().* 短信:clnt.sms().* 語音:clnt.voice().* 流量:clnt.flow().* 隱私通話:clnt.call().* //釋放clnt clnt.close()
三、實現(xiàn)業(yè)務(wù)邏輯
調(diào)用接口傳入?yún)?shù)
- 短信內(nèi)容需和通過審核的模板匹配上才能發(fā)送,如不匹配接口會返回報錯信息,報錯記錄在后臺失敗請求頁可以看到。
- 傳入的手機號(mobile 參數(shù))會自動格式化到 E.164 格式,可能會造成傳入 mobile 參數(shù)跟后續(xù)的狀態(tài)報告中的號碼不一致。E.164 格式說明,參見: https://en.wikipedia.org/wiki/E.164
四、按需開發(fā)功能
- 對短信發(fā)送狀態(tài)做實時監(jiān)控
如果您需要通過程序?qū)Χ绦诺陌l(fā)送狀態(tài)做實時監(jiān)控,可以開發(fā)“推送/獲取狀態(tài)報告”接口。
- 國外地區(qū)使用海外服務(wù)器
如海外用戶可以調(diào)用海外服務(wù)器地址us.yunpian.com,獲得更快的請求和處理速度。例如使用短信接口時,將sms.yunpian.com替換為us.yunpian.com即可。