1. 程式人生 > 實用技巧 >阿里雲簡訊驗證碼服務

阿里雲簡訊驗證碼服務

阿里雲簡訊驗證碼介面的使用

安裝python核心SDK庫(推薦用新版)

舊版:pip install aliyun-python-sdk-core3

新版:pip install aliyun-python-sdk-core-v3

建立簽名

建立AccessKey

AccessKey IDAccessKey Secret後面會用到

搜尋阿里雲的簡訊服務

獲取官方提供的demo

官方提供的DEMO如下

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('<accessKeyId>', '<accessSecret>', 'default')

request = CommonRequest()
request.set_accept_format('json')
request.set_domain('dysmsapi.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https') # https | http
request.set_version('2017-05-25')
request.set_action_name('SendSms')

request.add_query_param('RegionId', "default")
request.add_query_param('PhoneNumbers', "接收驗證碼的手機號")
request.add_query_param('SignName', "你的簽名名稱")
request.add_query_param('TemplateCode', "你的模版CODE")

response = client.do_action(request)
# python2:  print(response) 
print(str(response, encoding = 'utf-8'))

將程式碼寫成一個公共方法以便我們使用

# checkCode.py
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest

def send_sms(template, mobile):
    client = AcsClient('你的AccessKey ID', '你的Access Key Secret', 'default')

    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('dysmsapi.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')  # https | http  注意當專案釋出到伺服器上需要修改協議
    request.set_version('2017-05-25')

    # set_action_name 選擇呼叫的介面的名稱,如:SendSms,SendBatchSms等
    request.set_action_name('SendSms')

    request.add_query_param('RegionId', "default")  # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0
    # request.add_query_param('RegionId', "cn-hangzhou")
    request.add_query_param('PhoneNumbers', mobile)  # 傳送的人
    request.add_query_param('SignName', "你的簽名名稱")    # 簽名
    request.add_query_param('TemplateCode', "你的模板編號")    # 模板編號
    request.add_query_param('TemplateParam', f"{template}")  # 傳送驗證碼內容
    response = client.do_action_with_exception(request)

    # response = client.do_action(request)
    # # python2:  print(response)
    # print(str(response, encoding='utf-8'))

    return response

使用公共方法

code = "%06d" % random.randint(0, 999999)
# 將驗證碼存入session
request.session['sms'] = code
template = {
    'code': code,
}
res = send_sms(template, mobile)  #
res_dict = json.loads(res)
if res_dict.get('Message') == 'OK' and res_dict.get('Code') == 'OK':
    return APIResponse('ok')
else:
    return APIResponse(status=0, msg='error')