Пример #1
0
        public async Task<RedPacketSentResult> SendAsync(RedPacket redPacket)
        {
            if (redPacket == null)
                throw new ArgumentNullException("redPacket");
            if (!redPacket.IsValid())
                throw new ArgumentException("redPacket");

            var amount = Amounter.GetAmount(redPacket.Amount);
            var amountString = amount.ToString();

            var sendData = new SortedList<string, string>(StringComparer.Ordinal);
            sendData.Add("nonce_str", Guid.NewGuid().ToString("N"));
            sendData.Add("mch_billno", redPacket.BillNumber);
            sendData.Add("mch_id", _mchId);
            sendData.Add("wxappid", redPacket.AppId);
            sendData.Add("nick_name", redPacket.SendName); //简单起见使用send_name。
            sendData.Add("send_name", redPacket.SendName);
            sendData.Add("re_openid", redPacket.OpenId);
            sendData.Add("total_amount", amountString);
            sendData.Add("min_value", amountString);
            sendData.Add("max_value", amountString);
            sendData.Add("total_num", "1");
            sendData.Add("wishing", redPacket.Wishing);
            sendData.Add("client_ip", redPacket.IpAddress);
            sendData.Add("act_name", redPacket.ActName);
            sendData.Add("remark", redPacket.Remark);
            var xml = DictionaryToXml(sendData);

            var result = await _sendCert.PostAsync(xml);
            var result2 = Parse(result);
            result2.Amount = amount;
            result2.BillNumber = redPacket.BillNumber;
            return result2;
        }