/// <summary> /// 支付宝退款 /// 日期:2016年10月17日 /// </summary> /// <param name="OrderNo"></param> /// <returns></returns> public override bool ApplyRefund(string OrderNo, string SellerID, string TradeNo, decimal TotalFee, string RefundNo, decimal RefundFee, string OnlineTransactionNo) { if (base.ApplyRefund(OrderNo, SellerID, TradeNo, TotalFee, RefundNo, RefundFee, OnlineTransactionNo)) { //没有收款人 if (SellerID == "") { return(true); } XuHos.Common.Pay.AliPay.WebPay alipay = new WebPay(SellerID); return(alipay.ApplyRefund(SellerID, TradeNo, "", RefundFee, RefundNo)); } return(false); }
public HttpResponseMessage RefundNotifyUrl() { SortedDictionary <string, string> sPara = GetRequestPost(); var ret = "fail"; if (sPara.Count > 0)//判断是否有带返回参数 { XuHos.BLL.OrderService service = new OrderService(CurrentOperatorUserID); var Request = System.Web.HttpContext.Current.Request; //批次号 string batch_no = Request.Form["batch_no"]; //批量退款数据中转账成功的笔数 string success_num = Request.Form["success_num"]; //批量退款数据中的详细信息 string result_details = Request.Form["result_details"]; //通知编号 string notify_id = Request.Form["notify_id"]; //签名 string sign = Request.Form["sign"]; var order = service.GetOrder(batch_no); var alipay = new WebPay(order.SellerID); if (alipay.VerifySign(sPara, notify_id, sign))//验证成功 { if (service.RefundCompleted(order.OrderNo, EnumPayType.AliPay)) { ret = "success"; } } } //返回处理结果 return(new HttpResponseMessage { Content = new StringContent(ret, Encoding.GetEncoding("UTF-8"), "text/plain") }); }
//網購寫入訂單 public string webOrder(WebPay payData) { if (Session[CSession關鍵字.SK_LOGINED_CUSTOMER] != null) { tCustomer cust = Session[CSession關鍵字.SK_LOGINED_CUSTOMER] as tCustomer; MotaiDataEntities dbContext = new MotaiDataEntities(); List <tStatu> StatuList = dbContext.tStatus.Where(s => s.sCustomerId.Equals(cust.CustomerId)).ToList(); string szHtml = String.Empty; string szErrorMessage = String.Empty; List <string> enErrors = new List <string>(); try { using (AllInOne oPayment = new AllInOne()) { /* 服務參數 */ oPayment.ServiceMethod = AllPay.Payment.Integration.HttpMethod.HttpPOST; oPayment.ServiceURL = "https://payment-stage.opay.tw/Cashier/AioCheckOut/V5"; oPayment.HashKey = "5294y06JbISpM5x9"; oPayment.HashIV = "v77hoKGq4kWxNNIS"; oPayment.MerchantID = "2000132"; /* 基本參數 */ string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority; if (payData.payType == 2) { oPayment.Send.ReturnURL = baseURI + Url.Action("orderCredit", "Order"); } else { oPayment.Send.ReturnURL = baseURI + Url.Action("ATMpayOff", "Order"); } oPayment.Send.ClientBackURL = baseURI; //oPayment.Send.OrderResultURL = baseURI; int number = (DateTime.Now.Hour * 3600 + DateTime.Now.Minute * 60 + DateTime.Now.Second) * 3; oPayment.Send.MerchantTradeNo = "MD" + DateTime.Now.Date.ToString("yyyyMMdd") + number.ToString("000000"); oPayment.Send.MerchantTradeDate = DateTime.Now; oPayment.Send.TotalAmount = Decimal.Parse(payData.totalPay); oPayment.Send.TradeDesc = "感謝購買墨台商品"; if (payData.payType == 1) { oPayment.Send.ChoosePayment = PaymentMethod.ATM; oPayment.SendExtend.ExpireDate = Int32.Parse("3"); } else { oPayment.Send.ChoosePayment = PaymentMethod.Credit; } //oPayment.Send.ChoosePayment = PaymentMethod.ALL; oPayment.Send.Remark = "饒了我吧"; oPayment.Send.ChooseSubPayment = PaymentMethodItem.None; oPayment.Send.NeedExtraPaidInfo = ExtraPaymentInfo.No; oPayment.Send.HoldTrade = HoldTradeType.No; oPayment.Send.DeviceSource = DeviceType.PC; oPayment.Send.UseRedeem = UseRedeemFlag.No; //購物金/紅包折抵 oPayment.Send.IgnorePayment = ""; // 例如財付通:Tenpay // 加入選購商品資料。 foreach (var item in StatuList) { tProduct product = dbContext.tProducts.Where(p => p.ProductId.Equals(item.sProductId)).FirstOrDefault(); //var chg = JObject.Parse(item.Value.ToString()); oPayment.Send.Items.Add(new Item() { Name = product.pName, Price = product.pPrice, Currency = "NTD", Quantity = item.sProductQty, URL = "<< 產品說明位址 >>" }); } // 當付款方式為 ALL 時,建議增加的參數。 if (payData.payType == 1) { oPayment.SendExtend.PaymentInfoURL = baseURI + Url.Action("orderATM", "Order"); } ////攜帶參數 //WebOrderModel order = new WebOrderModel(); //order.boughtList = StatuList; //order.webpay = payData; //order.customer = cust; //order.payDate = oPayment.Send.MerchantTradeDate; //http.Session[oPayment.Send.MerchantTradeNo] = order; //database產生訂單 tOrder newOrder = new tOrder(); newOrder.oCustomerId = cust.CustomerId; newOrder.oEmployeeId = 19; newOrder.oDate = DateTime.Now; newOrder.oAddress = payData.shipAddress; newOrder.oWarehouseName = 1; newOrder.cNote = oPayment.Send.MerchantTradeNo; dbContext.tOrders.Add(newOrder); dbContext.SaveChanges(); tOrder CreateOrder = dbContext.tOrders.OrderByDescending(o => o.OrderId).FirstOrDefault(); tOrderPay pay = new tOrderPay(); pay.oOrderId = CreateOrder.OrderId; pay.oOrderInstallment = 1; pay.oPayType = payData.payType; pay.oPayment = Convert.ToInt32(payData.totalPay); pay.oPayDate = DateTime.Now; dbContext.tOrderPays.Add(pay); foreach (var item in StatuList) { tOrderDetail orderDetail = new tOrderDetail(); orderDetail.oOrderId = CreateOrder.OrderId; orderDetail.oProductId = item.sProductId; orderDetail.oProductQty = item.sProductQty; dbContext.tOrderDetails.Add(orderDetail); dbContext.tStatus.Remove(item); dbContext.SaveChanges(); } dbContext.SaveChanges(); /* 產生訂單 */ enErrors.AddRange(oPayment.CheckOut()); /* 產生產生訂單 Html Code 的方法 */ //string szHtml = String.Empty; enErrors.AddRange(oPayment.CheckOutString(ref szHtml)); } } catch (Exception ex) { // 例外錯誤處理。 enErrors.Add(ex.Message); } finally { // 顯示錯誤訊息。 if (enErrors.Count() > 0) { szErrorMessage = String.Join("\\r\\n", enErrors); } } if (enErrors.Count() == 0) { return(szHtml); } else { return(szErrorMessage); } } return(String.Empty); }
public IHttpActionResult ReturnUrl() { var payConfig = SysConfigService.Get <XuHos.Common.Config.Sections.Pay>(); try { var Request = System.Web.HttpContext.Current.Request; var sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { string seller_id = Request.QueryString["seller_id"]; //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; //总金额 string total_fee = Request["total_fee"]; //通知编号 string notify_id = Request.QueryString["notify_id"]; //签名 string sign = Request.QueryString["sign"]; var alipay = new WebPay(seller_id); //验证成功 if ((trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")) { if (alipay.VerifySign(sPara, notify_id, sign)) { XuHos.BLL.OrderService service = new OrderService(CurrentOperatorUserID); var order = service.GetOrder(out_trade_no); if (order != null) { if (order.TotalFee == decimal.Parse(total_fee)) { if (service.PayCompleted(out_trade_no, trade_no, XuHos.Common.Enum.EnumPayType.AliPay, seller_id)) { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}")); } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=系统错误,更新订单状态失败")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,参数“totalFee”或 “seller_id”不正确")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,订单不存在")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}")); } } } return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,不是合法的支付请求")); } catch (Exception E) { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message={E.Message}")); } }
public HttpResponseMessage NotifyUrl() { var Request = System.Web.HttpContext.Current.Request; var content = ""; try { LogHelper.WriteDebug("Cashier/AliPay/NotifyUrl", Request.Params.ToJson()); SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { //通知编号 string seller_id = Request.Form["seller_id"]; //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; //总金额 string total_fee = Request["total_fee"]; //通知编号 string notify_id = Request.Form["notify_id"]; //签名 string sign = Request.Form["sign"]; var alipay = new WebPay(seller_id); if ((trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") && alipay.VerifySign(sPara, notify_id, sign))//验证成功 { using (XuHos.EventBus.MQChannel mqChanne = new EventBus.MQChannel()) { if (mqChanne.Publish <EventBus.Events.OrderPayNotifyEvent>(new EventBus.Events.OrderPayNotifyEvent() { OrderNo = out_trade_no, TradeNo = trade_no, PayType = EnumPayType.AliPay, SelllerID = seller_id })) { content = "success"; } } } } content = "fail"; } catch (Exception E) { LogHelper.WriteError(E); content = "fail"; } //返回处理结果 return(new HttpResponseMessage { Content = new StringContent(content, Encoding.GetEncoding("UTF-8"), "text/plain") }); }