import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception{
String host = "https://open.expauth.com";
String path = "/v2/sms/single/msg/sender";
String method = "POST";
// "{{AppCode}}" 替換成您的 AppCode
String appcode = "{{AppCode}}";
Map headers = new HashMap();
headers.put("X-Mce-Signature", "AppCode/" + appcode);
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map querys = new HashMap();
Map bodys = new HashMap();
// 填充參數(shù)
bodys.put("templateId", "templateId");
bodys.put("signId", "signId");
bodys.put("phoneNumber", "phoneNumber"); try {
/**
* 重要提示如下:
* HttpUtils請(qǐng)從
* https://static.miitang.com/saas/simple/HttpUtils.java 下載
*
* 相應(yīng)的依賴(lài)請(qǐng)參照
* https://static.miitang.com/saas/simple/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
// 獲取 response 的 body
String resStr = EntityUtils.toString(response.getEntity());
System.out.println(resStr);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == 200){
// 請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理
} else if(statusCode == 610){
// 用戶(hù)輸入的參數(shù)問(wèn)題,可直接提示用戶(hù)
} else if(statusCode == 611){
// 系統(tǒng)準(zhǔn)備的數(shù)據(jù)問(wèn)題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶(hù)
} else if(statusCode == 612){
// 用戶(hù)操作頻度問(wèn)題,可提示用戶(hù)。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理
} else if(statusCode >= 500 && statusCode < 600){
// 在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問(wèn)題,客戶(hù)端可以重試,或者聯(lián)系我司客服
} else {
// 如賬戶(hù)密碼錯(cuò)誤、IP白名單問(wèn)題、余額不足等,您應(yīng)該在對(duì)接過(guò)程中解決相關(guān)問(wèn)題。
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在Python中,使用 requests 庫(kù)發(fā)送 POST 請(qǐng)求到短信推廣接口,根據(jù)響應(yīng)狀態(tài)碼進(jìn)行業(yè)務(wù)邏輯處理,包括成功、參數(shù)問(wèn)題、數(shù)據(jù)問(wèn)題、操作頻度問(wèn)題和系統(tǒng)穩(wěn)定性問(wèn)題等的處理。
if status_code = = 200 :
"請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理"
elif status_code = = 610 :
"用戶(hù)輸入的參數(shù)問(wèn)題,可直接提示用戶(hù)"
elif status_code = = 611 :
"系統(tǒng)準(zhǔn)備的數(shù)據(jù)問(wèn)題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶(hù)"
elif status_code = = 612 :
"用戶(hù)操作頻度問(wèn)題,可提示用戶(hù)。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理"
elif status_code > = 500 & status_code < 600 :
"在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問(wèn)題,客戶(hù)端可以重試,或者聯(lián)系我司客服"
else :
"如賬戶(hù)密碼錯(cuò)誤、IP白名單問(wèn)題、余額不足等,您應(yīng)該在對(duì)接過(guò)程中解決相關(guān)問(wèn)題。"
# 安全模式(AppId)
if __name__ == '__main__':
# 這里替換成您的 appId 和 secretKey
app_id = 'app_id'
secret_key = 'secret_key'
# 服務(wù)地址
url = "https://open.expauth.com/v2/sms/single/msg/sender"
payload = json.dumps({
"templateId": "templateId",
"signId": "signId",
"phoneNumber": "phoneNumber"
}, sort_keys=True, ensure_ascii=False)
cryptor = mt_utils . AESCrypt ( secret_key )
data = cryptor . aes_encrypt ( payload )
print(f'加密結(jié)果為: {data}')
sign = mt_utils.sign(app_id, secret_key, payload)
headers = {
"Content-Type": "application/json",
"X-Mce-Signature": sign
}
response = requests . request ( " POST " , url , headers = headers , data = data )
status_code = response . status_code
print ( " headers : " , response . headers )
print("http 狀態(tài)碼:", str(status_code))
res = " "
if'{'in response . text :
res = response . text
else :
res = cryptor . aes_decrypt ( response . text )
print ( res )
if status_code = = 200 :
"請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理"
elif status_code = = 610 :
"用戶(hù)輸入的參數(shù)問(wèn)題,可直接提示用戶(hù)"
elif status_code = = 611 :
"系統(tǒng)準(zhǔn)備的數(shù)據(jù)問(wèn)題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶(hù)"
elif status_code = = 612 :
"用戶(hù)操作頻度問(wèn)題,可提示用戶(hù)。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理"
elif status_code > = 500 & status_code < 600 :
"在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問(wèn)題,客戶(hù)端可以重試,或者聯(lián)系我司客服"
else :
"如賬戶(hù)密碼錯(cuò)誤、IP白名單問(wèn)題、余額不足等,您應(yīng)該在對(duì)接過(guò)程中解決相關(guān)問(wèn)題。"
在PHP中,使用 cURL 發(fā)送 POST 請(qǐng)求到短信推廣服務(wù)接口,處理并輸出相應(yīng)的業(yè)務(wù)邏輯。它包括設(shè)置請(qǐng)求頭、發(fā)送請(qǐng)求、處理響應(yīng),根據(jù)響應(yīng)狀態(tài)碼進(jìn)行不同的業(yè)務(wù)邏輯處理,如成功、參數(shù)問(wèn)題、數(shù)據(jù)問(wèn)題、操作頻度問(wèn)題、系統(tǒng)穩(wěn)定性問(wèn)題等。
'templateId',
'signId' => 'signId',
'phoneNumber' => 'phoneNumber'
);
// 30 -- 單位分鐘
$signStr = MtUtils::sign($appId, $secretKey, time(), 3000, $params);
$encryptReqData = MtUtils::encrypt(json_encode($params),$secretKey);
$headers = array();
array_push($headers, "x-mce-signature".":".$signStr);
//根據(jù)API的要求,定義相對(duì)應(yīng)的Content-Type
array_push($headers, "Content-Type".":"."application/json;charset=utf-8");
$url = $host . $path;
$result = MtUtils::post($url,$headers,$encryptReqData);
$retMap = json_decode(MtUtils::decrypt($result[1],$secretKey), true);
$httpCode = $result[0];
$code = $retMap["code"];
// echo "rJson=".MtUtils::decrypt($result[1],$secretKey).PHP_EOL; // DEBUG
// TODO:返回值處理
if($httpCode == 200){
// 請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理
echo $retMap["code"].PHP_EOL;
echo $retMap["message"].PHP_EOL;
echo $retMap["hasFees"].PHP_EOL;
echo $retMap["fees"].PHP_EOL;
if($code == "FP00000"){
// SUCCESS
echo "SUCCESS";
}
else{
// FAILURE
echo "FAILURE";
}
} else {
echo $code.PHP_EOL; // DEBUG
if($httpCode == 610){
// 用戶(hù)輸入的參數(shù)問(wèn)題,可直接提示用戶(hù)
$errors = $retMap["errors"];
$errorMap = null;
foreach($errors as $key=>$value){
foreach($value as $key2=>$value2){
$errorMap[$key] = $value2;
break;
}
}
// 轉(zhuǎn)化為 key:tip
echo("idCardNo=".$errorMap["idCardNo"].PHP_EOL);
echo("name=".$errorMap["name"].PHP_EOL);
} else if($httpCode == 611){
// 系統(tǒng)準(zhǔn)備的數(shù)據(jù)問(wèn)題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶(hù)
echo "修訂數(shù)據(jù)狀態(tài),不要重復(fù)操作。".PHP_EOL;
} else if($httpCode == 612){
// 用戶(hù)操作頻度問(wèn)題,可提示用戶(hù)。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理
echo $retMap["message"].PHP_EOL;
} else if($httpCode >= 500 && $httpCode
短信推廣API是一種強(qiáng)大的工具,用于企業(yè)進(jìn)行市場(chǎng)宣傳和推廣活動(dòng)。其主要特點(diǎn)包括群發(fā)功能、個(gè)性化內(nèi)容、鏈接跟蹤等,通過(guò)定時(shí)發(fā)送、實(shí)時(shí)反饋等機(jī)制,提高了信息傳遞的效果。在使用時(shí)需要注意合法性驗(yàn)證、用戶(hù)隱私保護(hù)、頻率控制等多個(gè)方面,以確保短信推廣的合規(guī)性和用戶(hù)體驗(yàn)。該API有助于企業(yè)提升品牌曝光度、拓展市場(chǎng)份額,為推廣活動(dòng)的成功執(zhí)行提供了有力的支持。