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; }