示例#1
0
        public async void SendSmsTest()
        {
            var message = new RongCloudSmsMessage {
                Mobile     = "",
                TemplateId = "123",
            };

            message.Vars.Add(1, "311851");

            var response = await _client.SendCodeAsync(message);

            Assert.True(response.Code == 200, JsonConvert.SerializeObject(response));
        }
示例#2
0
        public async Task <RongCloudSmsResult> SendCodeAsync(RongCloudSmsMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (string.IsNullOrWhiteSpace(_rongAccount.AppKey))
            {
                throw new ArgumentNullException(nameof(_rongAccount.AppKey));
            }
            if (string.IsNullOrWhiteSpace(_rongAccount.AppSecret))
            {
                throw new ArgumentNullException(nameof(_rongAccount.AppSecret));
            }

            message.CheckParameters();

            var bizParams = new Dictionary <string, string>
            {
                { "mobile", message.Mobile },
                { "templateId", message.TemplateId },
                { "region", message.Region }
            };

            foreach (var kvp in message.Vars)
            {
                bizParams.Add($"p{kvp.Key}", kvp.Value);
            }

            var signatureTuple = SignatureHelper.GenerateSignature(_rongAccount.AppSecret);
            var signatureBag   = new RongCloudSignatureBag
            {
                AppKey    = _rongAccount.AppKey,
                Nonce     = signatureTuple.nonce,
                Signature = signatureTuple.signature,
                Timestamp = signatureTuple.timestamp
            };

            var content = new FormUrlEncodedContent(bizParams);

            return(await _proxy.SendSmsAsync(signatureBag, content)
                   .Retry(_config.RetryTimes)
                   .Handle().WhenCatch <Exception>(e =>
            {
                _exceptionHandler?.Invoke(e);
                return ReturnAsDefaultResponse();
            }));
        }