1. 程式人生 > >個性化(變數)簡訊通知服務的介面接入方法(附帶demo)

個性化(變數)簡訊通知服務的介面接入方法(附帶demo)

個性化簡訊通知也叫變數簡訊通知,其含義是可以動態改變簡訊模板中的一個或者兩個引數,可實現自動下發通知的功能,廣泛用於電商的訂單發貨、派送以及簽收通知服務,這種服務一般是接入第三方的簡訊平臺。

常見的簡訊模板模式:

【商家名稱】您好,您的快遞$(變數)已經從$(變數)發出,預計$(變數)天后到達。

這種變數簡訊很多電商公司都在使用,對於使用者來說也是一個很好的提醒服務,也可以從側面烘托商家的服務質量。

廢話不多說,介紹這種變數簡訊的接入方法

第一步:先去第三方註冊一個賬號

選擇有免費測試條數的簡訊服務商。

第二步:獲取開發者需要的appid,appkey

第三步:申請模板

第五步:拿到了這些之後,就可以去下載接入文件了

這是介面一個簡單的DEMO,接入者可以根據自己的業務需求進行調整

package com.veesing.test;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.veesing.utils.Config;

/**
 * 個性化簡訊
 * @author MWH
 *
 */
public class CustomTest {
	public static void main(String[] args) {
		// 獲取連線
		HttpClient client = new HttpClient();
		// 語音驗證碼API介面地址
		PostMethod method = new PostMethod("https://vip.veesing.com/smsApi/custom");
		// 設定編碼
		client.getParams().setContentCharset("UTF-8");
		method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=utf-8");
		// 在平臺建立的個性化簡訊模板 ID
		String smsId = "37";
		// 【中昱維信】尊敬的${變數}您好,歡迎您註冊為本公司會員,有任何疑問請聯絡客服或致電全國服務熱線:${變數}。
		// 模板中有兩個變數
		JSONArray jsonArray = new JSONArray();
		jsonArray.add("中昱使用者");
		jsonArray.add("400-68-10658");
		System.out.println(jsonArray);
		// json物件
		JSONObject json = new JSONObject();
		json.put("variables", jsonArray);
		json.put("mobile", "15080929435");
		// 最終json
		JSONArray  lastArray = new JSONArray();
		lastArray.add(json);
		System.out.println(json.toString());
		// 拼接引數
		NameValuePair[] data = { 
				new NameValuePair("appId", Config.appid), 
				new NameValuePair("appKey", Config.appkey),
				new NameValuePair("smsId", smsId), 
				// 傳送時間,時間請務必大於實際提交時間的30分鐘, 立即傳送則不填,
				// new NameValuePair("sendTime", "2018-08-21 14:00:00") ,
				new NameValuePair("content", lastArray.toString())};
		method.setRequestBody(data);
		try {
			client.executeMethod(method);
			String result = method.getResponseBodyAsString();
			// 返回結果
			System.out.println(result);
			JSONObject jsonObject = JSONObject.parseObject(result);
			// 返回2000則傳送成功(邏輯操作請根據介面文件返回引數自行判斷)
			if (jsonObject.get("returnStatus").equals("2000")) {
				System.out.println("成功!");
			} else {
				System.out.println("失敗!");
			}
			// 釋放連線
			method.setRequestHeader("Connection", "close");  
			method.releaseConnection();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

這是一些藉口返回的狀態碼

介面文件上都有做詳細的說明

4000  賬號或密碼錯誤

4005 引數錯誤

4006 模板不存在或者未稽核通過

4007  引數與模板不匹配

4004 簽名不合法

4001  賬戶餘額不足

4002  確手機號碼格式不正確

4003  手機號碼今日傳送次數已達上限

4010  相同手機號碼一分鐘之內只可傳送一次

2000  傳送成功

4008  未知原因,請聯絡客服 

4012  陣列格式錯誤

4010  賬戶被鎖定

4200  未進行企業認證,只能傳送系統預設模板

4080  定時時間必須大於當前時間 30 分鐘以上

4081  定時時間不正確 例:2017-4-5 15:34:00