python 之阿里雲短信服務接入流程短信接口


一.阿里雲短信服務流程

1.進入阿里雲官網並登陸

 

2.進入短信服務界面,購買相應的短信套餐

 

 

短信服務文檔

 

 

關於短信服務可以查看幫助文檔:

幫助文檔

3.下載安裝python 核心SDK庫

其中sdk庫有兩個版本,建議安裝最新版本。

舊版:

pip install aliyun-python-sdk-core

 

新版:

pip install aliyun-python-sdk-core-v3

4.創建簽名

 

5.創建 AccessKey

想要調用阿里雲的api必須要有自己的accesskey,這個是調用接口時候的必填參數。

訪問密鑰AccessKey(AK)相當於登錄密碼,只是使用場景不同。AccessKey用於程序方式調用短信服務API,而登錄密碼用於登錄控制台。

AccessKey包括AccessKeyId和AccessKeySecret。

AccessKeyId用於標識用戶。

AccessKeySecret是用來驗證用戶的密鑰。AccessKeySecret必須保密。

創建AccessKey教程

6.找到相應的短信接口的SDK的python版本

 

 

最后的網址

Demo的代碼如下:

#!/usr/bin/env python
#coding=utf-8

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

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('QuerySendDetails')

request.add_query_param('RegionId', "cn-hangzhou")

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

.短信接口代碼

1.通過普通程序讓demo可以讓手機收到短信驗證碼

這時候需要先改為自己的demo能讓自己的手機號接收到短信:

#!/usr/bin/env python
# coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import json


def send_sms(template, phone):
    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('http')  # https | http
    request.set_version('2017-05-25')

    # set_action_name 這個是選擇你調用的接口的名稱,如:SendSms,SendBatchSms等
    request.set_action_name('SendSms')
    # request.set_action_name('QuerySendDetails')

    # 這個參數也是固定的
    request.add_query_param('RegionId', "default")  # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0
    # request.add_query_param('RegionId', "cn-hangzhou")

    request.add_query_param('PhoneNumbers', phone)  # 發給誰
    request.add_query_param('SignName', "簽名")  # 簽名
    request.add_query_param('TemplateCode', "短信模板編號")  # 模板編號
    request.add_query_param('TemplateParam', f"{template}")  # 發送驗證碼內容
    response = client.do_action_with_exception(request)

    return response

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


if __name__ == '__main__':
    template = {
        'code': '556634',
    }
    res = send_sms(template, phone=我的手機號)
    print(str(res, encoding='utf-8'))
    res_dict = json.loads(res)
    if res_dict.get('Message') == 'OK' and res_dict.get('Code') == 'OK':
        print("成功啦")
    else:
        print("失敗啦")

2.通過接口的方式請求到短信驗證碼

1)django框架下的短信接口demo

路由url:/api/user/sms_code/

視圖:

寫一個post方法的接口:

然后在各種邏輯判斷成功后產生驗證碼,返回短信驗證發送結果

下面是相關代碼段:

            # 生成隨機的短信驗證碼
            code = "%06d" % random.randint(0, 999999)
            template = {
                'code': code,
            }
            # 第三方短信接口返回成功的一個判斷,res為返回結果
            res = send_sms(template, phone=mobile_phone)
            res_dict = json.loads(res)
            if res_dict.get('Message') == 'OK' and res_dict.get('Code') == 'OK':

sdk修改為一個公共的調用函數:

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest


def send_sms(template, phone):
client = AcsClient('AccessKey ID', 'Access Key Secret', 'default')
# 短信里面的 我的AccessKey ID 我的Access Key Secret
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('dysmsapi.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('http')  # https | http 注意當項目發布到服務器上需要修改協議
    request.set_version('2017-05-25')

    # set_action_name 這個是選擇你調用的接口的名稱,如:SendSms,SendBatchSms等
    request.set_action_name('SendSms')
    # request.set_action_name('QuerySendDetails')

    # 這個參數也是固定的
    request.add_query_param('RegionId', "default")  # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0
    # request.add_query_param('RegionId', "cn-hangzhou")

    request.add_query_param('PhoneNumbers', phone)  # 發給誰
    request.add_query_param('SignName', "我的簽名")  # 簽名
    request.add_query_param('TemplateCode', "我的短信模板編號")  # 模板編號
    request.add_query_param('TemplateParam', f"{template}")  # 發送驗證碼內容
    response = client.do_action_with_exception(request)
return response

最后通過post方法及url進行驗證碼請求。這樣手機可以獲取短信。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM