Пример #1
0
        public RedPacketSentResult Send(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 = _sendCert.Post(xml);
            var result2 = Parse(result);
            result2.Amount = amount;
            result2.BillNumber = redPacket.BillNumber;
            return result2;
        }
Пример #2
0
        public void TestSend()
        {
            var appId = "wx00f1a2e4c8da9fff";
            var mchId = "1238660702";
            var payKey = "DFB29A32C88F4BA9A30A33186681ADB2";

            var billNo = mchId + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("ddHHmmssff");

            var openId = "ocBLpjvEkE9-ml35Cl8lvi6hanYs";
            var ipAddress = "127.0.0.1";
            var actName = "测试";
            var amount = Amounter.GetAmount(100, 1000);
            var remark = "备注";
            var sendName = "商户名称";
            var wishing = "祝福语";

            var certPath = AppDomain.CurrentDomain.BaseDirectory.Replace(@"bin\Debug", "").Replace(@"bin\Obj", "").
                Replace(@"bin\debug", "").Replace(@"bin\obj", "") + @"cert\apiclient_cert.p12";
            var certPass = "******";
            ICertFinder certFinder = new CertFindByFile(certPath, certPass);
            ISendCert sendCert = new SendCert(certFinder);

            var service = new RedPacketService(mchId, payKey, sendCert);

            var redPacket = new RedPacket
            {
                ActName = actName,
                Amount = amount,
                AppId = appId,
                BillNumber = billNo,
                IpAddress = ipAddress,
                OpenId = openId,
                Remark = remark,
                SendName = sendName,
                Wishing = wishing
            };
            var result = service.Send(redPacket);
            Trace.WriteLine(JsonConvert.SerializeObject(result));
            Assert.AreNotEqual(result.Succeeded, false);
        }
Пример #3
0
 Task<RedPacketSentResult> IRedPacketService.SendAsync(RedPacket request)
 {
     throw new NotImplementedException();
 }