public async Task WHEN_valid_request_SHOULD_succeed() { //Arrange var findOrderRequest = new FindOrdersRequest(); var orderQueryResult = new OrderQueryResult { TotalCount = 1, Results = new List <OrderItem> { new OrderItem() } }; var orderRepository = _container.CreateInstance <OrderRepository>(); _container.GetMock <IFindOrdersRequestFactory>() .Setup(r => r.Create(It.IsAny <GetCustomerOrdersParam>())) .Returns(findOrderRequest); _container.GetMock <IOvertureClient>() .Setup(r => r.SendAsync(findOrderRequest)) .ReturnsAsync(orderQueryResult); //Act var result = await orderRepository.GetCustomerOrdersAsync(BuildGetCustomerOrdersParam()).ConfigureAwait(false); //Assert result.Should().NotBeNull(); result.TotalCount.ShouldBeEquivalentTo(1); result.Results.Should().NotBeNull(); }
/// <summary> /// 根据ID获取收件人信息 /// </summary> /// <param name="id"></param> /// <returns></returns> public List <busi_sendorder> GetInfoByID(Int64?id) { OrderQueryResult result = new OrderQueryResult(); using (var db = SugarDao.GetInstance(LoginUser.GetConstr())) { if (id == 0) { result.success = false; result.Msg = "参数错误"; return(null); } try { var list = db.Queryable <busi_sendorder>().Where("del_flag=1 and custorder_id=" + id + "").ToList(); if (list.Count == 0) { result.success = false; result.DataResult = ""; return(null); } result.success = true; result.DataResult = list; return(list.ToList()); } catch (Exception) { return(null); } } }
protected virtual async Task <Dictionary <Guid, TrackingInfoViewModel> > GetShipmentsTrackingInfoViewModels( OrderQueryResult orderQueryResult, GetCustomerOrdersParam param) { var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>(); var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam { OrderNumber = order.OrderNumber, Scope = param.Scope })); var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false); foreach (var order in orders) { foreach (var shipment in order.Cart.Shipments) { var shippingTrackingProvider = ShippingTrackingProviderFactory.ResolveProvider(shipment.FulfillmentMethod.Name); var trackingInfoVm = shippingTrackingProvider.GetTrackingInfoViewModel(shipment, param.CultureInfo); shipmentsTrackingInfos.Add(shipment.Id, trackingInfoVm); } } return(shipmentsTrackingInfos); }
public ActionResult OrderQuery(string transactionId, string orderNumber) { string nonceStr = TenPayV3Util.GetNoncestr(); ////设置订单参数 TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(WxOpenAppId, TenPayV3_MchId, transactionId, nonceStr, orderNumber, TenPayV3_Key); OrderQueryResult result = TenPayV3.OrderQuery(data); return(new JsonResult(HttpResult.Success(result))); }
private bool OrderPay(string user_id, string financial_id, string order_num, decimal changes_amount, string order_payid, string operator_way) { bool isSuccess = false; try { UserInfoManager uim = new UserInfoManager(); if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString()) { WxOrderQuery orderQuery = new WxOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = financial_id; hashuf["OrderNum"] = order_num; hashuf["UserID"] = user_id; hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.WeixinPay; decimal changesAmount = changes_amount; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.OrderPayCallback(hashuf); } } } else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString()) { AlipayOrderQuery orderQuery = new AlipayOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = financial_id; hashuf["OrderNum"] = order_num; hashuf["UserID"] = user_id; hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.Alipay; decimal changesAmount = changes_amount; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.OrderPayCallback(hashuf); } } } return(isSuccess); } catch { return(false); } }
public OrderQueryResult PostXml(OrderQueryParam param) { SetParams(param); ValidateParameters(); ResultBuilder resultBuilder = PostForResult(PaymentConfig.Instance.OrderQueryUrl, false, PaymentConfig.Instance.TimeOut); //结果验证 resultBuilder.BasicValidate(); resultBuilder.ValidateNotNullField("trade_state", "交易状态为空"); OrderQueryResult result = new OrderQueryResult(resultBuilder); return(result); }
/// <summary> /// 订单查询 /// </summary> /// <param name="localTradeNo">系统交易单号(预付单返回的OutTradeNo)</param> /// <returns></returns> public bool TryOrderQuery(string appId, string mchId, string mchKey, string localTradeNo, out OrderQueryResult result) { string nonceStr = TenPayV3Util.GetNoncestr(); result = TenPayV3.OrderQuery(new TenPayV3OrderQueryRequestData( appId, mchId, null, nonceStr, localTradeNo, mchKey)); Logger.LogInformation($"微信支付订单查询,out_trade_no:{localTradeNo},result:{result.ResultXml}"); return(result.IsReturnCodeSuccess() && result.IsResultCodeSuccess()); }
public IActionResult Query([FromRoute] string orderid) { IActionResult actionResult = NoContent(); string nonceStr = TenPayV3Util.GetNoncestr(); RequestHandler packageReqHandler = new RequestHandler(null); try { var _order = _context.Order.FirstOrDefault(od => od.OrderID == orderid); if (_order != null) { //设置package订单参数 packageReqHandler.SetParameter("appid", TenPayV3Info.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号 packageReqHandler.SetParameter("transaction_id", _order.TransactionId); //填入微信订单号 packageReqHandler.SetParameter("out_trade_no", orderid); //填入商家订单号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); var result = TenPayV3.OrderQuery(data); OrderQueryResult orderQueryResult = new OrderQueryResult(result); _order.TransactionId = orderQueryResult.transaction_id; _order.ActPay = decimal.Parse(orderQueryResult.total_fee); var trade_state = Enum.Parse <TradeState>(orderQueryResult.trade_state); _order.OrderStatus = trade_state; _order.PayType = orderQueryResult.fee_type; _order.OpenID = orderQueryResult.openid; _context.Order.Update(_order); _context.SaveChanges(); actionResult = CreatedAtRoute("api/Orders", orderid); } else { actionResult = Ok(new { code = 1014, msg = "订单不存在" }); _logger.LogInformation($"订单{orderid}不存在"); } } catch (Exception ex) { actionResult = Ok(new { code = 1005, msg = ex.Message }); _logger.LogError(ex, "查询订单时异常" + ex.Message); } return(actionResult); }
public string PaySuccess(HttpContext httpContext, Action <string> ac) { var response = new ResponseHandler(httpContext); var request = new RequestHandler(null); var orderQuery = new OrderQueryResult(response.ParseXML()); if (!orderQuery.IsResultCodeSuccess() || !orderQuery.IsResultCodeSuccess()) { request.SetParameter("return_msg", "Fail"); } else { ac(orderQuery.out_trade_no); request.SetParameter("return_msg", "SUCCESS"); } request.SetParameter("return_code", "SUCCESS"); return(request.ParseXML()); }
public ActionResult GetInfoByID(Int64?order_id) { OrderQueryResult com = new OrderQueryResult(); try { List <busi_sendorder> mylist = _service.GetInfoByID(order_id.Value); OrderQueryViewModelEE mylistview = new OrderQueryViewModelEE(); mylistview.supplist = mylist; com.DataResult = mylistview; com.success = true; return(Json(com)); } catch (Exception ex) { com.Msg = ex.ToString(); com.success = false; return(Json(com)); } }
public OrderQueryResult OrderQuery(OrderQueryDTO dto) { OrderQueryResult result = new OrderQueryResult(); try { AliPayTradeQueryDTO queryDto = new AliPayTradeQueryDTO(); queryDto.trade_no = dto.OnlineTradeNo; queryDto.out_trade_no = dto.OutTradeNo; AlipayTradeQueryRequest payRequest = new AlipayTradeQueryRequest(); payRequest.BizContent = queryDto.BuildJson(); AlipayTradeQueryResponse response = Execute(payRequest); result.SetAlipayResult(response); return(result); } catch (Exception e) { throw new F2FPayException(e.Message); } }
/// <summary> /// 订单查询 /// </summary> /// <param name="dto"></param> /// <returns></returns> public OrderQueryResult OrderQuery(OrderQueryDTO dto) { WeixinDataHelper data = new WeixinDataHelper(this._weixinKey); if (!string.IsNullOrEmpty(dto.OnlineTradeNo))//如果微信订单号存在,则以微信订单号为准 { data.SetValue("transaction_id", dto.OnlineTradeNo); } else//微信订单号不存在,才根据商户订单号去查单 { data.SetValue("out_trade_no", dto.OutTradeNo); } WeixinDataHelper response = weixinPayApi.OrderQuery(data);//提交订单查询请求给API,接收返回数据 var result = new OrderQueryResult(); result.SetWeixiResult(response); return(result); }
public async Task ShouldQueryOrdersAsync() { Response <OrderQueryResult> response = await _client.Orders().QueryOrdersAsync(); Assert.True(response.Success); OrderQueryResult orderQueryResult = response.Result; Assert.NotNull(orderQueryResult.Results); Assert.True(orderQueryResult.Results.Count >= 1); int limit = 2; response = await _client.Orders().QueryOrdersAsync(limit: limit); Assert.True(response.Success); orderQueryResult = response.Result; Assert.NotNull(orderQueryResult.Results); Assert.True(orderQueryResult.Results.Count <= limit); }
public async Task ShouldQueryOrdersAsync() { Response <OrderQueryResult> response = await _client.Orders().QueryOrdersAsync(); Assert.IsTrue(response.Success); OrderQueryResult orderQueryResult = response.Result; Assert.NotNull(orderQueryResult.Results); Assert.GreaterOrEqual(orderQueryResult.Results.Count, 1); int limit = 2; response = await _client.Orders().QueryOrdersAsync(limit: limit); Assert.IsTrue(response.Success); orderQueryResult = response.Result; Assert.NotNull(orderQueryResult.Results); Assert.LessOrEqual(orderQueryResult.Results.Count, limit); }
public ActionResult GetpageE(Int64?order_id) { OrderQueryResult com = new OrderQueryResult(); string exmsg = string.Empty; List <OrderQueryModelE> mylist = _service.GetIOrderQueryListE(out exmsg, order_id.Value); if (!string.IsNullOrEmpty(exmsg)) { com.Msg = exmsg; com.success = false; return(Json(com)); } else { OrderQueryViewModelE mylistview = new OrderQueryViewModelE(); mylistview.supplist = mylist; com.DataResult = mylistview; com.success = true; return(Json(com)); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["OrderPayID"] == null || res["OrderPayID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); order_payid = res["OrderPayID"].ToString().Trim(); AlipayOrderQuery orderQuery = new AlipayOrderQuery(); //OrderQueryResult queryResult = orderQuery.Query(order_payid); OrderQueryResult queryResult = orderQuery.QueryByTradeNO(order_payid); string result = JsonConvert.SerializeObject(queryResult); return(result); } }
public ActionResult Getpage(string pagenum, string onepagecount, Int64?shop_id, DateTime?create_time, string order_code, string custorder_code, string emp_name) { OrderQueryResult com = new OrderQueryResult(); if (!Regex.IsMatch(pagenum, @"(?i)^[0-9a-z\u4e00-\u9fa5]+$") && !string.IsNullOrEmpty(pagenum)) { com.Msg = "页数不正确"; com.success = false; return(Json(com)); } if (!Regex.IsMatch(onepagecount, @"(?i)^[0-9a-z\u4e00-\u9fa5]+$") && !string.IsNullOrEmpty(onepagecount)) { com.Msg = "每页数量不正确"; com.success = false; return(Json(com)); } int totil = 0; int totilpage = 0; string exmsg = string.Empty; List <OrderQueryModel> mylist = _service.GetIOrderQueryList(Convert.ToInt32(pagenum), Convert.ToInt32(onepagecount), out totil, out totilpage, out exmsg, shop_id, create_time, order_code, custorder_code, emp_name); if (!string.IsNullOrEmpty(exmsg)) { com.Msg = exmsg; com.success = false; return(Json(com)); } else { OrderQueryViewModel mylistview = new OrderQueryViewModel(); mylistview.supplist = mylist; mylistview.totil = totil.ToString(); mylistview.totilcount = totilpage.ToString(); com.DataResult = mylistview; com.success = true; return(Json(com)); } }
/// <summary> /// 微信订单查询结果 /// </summary> /// <param name="xml">xml</param> /// <returns>微信订单查询结果</returns> public static OrderQueryResult ConvertToOrderqueryResult(string xml) { OrderQueryResult orderqueryResult = new OrderQueryResult(); XElement doc = XElement.Parse(xml); if (doc.Element("return_code").GetString() == "SUCCESS") { if (doc.Element("result_code").GetString() == "SUCCESS") { var tradeState = doc.Element("trade_state").GetString(); if (tradeState == "SUCCESS") { orderqueryResult.IsSuccess = true; } else { orderqueryResult.IsSuccess = false; } orderqueryResult.TradeState = tradeState; orderqueryResult.Appid = doc.Element("appid").GetString(); orderqueryResult.MchId = doc.Element("mch_id").GetString(); orderqueryResult.BankType = doc.Element("bank_type").GetString(); orderqueryResult.TotalFee = doc.Element("total_fee").GetInt(); orderqueryResult.TimeEnd = doc.Element("time_end").GetString(); orderqueryResult.TransactionId = doc.Element("transaction_id").GetString(); } else { orderqueryResult.IsSuccess = false; orderqueryResult.Message = doc.Element("err_code_des").GetString(); } } else { orderqueryResult.IsSuccess = false; orderqueryResult.Message = doc.Element("return_msg").GetString(); } return(orderqueryResult); }
public async Task WHEN_result_is_empty_SHOULD_return_null() { //Arrange var findOrderRequest = new FindOrdersRequest(); var orderQueryResult = new OrderQueryResult { TotalCount = 0, }; var orderRepository = _container.CreateInstance <OrderRepository>(); _container.GetMock <IFindOrdersRequestFactory>() .Setup(r => r.Create(It.IsAny <GetCustomerOrdersParam>())) .Returns(findOrderRequest); _container.GetMock <IOvertureClient>() .Setup(r => r.SendAsync(findOrderRequest)) .ReturnsAsync(orderQueryResult); //Act var result = await orderRepository.GetCustomerOrdersAsync(BuildGetCustomerOrdersParam()).ConfigureAwait(false); //Assert result.Should().BeNull(); }
/// <summary> /// Run Order example code. /// </summary> /// <param name="client">Client</param> /// <param name="project">Project</param> public async static Task Run(Client client, Project.Project project) { string currency = project.Currencies[0]; string country = project.Countries[0]; string language = project.Languages[0]; /* CREATE ORDER * =================================================================================== * An order is created from an existing cart. To create an order from a cart, the * cart cannot be empty and it must have a shipping address set. */ // Retrieve 2 products to add to a cart. Response <ProductProjectionQueryResult> productProjectionQueryResponse = await client.ProductProjections().QueryProductProjectionsAsync(limit: 2); List <ProductProjection> products = new List <ProductProjection>(); List <LineItemDraft> lineItemDrafts = new List <LineItemDraft>(); if (productProjectionQueryResponse.Success) { ProductProjectionQueryResult productProjectionQueryResult = productProjectionQueryResponse.Result; Console.WriteLine("Retrieved {0} products.", productProjectionQueryResult.Results.Count); foreach (ProductProjection product in productProjectionQueryResult.Results) { LineItemDraft lineItemDraft = new LineItemDraft(product.Id, product.MasterVariant.Id) { Quantity = 1 }; lineItemDrafts.Add(lineItemDraft); } } else { Helper.WriteError <ProductProjectionQueryResult>(productProjectionQueryResponse); } // Create a shipping address. Address shippingAddress = new Address(); shippingAddress.FirstName = "John"; shippingAddress.LastName = "Doe"; shippingAddress.StreetNumber = "123"; shippingAddress.StreetName = "Main St."; shippingAddress.PostalCode = "11111"; shippingAddress.City = "City"; shippingAddress.Country = country; // Create the cart. Cart cart = null; if (lineItemDrafts.Count > 0) { CartDraft cartDraft = new CartDraft(currency) { ShippingAddress = shippingAddress, LineItems = lineItemDrafts }; Response <Cart> cartResponse = await client.Carts().CreateCartAsync(cartDraft); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Created new cart with ID {0}.", cart.Id); } else { Helper.WriteError <Cart>(cartResponse); } } // Create the order from the cart. Response <Order> orderResponse = null; Order order = null; if (cart != null) { OrderFromCartDraft orderFromCartDraft = new OrderFromCartDraft(cart); orderResponse = await client.Orders().CreateOrderFromCartAsync(orderFromCartDraft); if (orderResponse.Success) { order = orderResponse.Result; Console.WriteLine("Created new order with ID {0}.", order.Id); foreach (LineItem lineItem in order.LineItems) { Console.WriteLine("Order has a line iten named '{0}' with an ID of {1}.", lineItem.Name[language], lineItem.Id); } } else { Helper.WriteError <Order>(orderResponse); } } /* GET ORDERS * =================================================================================== */ // Get 3 most recent orders. Response <OrderQueryResult> orderQueryResponse = await client.Orders().QueryOrdersAsync(sort: "createdAt desc", limit: 3); List <Order> orders = new List <Order>(); if (orderQueryResponse.Success) { OrderQueryResult orderQueryResult = orderQueryResponse.Result; orders = orderQueryResult.Results; Console.WriteLine("Retrieved {0} orders.", orders.Count); } else { Helper.WriteError <OrderQueryResult>(orderQueryResponse); } // Get a single order by its ID. if (orders.Count > 0) { string orderId = orders[0].Id; orderResponse = await client.Orders().GetOrderByIdAsync(orderId); if (orderResponse.Success) { order = orderResponse.Result; Console.WriteLine("Retrieved order with ID {0}.", order.Id); } else { Helper.WriteError <Order>(orderResponse); } } /* UPDATE AN ORDER * =================================================================================== * Each change is made using its own update action object which maps to an update * action call in the API. The list of update action objects are sent to the API using * a single request. If there is an update action in the API that has not yet been * implemented in the SDK, you can use the GenericAction class to make any request you * want (as long as it is a valid update action supported by the API). */ if (order != null) { ChangeOrderStateAction changeOrderStateAction = new ChangeOrderStateAction(OrderState.Confirmed); // Here is how you would make the setDescription request using a GenericAction object. GenericAction setOrderNumberAction = new GenericAction("setOrderNumber"); setOrderNumberAction["orderNumber"] = "ABC123"; List <UpdateAction> actions = new List <UpdateAction>() { changeOrderStateAction, setOrderNumberAction }; orderResponse = await client.Orders().UpdateOrderAsync(order, actions); if (orderResponse.Success) { order = orderResponse.Result; Console.WriteLine("Updated order with ID {0}.", order.Id); Console.WriteLine("Order state: {0}", order.OrderState); Console.WriteLine("Order number: {0}", order.OrderNumber); } else { Helper.WriteError <Order>(orderResponse); } } /* DELETE AN ORDER * =================================================================================== * Delete API requests return a generic response, but some return the object that was * deleted. The Orders delete request returns a generic response. */ if (order != null) { Response <JObject> deleteResponse = await client.Orders().DeleteOrderAsync(order); if (deleteResponse.Success) { Console.WriteLine("Deleted order with ID {0}.", order.Id); } else { Helper.WriteError <JObject>(deleteResponse); } } }
public override async Task <PayResult> PayResultNotify( IEnumerable <KeyValuePair <string, string> > query, IDictionary <string, string> header, IDictionary <string, string> form, Stream body) { var notifyResult = new PayResult() { Success = false }; string xml = await body.ReadToStringAsync(); if (xml.IsNullOrWhiteSpace()) { notifyResult.Message = "微信支付回调,xml请求数据为空!"; Logger.LogError(notifyResult.Message); return(notifyResult); } ResponseHandler resHandler; OrderQueryResult result; try { // 获取微信回调数据 // ResponseHandler读取body时没有seek,先seek下 HttpContextAccessor.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin); resHandler = new ResponseHandler(HttpContextAccessor.HttpContext); Logger.LogInformation($"微信支付回调:" + xml); // 转换为对象 result = new OrderQueryResult(xml); } catch (XmlException) { // xml格式异常直接不管 notifyResult.Message = "微信支付回调,xml数据异常!"; //logger.LogError(notifyResult.Message); return(notifyResult); } catch (Exception ex) { notifyResult.Message = "微信支付回调,数据解析错误!"; Logger.LogError(ex, notifyResult.Message); return(notifyResult); } var secret = MchOptions.Value.Get(result.mch_id)?.MchKey; if (secret.IsNullOrWhiteSpace()) { notifyResult.Message = $"微信支付回调,未找到商户密钥,mchId:{result.mch_id},result:{xml}"; return(notifyResult); } // 设置appkey,用于验证参数签名 resHandler.SetKey(secret); // 参数签名验证 if (!resHandler.IsTenpaySign()) { notifyResult.Message = $"微信支付回调:签名错误,result:{xml}"; Logger.LogError(notifyResult.Message); return(notifyResult); } // 支付回调结果是否正确 if (!result.IsReturnCodeSuccess() || !result.IsResultCodeSuccess()) { notifyResult.Message = $"微信支付回调,支付失败:return error,result:{xml}"; Logger.LogError(notifyResult.Message); return(notifyResult); } notifyResult.Success = true; notifyResult.RealPayAmount = notifyResult.Amount = result.total_fee.ConvertTo <int>(); notifyResult.LocalTradeNo = result.out_trade_no; notifyResult.TransactionId = result.transaction_id; notifyResult.Attach = result.attach; notifyResult.TraderId = result.openid; notifyResult.PayData = xml; notifyResult.MchId = result.mch_id; notifyResult.AppId = result.appid; return(await Task.FromResult(notifyResult)); }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0 || res["Money"] == null || res["Money"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); int.TryParse(res["PayWay"].ToString().Trim(), out payway); cacheKey += uid; decimal.TryParse(res["Money"].ToString().Trim(), out money); //在充值时进行身份验证 UserFinancialManager ufm = new UserFinancialManager(); UserInfoManager uim = new UserInfoManager(); Hashtable user = uim.GetUserInfoByUserID(uid); if (user == null || user.Keys.Count <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员")); } else { //验证用户是否经过身份认证 if ("4".CompareTo(user["REALNAMECERTIFICATION"].ToString()) != 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未完成实名认证,请完成实名认证后重试")); } //验证用户状态是否有效 if ("0".CompareTo(user["USERSTATE"].ToString()) == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已被禁用无法充值")); } } //---------------------------------------------------------------------------------- #region 检测前一笔未确认支付交易是否成功,成功则调用支付成功业务逻辑 Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Recharge); if (financial_ht != null && financial_ht.Keys.Count > 0) { string order_payid = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID"); string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay"); if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString()) { WxOrderQuery orderQuery = new WxOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.WeixinPay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.RechargeCallBack(hashuf); } } } else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString()) { AlipayOrderQuery orderQuery = new AlipayOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.Alipay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.RechargeCallBack(hashuf); } } } } #endregion webRoot = SiteHelper.GetWebRoot(); weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/recharge_notify_url.aspx"); alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/recharge_notify_url.aspx"); string result = ""; ICache cache = null; switch (payway) { case 1: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("充值支付宝支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = AliPay(uid, money); break; case 2: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("充值微信支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = WxPay(uid, money); break; default: break; } return(result); } }
protected void Save_Click(object sender, EventArgs e) { try { bool result = false; int returnType = 0; Hashtable ht = depositManager.GetDataByID(_key); string depositMoney = SiteHelper.GetHashTableValueByKey(ht, "DepositMoney"); string depositPayWay = SiteHelper.GetHashTableValueByKey(ht, "DepositPayWay"); string depositTradeNo = SiteHelper.GetHashTableValueByKey(ht, "DepositTradeNo"); string realName = SiteHelper.GetHashTableValueByKey(ht, "RealName"); string bindPhone = SiteHelper.GetHashTableValueByKey(ht, "BindPhone"); decimal refundMoney = 0.00m; refundMoney = decimal.Parse(depositMoney); if (State.Value == "2") { string errmsg = ""; string code = ""; if (depositPayWay == "1") { //支付宝退款 AlipayRefund alipay = new AlipayRefund(); result = alipay.Refund2(depositTradeNo, refundMoney, out errmsg, out code); Logger.Warn(string.Format("{0},{1}支付宝退款:{2}", realName, bindPhone, errmsg)); if (!result && "40004".Equals(code)) { //ShowMsgHelper.Alert_Error("支付宝退款失败:" + errmsg + "!"); //return; //判断是否保存了buyer_id string buyer_id = SiteHelper.GetHashTableValueByKey(ht, "buyer_id"); if (string.IsNullOrEmpty(buyer_id)) { //buyer_id为空需要查询订单 AlipayOrderQuery orderQuery = new AlipayOrderQuery(); OrderQueryResult queryResult = orderQuery.QueryByTradeNO(depositTradeNo); buyer_id = queryResult.buyer_user_id; } if (!string.IsNullOrEmpty(buyer_id)) { //执行单笔转账到支付宝账户 result = alipay.Transfer(depositTradeNo, buyer_id, refundMoney, out errmsg); Logger.Warn(string.Format("{0},{1}支付宝转账退款:{2}", realName, bindPhone, errmsg)); returnType = 1; if (!result) { ShowMsgHelper.Alert_Error("支付宝转账退款失败:" + errmsg + "!"); return; } } } } else if (depositPayWay == "2") { //微信退款 WxRefund wxpay = new WxRefund(); result = wxpay.refund2(depositTradeNo, refundMoney, out errmsg); if (!result) { ShowMsgHelper.Alert_Error("微信退款失败:" + errmsg + "!"); return; } } else if (depositPayWay == "5") { //微信公众号退款 api.weapp.pay.wxpay.WxRefund wxpay = new api.weapp.pay.wxpay.WxRefund(); result = wxpay.refund2(depositTradeNo, refundMoney, out errmsg); if (!result) { ShowMsgHelper.Alert_Error("微信公众号退款失败:" + errmsg + "!"); return; } } } else { result = true; } if (result) { result = depositManager.HandleReturnDeposit(_key, State.Value, Remark.Text.Trim(), RequestSession.GetSessionUser().UserName.ToString(), returnType); if (result) { ShowMsgHelper.AlertMsgNoFresh("操作成功!"); } else { ShowMsgHelper.Alert_Error("操作失败!"); } } } catch (Exception ex) { throw ex; } }
/// <summary> /// 查询订单 /// </summary> /// <param name="trade_no"></param> /// <returns></returns> public OrderQueryResult QueryByTradeNO(string trade_no) { OrderQueryResult result = new OrderQueryResult(); try { StringBuilder biz_content = new StringBuilder(); biz_content.Append(@"{"); biz_content.AppendFormat("\"trade_no\":\"{0}\"", trade_no); biz_content.Append(@"}"); SortedDictionary <string, string> dicArray = new SortedDictionary <string, string>(); dicArray.Add("app_id", Config.app_id); dicArray.Add("biz_content", biz_content.ToString()); dicArray.Add("charset", charset); dicArray.Add("format", "JSON"); dicArray.Add("method", method); dicArray.Add("sign_type", sign_type); dicArray.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); dicArray.Add("version", "1.0"); //dicArray.Add("sign", ); string sign_content = CreateLinkString(dicArray); string sign = RSA.sign(sign_content, Config.private_key, "UTF-8", sign_type); dicArray.Add("sign", sign); string postDataStr = CreateLinkStringUrlencode(dicArray); string responseString = HttpUtil.Get(https_url, postDataStr, "utf-8"); JObject jsonObj = (JObject)JsonConvert.DeserializeObject(responseString); string alipay_trade_query_response = jsonObj["alipay_trade_query_response"].ToString(); Dictionary <string, string> dict1 = new Dictionary <string, string>(); JavaScriptSerializer jss = new JavaScriptSerializer(); dict1 = jss.Deserialize <Dictionary <string, string> >(alipay_trade_query_response); Notify aliNotify = new Notify(); if (aliNotify.GetSignVeryfy(dict1, jsonObj["sign"].ToString())) { AlipayQueryResponse query_response = Newtonsoft.Json.JsonConvert.DeserializeObject <AlipayQueryResponse>(alipay_trade_query_response); if (query_response.code == "10000") { result.out_trade_no = query_response.out_trade_no; result.total_fee = query_response.total_amount; result.transaction_id = query_response.trade_no; result.buyer_logon_id = query_response.buyer_logon_id; result.buyer_user_id = query_response.buyer_user_id; string trade_state = query_response.trade_status; result.trade_state = TradeStateEnum.OTHERS; switch (trade_state) { case "TRADE_SUCCESS": result.trade_state = TradeStateEnum.SUCCESS; break; case "WAIT_BUYER_PAY": result.trade_state = TradeStateEnum.NOTPAY; break; case "TRADE_CLOSED": result.trade_state = TradeStateEnum.CLOSED; break; default: break; } } else if (query_response.code == "40004") { if (query_response.sub_code == "ACQ.TRADE_NOT_EXIST") { result.trade_state = TradeStateEnum.NOTEXIST; } } } return(result); } catch (Exception ex) { return(null); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); int.TryParse(res["PayWay"].ToString().Trim(), out payway); cacheKey += uid; UserFinancialManager ufm = new UserFinancialManager(); SysSettingManager settingManager = new SysSettingManager(); string depositMoney = settingManager.GetValueByKey("GoldDepositAmount"); decimal.TryParse(depositMoney, out money); //在充值时进行身份验证 UserInfoManager uim = new UserInfoManager(); Hashtable user = uim.GetUserInfoByUserID(uid); if (user == null || user.Keys.Count <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员")); } //---------------------------------------------------------------------------------- //判断用户是否已缴纳押金 decimal deposit = 0.00m; decimal.TryParse(user["DEPOSIT"].ToString(), out deposit); if (deposit > 0.00m) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金")); } //------------------------------------------------------------------------------------- #region 检测前一笔未确认支付交易是否成功,成功则禁止重复支付 Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Deposit); if (financial_ht != null && financial_ht.Keys.Count > 0) { //是否添加前一笔和当前时间差判断逻辑?????? string order_payid = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID"); string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay"); if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString()) { WxOrderQuery orderQuery = new WxOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.WeixinPay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.DepositCallBack(hashuf); } if (isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金")); } } } else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString()) { AlipayOrderQuery orderQuery = new AlipayOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.Alipay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.DepositCallBack(hashuf); } if (isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已缴纳用车押金")); } } } } #endregion webRoot = SiteHelper.GetWebRoot(); weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/deposit_notify_url.aspx"); alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/deposit_notify_url.aspx"); string result = ""; ICache cache = null; switch (payway) { case 1: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("保证金支付宝支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = AliPay(uid, money); break; case 2: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("保证金微信支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = WxPay(uid, money); break; default: break; } return(result); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["PayWay"] == null || res["PayWay"].ToString().Trim().Length <= 0 || res["OrderNum"] == null || res["OrderNum"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); int.TryParse(res["PayWay"].ToString().Trim(), out payway); cacheKey += uid; string ordernum = res["OrderNum"].ToString().Trim(); string couponID = ""; UserFinancialManager ufm = new UserFinancialManager(); UserInfoManager uim = new UserInfoManager(); OrdersManager om = new OrdersManager(); UserCouponManager couponManager = new UserCouponManager(); Hashtable order_ht = om.GetOrderInfoByNum(ordernum); if (order_ht == null) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到订单数据,支付失败")); } int payState = int.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "PayState")); int orderState = int.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "OrderState")); decimal payMoney = decimal.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "PayMoney")); decimal totalMoney = decimal.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "TotalMoney")); if (OrderState.UnPay.GetHashCode() != orderState) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "订单支付失败")); } if (totalMoney <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未产生支付费用,无需进行支付操作")); } #region 检测前一笔未确认支付交易是否成功,成功则禁止重复支付 Hashtable financial_ht = ufm.GetLatestUserFinancialInfo(uid, UserFinancialState.NewSubmit, UserFinancialChangesType.Consumption); if (financial_ht != null && financial_ht.Keys.Count > 0) { string order_num = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum"); string order_payid = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderPayID"); string operator_way = SiteHelper.GetHashTableValueByKey(financial_ht, "OperatorWay"); if (operator_way == UserFinancialOperatorWay.WeixinPay.GetHashCode().ToString()) { WxOrderQuery orderQuery = new WxOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["OrderNum"] = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.WeixinPay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.OrderPayCallback(hashuf); } if (isSuccess && ordernum == order_num) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前订单已成功支付")); } } } else if (operator_way == UserFinancialOperatorWay.Alipay.GetHashCode().ToString()) { AlipayOrderQuery orderQuery = new AlipayOrderQuery(); OrderQueryResult queryResult = orderQuery.Query(order_payid); if (queryResult.trade_state == TradeStateEnum.SUCCESS) { Hashtable hashuf = new Hashtable(); hashuf["ID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "ID"); hashuf["OrderNum"] = SiteHelper.GetHashTableValueByKey(financial_ht, "OrderNum"); hashuf["UserID"] = SiteHelper.GetHashTableValueByKey(financial_ht, "UserID"); hashuf["State"] = UserFinancialState.Effect.GetHashCode(); hashuf["TradeNo"] = queryResult.transaction_id; hashuf["TotalFee"] = queryResult.total_fee; hashuf["PayWay"] = UserFinancialOperatorWay.Alipay; decimal changesAmount = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(financial_ht, "ChangesAmount"), out changesAmount); bool isSuccess = false; if (Math.Abs(changesAmount) == queryResult.total_fee) { isSuccess = uim.OrderPayCallback(hashuf); } if (isSuccess && ordernum == order_num) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前订单已成功支付")); } } } } #endregion if (res["CouponID"] != null && res["CouponID"].ToString().Trim().Length > 0) { couponID = res["CouponID"].ToString().Trim(); Hashtable coupon_ht = couponManager.GetDataByID(couponID); if (coupon_ht == null || coupon_ht.Keys.Count == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败")); } string orderid = SiteHelper.GetHashTableValueByKey(coupon_ht, "OrderID"); string begintime = SiteHelper.GetHashTableValueByKey(coupon_ht, "BeginTime"); string endtime = SiteHelper.GetHashTableValueByKey(coupon_ht, "EndTime"); string userid = SiteHelper.GetHashTableValueByKey(coupon_ht, "UserID"); decimal couponMoney = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(coupon_ht, "Money"), out couponMoney); if (userid != uid) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败")); } if (!string.IsNullOrEmpty(orderid)) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败")); } if (DateTime.Parse(begintime) > DateTime.Now || DateTime.Parse(endtime) < DateTime.Now) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败")); } if (couponMoney > totalMoney) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "使用骑行券失败,支付失败")); } Hashtable update_order_ht = new Hashtable(); update_order_ht["CouponID"] = couponID; update_order_ht["CouponMoney"] = couponMoney; update_order_ht["PayMoney"] = totalMoney - couponMoney; bool rrr = om.AddOrEditOrdersInfo(update_order_ht, SiteHelper.GetHashTableValueByKey(order_ht, "ID")); } webRoot = SiteHelper.GetWebRoot(); weixinNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/wxpay/order_notify_url.aspx"); alipayNotifyUrl = string.Format("{0}{1}", webRoot, "/api/app/pay/alipay/order_notify_url.aspx"); string result = ""; ICache cache = null; switch (payway) { case 1: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("订单支付宝支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = AliPay(uid, ordernum); break; case 2: cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { cache.Dispose(); Logger.Error("订单微信支付5秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "5秒内请勿重复点击")); } cache.Dispose(); result = WxPay(uid, ordernum); break; case 3: result = BalancePay(uid, ordernum); break; default: break; } return(result); } }
protected virtual async Task <List <Overture.ServiceModel.Orders.Order> > GetOrders(OrderQueryResult orderQueryResult, GetCustomerOrdersParam param) { var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam { OrderNumber = order.OrderNumber, Scope = param.Scope })); var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false); return(orders.ToList()); }