public object GetPaymentList(string orderId) { CheckUserLogin(); var mobilePayments = Core.PluginsManagement.GetPlugins <IPaymentPlugin>(true).Where(item => item.Biz.SupportPlatforms.Contains(Core.PlatformType.WeiXinSmallProg)); string webRoot = Core.Helper.WebHelper.GetScheme() + "://" + Core.Helper.WebHelper.GetHost(); string urlPre = webRoot + "/m-" + Core.PlatformType.Android + "/Payment/"; //获取待支付的所有订单 var orderService = ServiceProvider.Instance <IOrderService> .Create; var orders = orderService.GetOrders(orderId.Split(',').Select(t => long.Parse(t))).Where(r => r.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitPay); var totalAmount = orders.Sum(t => t.OrderTotalAmount - t.CapitalAmount); //获取所有订单中的商品名称 string productInfos = GetProductNameDescriptionFromOrders(orders); string[] strIds = orderId.Split(','); string notifyPre = urlPre + "Notify/", returnPre = webRoot + "/m-" + Core.PlatformType.Android + "/Member/PaymentToOrders?ids=" + orderId; var orderPayModel = strIds.Select(item => new Entities.OrderPayInfo { PayId = 0, OrderId = long.Parse(item) }); //保存支付订单 var payid = orderService.SaveOrderPayInfo(orderPayModel, Core.PlatformType.WeiXinSmallProg); var ids = payid.ToString(); var models = mobilePayments.ToArray().Select(item => { string url = string.Empty; try { url = item.Biz.GetRequestUrl(returnPre, notifyPre + item.PluginInfo.PluginId.Replace(".", "-") + "/", ids, totalAmount, productInfos, CurrentUserOpenId); } catch (Exception ex) { Core.Log.Error("获取支付方式错误:", ex); } //适配小程序接口,从支付插件里解析出相应参数 //字符串格式:prepayId:234320480,partnerid:32423489,nonceStr=dslkfjsld #region 适配小程序接口,从支付插件里解析出相应参数 var prepayId = string.Empty; var nonceStr = string.Empty; var timeStamp = string.Empty; var sign = string.Empty; if (!string.IsNullOrWhiteSpace(url)) { var paras = url.Split(','); foreach (var str in paras) { var keyValuePair = str.Split(':'); if (keyValuePair.Length == 2) { switch (keyValuePair[0]) { case "prepayId": prepayId = keyValuePair[1]; break; case "nonceStr": nonceStr = keyValuePair[1]; break; case "timeStamp": timeStamp = keyValuePair[1]; break; case "sign": sign = keyValuePair[1]; break; } } } } #endregion return(new { prepayId = prepayId, nonceStr = nonceStr, timeStamp = timeStamp, sign = sign }); }); var model = models.FirstOrDefault(); if (null == model) { return(Json(new int[0])); } if (!string.IsNullOrEmpty(model.prepayId)) { Entities.WXAppletFormDataInfo info = new Entities.WXAppletFormDataInfo(); info.EventId = Convert.ToInt64(MessageTypeEnum.OrderPay); info.EventTime = DateTime.Now; info.EventValue = orderId; info.ExpireTime = DateTime.Now.AddDays(7); info.FormId = model.prepayId; WXMsgTemplateApplication.AddWXAppletFromData(info); } return(Json(model)); }
/// <summary> /// 新增小程序表单提交数据 /// </summary> /// <param name="mWXSmallChoiceProductsInfo"></param> public static void AddWXAppletFromData(Entities.WXAppletFormDataInfo wxapplet) { _iWXMsgTemplateService.AddWXAppletFromData(wxapplet); }