|
|
@ -0,0 +1,109 @@ |
|
|
|
package sms |
|
|
|
|
|
|
|
import ( |
|
|
|
"log" |
|
|
|
|
|
|
|
"git.tetele.net/tgo/helper" |
|
|
|
) |
|
|
|
|
|
|
|
/** |
|
|
|
* 创蓝253发送短信 |
|
|
|
* |
|
|
|
* @param string $mobile 手机号码 |
|
|
|
* @param string $msg 短信内容 |
|
|
|
* @param string $sms_sign 短信签名 |
|
|
|
* @param string $needstatus 是否需要状态报告 |
|
|
|
|
|
|
|
* @return success bool, reply map[string]string, err error |
|
|
|
*/ |
|
|
|
var CL_ACCOUNT string = "N3402351" |
|
|
|
var CL_PASSWORD string = "zmkj64U5A" |
|
|
|
|
|
|
|
// const CL_VARIABLE_SMS_URL string = "http://XXX/msg/variable/json"
|
|
|
|
|
|
|
|
func SendByCL(account, password, mobile, sms_sign, msg string) (bool, map[string]interface{}, error) { |
|
|
|
|
|
|
|
const CL_SIMPLE_SMS_URL string = "http://smssh1.253.com/msg/send/json" |
|
|
|
|
|
|
|
if account == "" { |
|
|
|
account = CL_ACCOUNT |
|
|
|
} |
|
|
|
if password == "" { |
|
|
|
password = CL_PASSWORD |
|
|
|
} |
|
|
|
|
|
|
|
//创蓝接口参数
|
|
|
|
data := map[string]string{ |
|
|
|
"account": account, |
|
|
|
"password": password, |
|
|
|
"msg": StringJoin("【", sms_sign, "】", msg), |
|
|
|
"phone": mobile, |
|
|
|
"report": "true", |
|
|
|
} |
|
|
|
|
|
|
|
response, err := PostJsonData(CL_SIMPLE_SMS_URL, data) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return false, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
var reply map[string]interface{} |
|
|
|
|
|
|
|
err = json.Unmarshal(response, &reply) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
log.Println(string(response), err) |
|
|
|
return false, nil, err |
|
|
|
} |
|
|
|
|
|
|
|
if helper.ToStr(reply["code"]) != "0" { |
|
|
|
return false, reply, nil |
|
|
|
} |
|
|
|
|
|
|
|
return true, reply, err |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询额度 |
|
|
|
* |
|
|
|
*/ |
|
|
|
func QueryRemaining(account, password string) (bool, string, map[string]interface{}, error) { |
|
|
|
|
|
|
|
const URL string = "http://smssh1.253.com/msg/balance/json" |
|
|
|
|
|
|
|
if account == "" { |
|
|
|
account = CL_ACCOUNT |
|
|
|
} |
|
|
|
if password == "" { |
|
|
|
password = CL_PASSWORD |
|
|
|
} |
|
|
|
data := map[string]string{ |
|
|
|
"account": account, |
|
|
|
"password": password, |
|
|
|
} |
|
|
|
response, err := PostJsonData(URL, data) |
|
|
|
|
|
|
|
/** 返回示例 |
|
|
|
{"code":0,"balance":"9156","time":"20230217150940","errorMsg":""} |
|
|
|
{"code":"130","msgId":"","time":"20230217145243","errorMsg":"请求参数错误"} |
|
|
|
{"code":"101","msgId":"","time":"20230217151029","errorMsg":"无此用户"} |
|
|
|
*/ |
|
|
|
if err != nil { |
|
|
|
return false, "", nil, err |
|
|
|
} |
|
|
|
|
|
|
|
var reply map[string]interface{} |
|
|
|
|
|
|
|
err = json.Unmarshal(response, &reply) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
log.Println(string(response), err) |
|
|
|
return false, "", nil, err |
|
|
|
} |
|
|
|
|
|
|
|
if helper.ToStr(reply["code"]) != "0" { |
|
|
|
return false, "", reply, nil |
|
|
|
} |
|
|
|
|
|
|
|
return true, helper.ToStr(reply["balance"]), reply, err |
|
|
|
} |