/// <summary> /// /// </summary> /// <param name="out_trade_no"></param> /// <param name="openid"></param> /// <param name="spbill_create_ip"></param> /// <param name="total_fee">单位分</param> /// <returns></returns> public JSSDKPrepay Prepay(string out_trade_no, string openid, string spbill_create_ip, string total_fee) { var prepay = new JSSDKPrepay(); var o = new JSSDKPayOrder(); o.body = WxConfig.wxpay_body; o.attach = WxConfig.wxpay_attach; o.out_trade_no = out_trade_no; //.Substring(0, 32); o.spbill_create_ip = spbill_create_ip; //APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。 o.openid = openid; o.total_fee = total_fee; //prepay.prepay_id = "test";//todo test prepay.prepay_id = GetPaymentId(o); prepay.appId = WxConfig.Appid; prepay.timeStamp = Utility.GetTimeSpan(); prepay.nonceStr = Utility.GenerateNonceStr(); prepay.signType = "MD5"; string payRaw = "appId=" + prepay.appId + "&nonceStr=" + prepay.nonceStr + "&package=" + prepay.package + "&signType=" + prepay.signType + "&timeStamp=" + prepay.timeStamp + "&key=" + WxConfig.wxpay_key; prepay.paySign = Utility.WXPaySignature(payRaw, prepay.signType); return(prepay); }
public JSSDKPrepay PlaceOrder(List <Guid> orderIds, Guid addressId, string ip, string customerOpenId) { try { var result = new JSSDKPrepay(); var submissionId = NewSubmisstionId(); using (var uow = GetUnitOfWork()) { var orders = uow.Repository <ZZ_Order>() .Query() .Filter(x => orderIds.Contains(x.OrderId) && x.OrderStatus < (int)ZZOrderStatus.Paid) .Get() .ToList(); var totalAmount = orders.Sum(x => x.TotalAmount); result = WxApiHelper.Instance.Prepay(submissionId, customerOpenId, ip, (Math.Round((decimal)(totalAmount) * 100, 0)).ToString()); var oa = new ZZ_OrderAddress(); oa.AddressId = addressId; oa.SubmissionId = submissionId; oa.OrderAddressId = Guid.NewGuid(); uow.Repository <ZZ_OrderAddress>().Insert(oa); orders.ForEach(x => { x.SubmissionId = submissionId; x.OrderStatus = (int)ZZOrderStatus.Submitted; InsertOrderStatusHistory(uow, x.OrderId, (int)ZZOrderStatus.Submitted); uow.Repository <ZZ_Order>().Update(x); }); uow.Save(); } return(result); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); throw; } }