コード例 #1
0
        /// <summary>
        /// 调用微信接口获取红包信息
        /// </summary>
        public void GetRedPacketInfo()
        {
            using (var db = SugarDao_MsSql.GetInstance())
            {
                var listOrderNo = db.Queryable <Business_Redpacket_Push_Information>().Where("isnull(RedpacketStatus,0) not in (3,4,6)").Select(i => i.OrderNumber).ToList();
                foreach (string billNo in listOrderNo)
                {
                    WxPayData data = new WxPayData();
                    data.SetValue("mch_billno", billNo);
                    var result = WeChatTools.QueryWorkWxRedPacket(data);
                    if (result.GetValue("return_code").ToString() != "SUCCESS" || result.GetValue("result_code").ToString() != "SUCCESS")
                    {
                        continue;
                    }
                    Business_Redpacket_Push_Information redpacket = new Business_Redpacket_Push_Information();
                    var status          = result.GetValue("status").ToString(); //红包状态
                    var redPacketStatus = (int)((RedPacketStatus)Enum.Parse(typeof(RedPacketStatus), status));
                    redpacket.RedpacketStatus = redPacketStatus;
                    var sendTime = result.GetValue("send_time").ToString();
                    redpacket.CreatedDate = DateTime.Parse(sendTime);
                    switch (status)
                    {
                    case "RECEIVED":
                        var rcvTime = result.GetValue("rcv_time").ToString();
                        //var rcvTime = hblist.Substring(hblist.Length - 19, 19);
                        redpacket.ReceiveDate = DateTime.Parse(rcvTime);
                        break;

                    case "REFUND":
                        var refundTime = result.GetValue("refund_time").ToString();
                        redpacket.ReceiveDate = DateTime.Parse(refundTime);
                        break;

                    case "FAILED":
                        var reason = result.GetValue("reason").ToString();
                        redpacket.Reson = reason;
                        break;

                    default:
                        redpacket.ReceiveDate = null;
                        break;
                    }
                    redpacket.OrderNumber = billNo;
                    UpdateRedPacketInfo(redpacket);
                }
            }
        }