gosms

package module
v0.0.0-...-6a44d15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2020 License: Apache-2.0 Imports: 4 Imported by: 0

README

gosms

golang通用发送短信库,包含aliyun短信可发国内,twilio可发国际,同时可以自由添加更多短信服务商,自动入库和验证

安装

go get github.com/gohouse/gosms

特点

  • 支持国内和国际短信
  • 自动维护数据库短信入库和核销
  • 可以自己添加更多短信服务商支持

默认支持

  • 短信服务商,默认支持 aliyun(国内), twilio(国际)
  • 数据库适配器: 默认提供了mysql的适配器, 可以自行添加,自动维护数据库表

说明: 之所以不用 aliyun 发送国际短信,主要是因为太贵了,贵了将近1倍

如果想添加更多数据库支持,只需要实现接口 datapter.DriverAdapter 即可
如果想添加更多短信服务商支持,只需要实现接口 datapter.SdkAdapter 即可

使用

  • 使用 aliyun 示例
package main

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/gohouse/gorose/v2"
	"github.com/gohouse/gosms"
	"github.com/gohouse/gosms/adapter"
	"github.com/gohouse/gosms/adapter/drivers"
	"github.com/gohouse/gosms/adapter/sdks"
)

// 阿里云公共配置
var aliOpts = &sdks.AliyunOptions{
	SignName:     "123",
	TemplateCode: "gsfas",
	OutId:        "1",
	AccessKeyId:  "xxxxxxxxxxx",
	AccessSecret: "xxxxxxxxxxxxxx",
}

func main() {
	// 初始化短信,包括数据库,入库adapter,短信服务
	var gs = gosms.NewGoSMS(
		DB(),	// 数据库orm
		drivers.NewMysqlDriver(),	// 短信入库和核销
		// 配置sdk, gosms.CC_CN 为中国
		// gosms.CC_Global 为全球, 另外可以指定人员国家,具体参考 gosms.CallingCode
		gosms.Sdk{gosms.CC_CN: sdks.NewAliyunSdk(aliOpts)},	// 短信服务商
	)

	// 短信验证码
	var code = "231532"
	// 入库的数据
	var sms = adapter.Sms{
		Code:      code,
		MobilePre: 12,
		Mobile:    "13212341234",
		Ip:        "8.8.8.8",
	}

	// 发送短信
	err := gs.SendSMS(&sms)
	fmt.Println(err)

	// 核销短信
	//err = gs.CheckSMS(&sms)
	//fmt.Println(err)
}

// 试用gorose, 初始化数据库
func DB() *gorose.Engin {
	engin, err := gorose.Open(&gorose.Config{
		Driver: "mysql",
		Dsn:    "root:root@tcp(localhost:3306)/novel?charset=utf8",
		Prefix: "nv_",
	})
	if err != nil {
		panic(err.Error())
	}
	return engin
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CallingCode

type CallingCode int64
const (
	CC_GLOBAL CallingCode = 999  // 如果不存在该国的短信sdk,则默认使用这个全球发送
	CC_CP     CallingCode = 011  // Clipperton Island | 克利珀顿岛
	CC_KY     CallingCode = 1345 // Cayman Islands | 开曼群岛
	CC_YT     CallingCode = 262  // Mayotte | 马约特
	CC_CO     CallingCode = 57   // Colombia | 哥伦比亚
	CC_KP     CallingCode = 850  // North Korea | 朝鲜
	CC_LV     CallingCode = 371  // Latvia | 拉脱维亚
	CC_SV     CallingCode = 503  // El Salvador | 萨尔瓦多
	CC_BA     CallingCode = 387  // Bosnia & Herzegovina | 波黑
	CC_GL     CallingCode = 299  // Greenland | 格陵兰
	CC_MT     CallingCode = 356  // Malta | 马耳他
	CC_UZ     CallingCode = 998  // Uzbekistan | 乌兹别克斯坦
	CC_AM     CallingCode = 374  // Armenia | 亚美尼亚
	CC_AX     CallingCode = 358  // Åland Islands | 奥兰群岛
	CC_MK     CallingCode = 389  // Macedonia | 北马其顿共和国
	CC_CV     CallingCode = 238  // Cape Verde | 佛得角
	CC_GT     CallingCode = 502  // Guatemala | 危地马拉
	CC_LI     CallingCode = 423  // Liechtenstein | 列支敦士登
	CC_TL     CallingCode = 670  // Timor-Leste | 东帝汶
	CC_MG     CallingCode = 261  // Madagascar | 马达加斯加
	CC_NZ     CallingCode = 64   // New Zealand | 新西兰
	CC_ZW     CallingCode = 263  // Zimbabwe | 津巴布韦
	CC_HM     CallingCode = 672  // Heard And McDonald Islands | 赫德岛和麦克唐纳群岛
	CC_NE     CallingCode = 227  // Niger | 尼日尔
	CC_PN     CallingCode = 64   // Pitcairn Islands | 皮特凯恩群岛
	CC_SY     CallingCode = 963  // Syria | 叙利亚
	CC_VU     CallingCode = 678  // Vanuatu | 瓦努阿图
	CC_WS     CallingCode = 685  // Samoa | 萨摩亚
	CC_TR     CallingCode = 90   // Turkey | 土耳其
	CC_VC     CallingCode = 1784 // St. Vincent & Grenadines | 圣文森特和格林纳丁斯
	CC_CW     CallingCode = 599  // Curaçao | 库拉索
	CC_GQ     CallingCode = 240  // Equatorial Guinea | 赤道几内亚
	CC_IQ     CallingCode = 964  // Iraq | 伊拉克
	CC_KM     CallingCode = 269  // Comoros | 科摩罗
	CC_SB     CallingCode = 677  // Solomon Islands | 所罗门群岛
	CC_TK     CallingCode = 690  // Tokelau | 托克劳
	CC_KR     CallingCode = 82   // South Korea | 南非
	CC_UY     CallingCode = 598  // Uruguay | 乌拉圭
	CC_RE     CallingCode = 262  // Réunion | 留尼汪
	CC_BY     CallingCode = 375  // Belarus | 白俄罗斯
	CC_CL     CallingCode = 56   // Chile | 智利
	CC_DG     CallingCode = 246  // Diego Garcia | 迪戈加西亚岛
	CC_ET     CallingCode = 251  // Ethiopia | 埃塞俄比亚
	CC_HT     CallingCode = 509  // Haiti | 海地
	CC_IT     CallingCode = 39   // Italy | 意大利
	CC_AQ     CallingCode = 672  // Antarctica | 南极洲
	CC_LB     CallingCode = 961  // Lebanon | 黎巴嫩
	CC_LS     CallingCode = 266  // Lesotho | 莱索托
	CC_TM     CallingCode = 993  // Turkmenistan | 土库曼斯坦
	CC_TV     CallingCode = 688  // Tuvalu | 图瓦卢
	CC_BB     CallingCode = 1246 // Barbados | 巴巴多斯
	CC_CI     CallingCode = 225  // Côte d’Ivoire | 科特迪瓦
	CC_ER     CallingCode = 291  // Eritrea | 厄立特里亚
	CC_HN     CallingCode = 504  // Honduras | 洪都拉斯
	CC_IS     CallingCode = 354  // Iceland | 冰岛
	CC_KH     CallingCode = 855  // Cambodia | 柬埔寨
	CC_AL     CallingCode = 355  // Albania | 阿尔巴尼亚
	CC_CR     CallingCode = 506  // Costa Rica | 哥斯达黎加
	CC_DZ     CallingCode = 213  // Algeria | 阿尔及利亚
	CC_MD     CallingCode = 373  // Moldova | 摩尔多瓦
	CC_BN     CallingCode = 673  // Brunei | 文莱
	CC_FK     CallingCode = 500  // Falkland Islands | 福克兰群岛(马尔维纳斯)
	CC_GA     CallingCode = 241  // Gabon | 加蓬
	CC_GU     CallingCode = 1671 // Guam | 关岛
	CC_TD     CallingCode = 235  // Chad | 乍得
	CC_AF     CallingCode = 93   // Afghanistan | 阿富汗
	CC_CF     CallingCode = 236  // Central African Republic | 中非
	CC_DM     CallingCode = 1767 // Dominica | 多米尼克
	CC_IO     CallingCode = 246  // British Indian Ocean Territory | 英属维尔京群岛
	CC_OM     CallingCode = 968  // Oman | 阿曼
	CC_SK     CallingCode = 421  // Slovakia | 斯洛伐克
	CC_BQ     CallingCode = 599  // Caribbean Netherlands | 库拉索
	CC_LK     CallingCode = 94   // Sri Lanka | 斯里兰卡
	CC_LU     CallingCode = 352  // Luxembourg | 卢森堡
	CC_PL     CallingCode = 48   // Poland | 波兰
	CC_IE     CallingCode = 353  // Ireland | 爱尔兰
	CC_MV     CallingCode = 960  // Maldives | 马尔代夫
	CC_QA     CallingCode = 974  // Qatar | 卡塔尔
	CC_MH     CallingCode = 692  // Marshall Islands | 马绍尔群岛
	CC_TZ     CallingCode = 255  // Tanzania | 坦桑尼亚
	CC_GH     CallingCode = 233  // Ghana | 加纳
	CC_NP     CallingCode = 977  // Nepal | 尼泊尔
	CC_TJ     CallingCode = 992  // Tajikistan | 塔吉克斯坦
	CC_XK     CallingCode = 383  // Kosovo | 科索沃
	CC_AU     CallingCode = 61   // Australia | 澳大利亚
	CC_DJ     CallingCode = 253  // Djibouti | 吉布提
	CC_JP     CallingCode = 81   // Japan | 日本
	CC_PY     CallingCode = 595  // Paraguay | 巴拉圭
	CC_RU     CallingCode = 7    // Russia | 俄罗斯
	CC_SD     CallingCode = 249  // Sudan | 苏丹
	CC_BS     CallingCode = 1242 // Bahamas | 巴哈马国
	CC_FR     CallingCode = 33   // France | 法国
	CC_SE     CallingCode = 46   // Sweden | 瑞典
	CC_TA     CallingCode = 290  // Tristan da Cunha | 特里斯坦-达库尼亚群岛
	CC_MY     CallingCode = 60   // Malaysia | 马来西亚
	CC_TC     CallingCode = 1649 // Turks & Caicos Islands | 特克斯和凯科斯群岛
	CC_CU     CallingCode = 53   // Cuba | 古巴
	CC_FM     CallingCode = 691  // Micronesia | 密克罗尼西亚联邦
	CC_GI     CallingCode = 350  // Gibraltar | 直布罗陀
	CC_KI     CallingCode = 686  // Kiribati | 基里巴斯
	CC_PS     CallingCode = 970  // Palestinian Territories | 巴勒斯坦地区
	CC_TH     CallingCode = 66   // Thailand | 泰国
	CC_BE     CallingCode = 32   // Belgium | 比利时
	CC_CM     CallingCode = 237  // Cameroon | 喀麦隆
	CC_EA     CallingCode = 34   // Ceuta And Melilla | 休塔和梅利拉
	CC_JE     CallingCode = 44   // Jersey | 泽西岛
	CC_NI     CallingCode = 505  // Nicaragua | 尼加拉瓜
	CC_AW     CallingCode = 297  // Aruba | 阿鲁巴
	CC_AS     CallingCode = 1684 // American Samoa | 美属萨摩亚
	CC_CG     CallingCode = 242  // Congo - Brazzaville | 刚果(布)
	CC_GB     CallingCode = 44   // United Kingdom | 英国
	CC_LY     CallingCode = 218  // Libya | 利比亚
	CC_JO     CallingCode = 962  // Jordan | 约旦
	CC_NA     CallingCode = 264  // Namibia | 纳米尼亚
	CC_PA     CallingCode = 507  // Panama | 巴拿马
	CC_RS     CallingCode = 381  // Serbia | 塞尔维亚和黑山
	CC_SA     CallingCode = 966  // Saudi Arabia | 沙特阿拉伯
	CC_SJ     CallingCode = 47   // Svalbard & Jan Mayen | 斯瓦尔巴岛和扬马延岛
	CC_SX     CallingCode = 1721 // Sint Maarten | 圣马丁岛
	CC_CY     CallingCode = 357  // Cyprus | 塞浦路斯
	CC_FI     CallingCode = 358  // Finland | 芬兰
	CC_HR     CallingCode = 385  // Croatia | 克罗地亚
	CC_MN     CallingCode = 976  // Mongolia | 蒙古
	CC_WF     CallingCode = 681  // Wallis & Futuna | 瓦利斯和富图纳
	CC_AD     CallingCode = 376  // Andorra | 安道尔
	CC_EC     CallingCode = 593  // Ecuador | 厄瓜多尔
	CC_GG     CallingCode = 44   // Guernsey | 根西岛
	CC_MF     CallingCode = 590  // St. Martin | 圣马丁
	CC_MZ     CallingCode = 258  // Mozambique | 莫桑比克
	CC_PM     CallingCode = 508  // St. Pierre & Miquelon | 圣皮埃尔和密克隆
	CC_UM     CallingCode = 246  // U.S. Outlying Islands | 美国本土外小岛屿
	CC_AC     CallingCode = 247  // Ascension Island | 阿森松岛
	CC_NG     CallingCode = 234  // Nigeria | 尼日利亚
	CC_PF     CallingCode = 689  // French Polynesia | 法属波利尼西亚
	CC_PW     CallingCode = 680  // Palau | 帕劳
	CC_SN     CallingCode = 221  // Senegal | 塞内加尔
	CC_SS     CallingCode = 211  // South Sudan | 南非
	CC_GF     CallingCode = 594  // French Guiana | 法属波利尼西亚
	CC_UG     CallingCode = 256  // Uganda | 乌干达
	CC_BL     CallingCode = 590  // St. Barthélemy | 圣巴泰勒米
	CC_GP     CallingCode = 590  // Guadeloupe | 瓜德罗普
	CC_MU     CallingCode = 230  // Mauritius | 毛里求斯
	CC_SG     CallingCode = 65   // Singapore | 新加坡
	CC_SR     CallingCode = 597  // Suriname | 苏里南
	CC_VE     CallingCode = 58   // Venezuela | 委内瑞拉
	CC_KW     CallingCode = 965  // Kuwait | 科威特
	CC_RW     CallingCode = 250  // Rwanda | 卢旺达
	CC_BV     CallingCode = 55   // Bouvet Island | 布韦岛
	CC_CC     CallingCode = 61   // Cocos (Keeling) Islands | 科科斯(基林)群岛
	CC_CX     CallingCode = 61   // Christmas Island | 圣诞岛
	CC_GN     CallingCode = 224  // Guinea | 几内亚
	CC_HK     CallingCode = 852  // Hong Kong SAR China | 香港
	CC_IC     CallingCode = 34   // Canary Islands | 加那利群岛
	CC_IM     CallingCode = 44   // Isle of Man | 马恩岛
	CC_ML     CallingCode = 223  // Mali | 马里
	CC_NO     CallingCode = 47   // Norway | 挪威
	CC_ZA     CallingCode = 27   // South Africa | 南非
	CC_BI     CallingCode = 257  // Burundi | 布隆迪
	CC_BZ     CallingCode = 501  // Belize | 伯利兹
	CC_KZ     CallingCode = 7    // Kazakhstan | 哈萨克斯坦
	CC_PH     CallingCode = 63   // Philippines | 菲律宾
	CC_TF     CallingCode = 262  // French Southern Territories | 法属波利尼西亚
	CC_TW     CallingCode = 886  // Taiwan | 台湾
	CC_BM     CallingCode = 1441 // Bermuda | 百慕大
	CC_EE     CallingCode = 372  // Estonia | 爱沙尼亚
	CC_GD     CallingCode = 1473 // Grenada | 格林纳达
	CC_NC     CallingCode = 687  // New Caledonia | 新西兰
	CC_PK     CallingCode = 92   // Pakistan | 巴基斯坦
	CC_SH     CallingCode = 290  // St. Helena | 圣赫勒拿岛
	CC_AG     CallingCode = 1268 // Antigua & Barbuda | 安提瓜和巴布达
	CC_BR     CallingCode = 55   // Brazil | 巴西
	CC_ES     CallingCode = 34   // Spain | 西班牙
	CC_FJ     CallingCode = 679  // Fiji | 斐济
	CC_TG     CallingCode = 228  // Togo | 多哥
	CC_SC     CallingCode = 248  // Seychelles | 塞舌尔
	CC_AZ     CallingCode = 994  // Azerbaijan | 阿塞拜疆
	CC_BG     CallingCode = 359  // Bulgaria | 保加利亚
	CC_GW     CallingCode = 245  // Guinea-Bissau | 几内亚比绍
	CC_KN     CallingCode = 1869 // St. Kitts & Nevis | 圣基茨和尼维斯
	CC_MM     CallingCode = 95   // Myanmar (Burma) | 缅甸
	CC_PE     CallingCode = 51   // Peru | 秘鲁
	CC_IN     CallingCode = 91   // India | 印度
	CC_MS     CallingCode = 1664 // Montserrat | 蒙特塞拉特
	CC_SZ     CallingCode = 268  // Swaziland | 斯威士兰
	CC_CN     CallingCode = 86   // China | 中国
	CC_EG     CallingCode = 20   // Egypt | 埃及
	CC_GS     CallingCode = 500  // South Georgia And South Sandwich Islands | 南非
	CC_GY     CallingCode = 592  // Guyana | 圭亚那
	CC_BD     CallingCode = 880  // Bangladesh | 孟加拉国
	CC_CD     CallingCode = 243  // Congo - Kinshasa | 刚果(金)
	CC_ZM     CallingCode = 260  // Zambia | 赞比亚
	CC_BJ     CallingCode = 229  // Benin | 贝宁
	CC_FO     CallingCode = 298  // Faroe Islands | 法罗群岛
	CC_LA     CallingCode = 856  // Laos | 老挝
	CC_MO     CallingCode = 853  // Macau SAR China | 澳门
	CC_MW     CallingCode = 265  // Malawi | 马拉维
	CC_VN     CallingCode = 84   // Vietnam | 越南
	CC_AO     CallingCode = 244  // Angola | 安哥拉
	CC_TN     CallingCode = 216  // Tunisia | 突尼斯
	CC_TO     CallingCode = 676  // Tonga | 汤加
	CC_CH     CallingCode = 41   // Switzerland | 瑞士
	CC_DO     CallingCode = 1809 // Dominican Republic | 多米尼加
	CC_GM     CallingCode = 220  // Gambia | 冈比亚
	CC_MX     CallingCode = 52   // Mexico | 墨西哥
	CC_NU     CallingCode = 683  // Niue | 纽埃
	CC_SL     CallingCode = 232  // Sierra Leone | 塞拉利
	CC_PT     CallingCode = 351  // Portugal | 葡萄牙
	CC_VI     CallingCode = 1340 // U.S. Virgin Islands | 美属维京群岛
	CC_CA     CallingCode = 1    // Canada | 加拿大
	CC_ME     CallingCode = 382  // Montenegro | 黑山
	CC_SO     CallingCode = 252  // Somalia | 索马里
	CC_YE     CallingCode = 967  // Yemen | 也门
	CC_DK     CallingCode = 45   // Denmark | 丹麦
	CC_LC     CallingCode = 1758 // St. Lucia | 圣卢西亚
	CC_LR     CallingCode = 231  // Liberia | 利比里亚
	CC_MP     CallingCode = 1670 // Northern Mariana Islands | 北马里亚纳
	CC_HU     CallingCode = 36   // Hungary | 匈牙利
	CC_IR     CallingCode = 98   // Iran | 伊朗
	CC_KG     CallingCode = 996  // Kyrgyzstan | 吉尔吉斯斯坦
	CC_NL     CallingCode = 31   // Netherlands | 荷属安的列斯
	CC_UA     CallingCode = 380  // Ukraine | 乌克兰
	CC_AR     CallingCode = 54   // Argentina | 阿根廷
	CC_BT     CallingCode = 975  // Bhutan | 不丹
	CC_GR     CallingCode = 30   // Greece | 希腊
	CC_AT     CallingCode = 43   // Austria | 奥地利
	CC_CZ     CallingCode = 420  // Czechia | 捷克
	CC_NR     CallingCode = 674  // Nauru | 瑙鲁
	CC_PG     CallingCode = 675  // Papua New Guinea | 巴布亚新几内亚
	CC_TT     CallingCode = 1868 // Trinidad & Tobago | 特立尼达和多巴哥
	CC_CK     CallingCode = 682  // Cook Islands | 库克群岛
	CC_DE     CallingCode = 49   // Germany | 德国
	CC_KE     CallingCode = 254  // Kenya | 肯尼亚
	CC_SI     CallingCode = 386  // Slovenia | 斯洛文尼亚
	CC_IL     CallingCode = 972  // Israel | 以色列
	CC_BH     CallingCode = 973  // Bahrain | 巴林
	CC_BO     CallingCode = 591  // Bolivia | 玻利维亚
	CC_MQ     CallingCode = 596  // Martinique | 马提尼克
	CC_MR     CallingCode = 222  // Mauritania | 毛里塔尼亚
	CC_US     CallingCode = 1    // United States | 美国
	CC_AE     CallingCode = 971  // United Arab Emirates | 阿联酋
	CC_MA     CallingCode = 212  // Morocco | 摩洛哥
	CC_VG     CallingCode = 1284 // British Virgin Islands | 英属维尔京群岛
	CC_BF     CallingCode = 226  // Burkina Faso | 布基纳法索
	CC_GE     CallingCode = 995  // Georgia | 格鲁吉亚
	CC_MC     CallingCode = 377  // Monaco | 摩纳哥
	CC_RO     CallingCode = 40   // Romania | 罗马尼亚
	CC_BW     CallingCode = 267  // Botswana | 博茨瓦纳
	CC_SM     CallingCode = 378  // San Marino | 圣马力诺
	CC_LT     CallingCode = 370  // Lithuania | 立陶宛
	CC_PR     CallingCode = 1787 // Puerto Rico | 波多黎各
	CC_ST     CallingCode = 239  // São Tomé & Príncipe | 圣多美和普林西比
	CC_AI     CallingCode = 1264 // Anguilla | 安圭拉
	CC_EH     CallingCode = 212  // Western Sahara | 西撒哈拉
	CC_ID     CallingCode = 62   // Indonesia | 印度尼西亚
	CC_VA     CallingCode = 379  // Vatican City | 梵蒂冈
	CC_JM     CallingCode = 1876 // Jamaica | 牙买加
	CC_NF     CallingCode = 672  // Norfolk Island | 诺福克岛
)

type Driver

type Driver adapter.DriverAdapter

Driver 保存数据库的适配器,晚上自动入库与核销

type GoSMS

type GoSMS struct {
	// contains filtered or unexported fields
}

GoSMS sms主体

func NewGoSMS

func NewGoSMS(engin *gorose.Engin, driver Driver, sdk Sdk) *GoSMS

NewGoSMS 初始化sms

func (*GoSMS) CheckSMS

func (s *GoSMS) CheckSMS(sms *adapter.Sms) (err error)

CheckSMS 核销短信

func (*GoSMS) SendSMS

func (s *GoSMS) SendSMS(sms *adapter.Sms) (err error)

SendSMS 发送短信

type Sdk

Sdk 运营商sdk

Directories

Path Synopsis
sdks
documents: https://www.twilio.com/blog/2014/06/sending-sms-from-your-go-app.html author: kevin
documents: https://www.twilio.com/blog/2014/06/sending-sms-from-your-go-app.html author: kevin

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL