/// <summary> /// 获取卡券领取地址 /// </summary> /// <param name="cardid"></param> /// <returns></returns> public string GetCardReceiveUrl(string cardid, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType) { string result = ""; if (!string.IsNullOrWhiteSpace(cardid)) { var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault(); //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid); if (card != null) { string acctoken = GetAccessToken(card.AppId, card.AppSecret); //生成记录 long logid = SyncCouponRecordInfo(cardid, couponRecordId, couponType); int outerid = (int)logid; CreateQRResultJson wxResultJson = CardApi.CreateQR(acctoken, card.CardId, null, null, null, false, null, outerid); if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功) { result = wxResultJson.url; } else { Log.Info("[Coupon]" + ((int)wxResultJson.errcode).ToString() + ":" + wxResultJson.errmsg); } } } return(result); }
/// <summary> /// 使用卡券 /// <para>核销卡券</para> /// </summary> /// <param name="couponcodeid">红包记录号</param> /// <param name="coupontype">红包类型</param> public void Consume(long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum coupontype) { Entities.WXCardCodeLogInfo wxcdata = DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponcodeid && d.CouponType == coupontype).FirstOrDefault(); if (wxcdata != null) { Consume(wxcdata.CardId, wxcdata.Code); } }
/// <summary> /// 获取卡券领取地址 /// </summary> /// <param name="cardid"></param> /// <returns></returns> public string GetCardReceiveUrl(long id, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType) { string cardid = ""; var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.Id == id).FirstOrDefault(); //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.Id == id); if (card != null) { cardid = card.CardId; } return(GetCardReceiveUrl(cardid, couponRecordId, couponType)); }
/// <summary> /// 卡券与红包领取信息同步前持久化 /// </summary> /// <param name="cardid"></param> /// <param name="openid"></param> /// <param name="couponRecordId"></param> /// <param name="couponType"></param> private long SyncCouponRecordInfo(string cardid, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType) { long result = 0; DbFactory.Default.InTransaction(() => { if (!string.IsNullOrWhiteSpace(cardid)) { var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault(); //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid); if (card != null) { var wxcdata = DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponRecordId && d.CouponType == couponType).FirstOrDefault(); //var wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CouponCodeId == couponRecordId && d.CouponType == couponType); if (wxcdata == null) { //记录数据 wxcdata = new Entities.WXCardCodeLogInfo(); wxcdata.CardId = cardid; wxcdata.CodeStatus = (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive; wxcdata.CouponType = couponType; wxcdata.CouponCodeId = couponRecordId; wxcdata.SendTime = DateTime.Now; wxcdata.CardLogId = card.Id; DbFactory.Default.Add(wxcdata); //Context.WXCardCodeLogInfo.Add(wxcdata); //Context.SaveChanges(); switch (wxcdata.CouponType) { case Entities.WXCardLogInfo.CouponTypeEnum.Coupon: var coupondata = DbFactory.Default.Get <Entities.CouponRecordInfo>().Where(d => d.Id == couponRecordId).FirstOrDefault(); //var coupondata = Context.CouponRecordInfo.FirstOrDefault(d => d.Id == couponRecordId); if (coupondata != null) { coupondata.WXCodeId = wxcdata.Id; DbFactory.Default.Update(coupondata); } break; } //Context.SaveChanges(); } result = wxcdata.Id; } } }); return(result); }
/// <summary> /// 获取领取记录 /// </summary> /// <param name="id"></param> /// <returns></returns> public Entities.WXCardCodeLogInfo GetCodeInfo(long couponCodeId, Entities.WXCardLogInfo.CouponTypeEnum couponType) { return(DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponCodeId && d.CouponType == couponType).FirstOrDefault()); }
/// <summary> /// 获取同步微信JS /// </summary> /// <param name="couponcodeid"></param> /// <param name="couponType"></param> /// <returns></returns> public Entities.WXJSCardModel GetJSWeiXinCard(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType) { Entities.WXJSCardModel result = new Entities.WXJSCardModel(); result.cardId = "0"; //默认不可同步 bool isNeedSyncWX = false; Entities.WXCardLogInfo wxcardinfo = null; Entities.WXCardCodeLogInfo wxcodeinfo = null; wxcardinfo = Get(couponid, couponType); if (wxcardinfo != null) { if (wxcardinfo.AuditStatus == (int)Entities.WXCardLogInfo.AuditStatusEnum.Audited) { isNeedSyncWX = true; } } if (isNeedSyncWX) { wxcodeinfo = GetCodeInfo(couponcodeid, couponType); if (wxcodeinfo != null) { if (wxcodeinfo.CodeStatus != (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive) { isNeedSyncWX = false; } } } if (isNeedSyncWX) { var data = MakeSyncWXJSInfo(wxcardinfo.CardId, couponcodeid, couponType); if (data != null) { result.cardId = data.card_id; result.cardExt = new Entities.WXJSCardExtModel(); result.cardExt.signature = data.signature; result.cardExt.timestamp = data.timestamp; result.cardExt.nonce_str = data.nonce_str; result.cardExt.outer_id = data.outerid; } } return(result); }
/// <summary> /// 是否可以同步微信 /// </summary> /// <param name="couponid"></param> /// <param name="couponcodeid"></param> /// <param name="couponType"></param> /// <param name="url"></param> /// <returns></returns> public Entities.WXSyncJSInfoByCard GetSyncWeiXin(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType, string url) { Entities.WXSyncJSInfoByCard result = null; bool isNeedSyncWX = false; Entities.WXCardLogInfo wxcardinfo = null; Entities.WXCardCodeLogInfo wxcodeinfo = null; wxcardinfo = Get(couponid, couponType); if (wxcardinfo != null) { if (wxcardinfo.AuditStatus == (int)Entities.WXCardLogInfo.AuditStatusEnum.Audited) { isNeedSyncWX = true; } } if (isNeedSyncWX) { wxcodeinfo = GetCodeInfo(couponcodeid, couponType); if (wxcodeinfo != null) { if (wxcodeinfo.CodeStatus != (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive) { isNeedSyncWX = false; } } } if (isNeedSyncWX) { result = GetWXSyncJSInfo(wxcardinfo.CardId, url); } return(result); }
/// <summary> /// 生成同步微信按扭JS信息 /// </summary> /// <param name="cardid"></param> /// <param name="openid"></param> /// <param name="couponRecordId"></param> /// <param name="couponType"></param> /// <param name="url">当前页地址</param> /// <returns></returns> private Entities.WXSyncJSInfoCardInfo MakeSyncWXJSInfo(string cardid, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType) { Entities.WXSyncJSInfoCardInfo result = null; if (!string.IsNullOrWhiteSpace(cardid)) { var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault(); //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid); if (card != null) { string acctoken = GetAccessToken(card.AppId, card.AppSecret); string apiticket = GetCardJSApiTicket(acctoken); if (!string.IsNullOrWhiteSpace(apiticket)) { result = new Entities.WXSyncJSInfoCardInfo(); //生成记录 long logid = SyncCouponRecordInfo(cardid, couponRecordId, couponType); int outerid = (int)logid; JSSDKHelper jsshelper = new JSSDKHelper(); result.card_id = cardid; result.timestamp = JSSDKHelper.GetTimestamp(); result.nonce_str = ""; // result.signature = JSSDKHelper.GetCardSign(apiticket, result.nonce_str, result.timestamp, result.card_id); result.signature = JSSDKHelper.GetCardSign(card.AppId, card.AppSecret, card.ShopId.ToString(), result.nonce_str, result.timestamp, result.card_id, card.CouponType.ToString()); result.outerid = outerid; } else { Log.Info("[Coupon]票据获取失败"); } } } return(result); }