/// <summary> /// 刷卡支付 /// </summary> public static MicropayResponseModel Micropay(MicropayModel requestModel) { WxPayData data = new WxPayData(); data.SetValue("auth_code", requestModel.auth_code); //授权码 data.SetValue("body", requestModel.body); //商品描述 data.SetValue("total_fee", requestModel.total_fee); //总金额 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); //产生随机的商户订单号 data.SetValue("device_info", requestModel.device_info); LogUtil.WriteWxpayLog("刷卡支付请求", "请求参数", data.ToJson()); WxPayData result = WxPayApi.Micropay(data, 10); //提交被扫支付,接收返回结果 //如果提交被扫支付接口调用失败,则抛异常 if (!result.IsSet("return_code") || result.GetValue("return_code").ToString() == ReturnCode.FAIL) { string returnMsg = result.IsSet("return_msg") ? result.GetValue("return_msg").ToString() : ""; //Log.Error("MicroPay", "Micropay API interface call failure, result : " + result.ToXml()); throw new WxPayException("微信接口调用出错 : " + returnMsg); } LogUtil.WriteWxpayLog("刷卡支付响应", "响应参数", result.ToJson()); //签名验证 result.CheckSign(); MicropayResponseModel responseModel = LitJson.JsonMapper.ToObject <MicropayResponseModel>(result.ToJson()); responseModel.out_trade_no = responseModel.out_trade_no ?? data.GetValue("out_trade_no").ToString(); //if (responseModel.return_code == ReturnCode.FAIL) throw new WxPayException(responseModel.return_msg); return(responseModel); }
/// <summary> /// 微信申请退款接口 /// </summary> /// <param name="requestModel">请求参数</param> /// <returns></returns> public static RefundResponseModel Refund(RefundModel requestModel) { WxPayData data = new WxPayData(); if (!string.IsNullOrEmpty(requestModel.transaction_id))//微信订单号存在的条件下,则已微信订单号为准 { data.SetValue("transaction_id", requestModel.transaction_id); } else//微信订单号不存在,才根据商户订单号去退款 { data.SetValue("out_trade_no", requestModel.out_trade_no); } data.SetValue("total_fee", requestModel.total_fee); //订单总金额 data.SetValue("refund_fee", requestModel.refund_fee); //退款金额 data.SetValue("out_refund_no", WxPayApi.GenerateOutTradeNo()); //随机生成商户退款单号 data.SetValue("op_user_id", WxPayConfig.MCHID); //操作员,默认为商户号 LogUtil.WriteWxpayLog("申请退款请求", "请求参数", data.ToJson()); WxPayData result = WxPayApi.Refund(data); //提交退款申请给API,接收返回数据 LogUtil.WriteWxpayLog("申请退款响应", "响应参数", result.ToJson()); RefundResponseModel response = LitJson.JsonMapper.ToObject <RefundResponseModel>(result.ToJson()); //Log.Info("OrderQuery", "OrderQuery process complete, result : " + result.ToXml()); return(response); }
/// <summary> /// 调用统一下单,获得下单结果,失败时抛异常WxPayException /// </summary> /// <param name="body"></param> /// <param name="attach"></param> /// <param name="goods_tag"></param> /// <param name="appID"></param> /// <param name="mchID"></param> /// <param name="key"></param> /// <returns>统一下单结果</returns> public WxPayData GetUnifiedOrderResult(string body, string attach, string goods_tag, string appID = WxPayConfig.APPID, string mchID = WxPayConfig.MCHID, string key = WxPayConfig.KEY) { //统一下单 WxPayData data = new WxPayData(); data.SetValue("body", body); data.SetValue("attach", attach); data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo(mchID)); data.SetValue("total_fee", total_fee); data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); data.SetValue("goods_tag", goods_tag); data.SetValue("trade_type", "JSAPI"); data.SetValue("openid", openid); WxPayData result = WxPayApi.UnifiedOrder(data, 6, appID, mchID, key); if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "") { Log.Error(this.GetType().ToString(), "UnifiedOrder response error!"); throw new WxPayException("UnifiedOrder response error!"); } unifiedOrderResult = result; return(result); }
public JsonResult CreateOrder(string prodId, string num) { string userOpenId = base.getUserOpenIdFromCookie(); string res = "fail"; if (!string.IsNullOrEmpty(userOpenId)) { try { string salesNo = WxPayApi.GenerateOutTradeNo();// Guid.NewGuid().ToString(); OrderBiz.CreateNew().createOrder(prodId, num, userOpenId, salesNo); res = salesNo; } catch (Exception e) { res = "fail"; _Apilog.WriteLog("ProductsController/CreateOrder 异常: " + e.Message); } } else { _Apilog.WriteLog("ProductsController/CreateOrder 用户userOpenId 为空: " + prodId + " " + num); } return(Json(res)); }
/** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式二URL * g公众账号id,商户号,随机字符串,签名,商品描述,商户订单号,总金额,终端ip,通知地址,交易类型 */ public string GetPayUrl(string productId) { Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("appid", WxPayConfig.APPID); data.SetValue("mch_id", WxPayConfig.MCHID); data.SetValue("device_info", "iphone4s"); data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); data.SetValue("body", "好油菜充值"); //商品描述 data.SetValue("detail", "好油菜充值"); //商品描述 data.SetValue("attach", "北京好油菜"); //附加数据 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); //随机字符串 data.SetValue("total_fee", 1); //总金额 data.SetValue("spbill_create_ip", "123.12.12.123"); //总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 data.SetValue("goods_tag", "jjj"); //商品标记 data.SetValue("notify_url", "http://www.warmwood.com/"); //通知地址 data.SetValue("trade_type", "NATIVE"); //交易类型 data.SetValue("product_id", productId); //商品ID // data.SetValue("limit_pay", productId);//指定支付方式 // data.SetValue("openid", productId);//用户标识 data.SetValue("sign", data.MakeSign()); //签名 WxPayData result = WxPayApi.UnifiedOrder(data); //调用统一下单接口 string url = result.GetValue("code_url").ToString(); //获得统一下单接口返回的二维码链接 Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url); return(url); }
/*** * 申请退款完整业务流程逻辑 * @param transaction_id 微信订单号(优先使用) * @param out_trade_no 商户订单号 * @param total_fee 订单总金额 * @param refund_fee 退款金额 * @return 退款结果(xml格式) */ public static string Run(string transaction_id, string out_trade_no, string total_fee, string refund_fee) { Log.Info("Refund", "Refund is processing..."); WxPayData data = new WxPayData(); if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准 { data.SetValue("transaction_id", transaction_id); } else//微信订单号不存在,才根据商户订单号去退款 { data.SetValue("out_trade_no", out_trade_no); } data.SetValue("total_fee", int.Parse(total_fee)); //订单总金额 data.SetValue("refund_fee", int.Parse(refund_fee)); //退款金额 data.SetValue("out_refund_no", WxPayApi.GenerateOutTradeNo()); //随机生成商户退款单号 data.SetValue("op_user_id", WxPayConfig.MCHID); //操作员,默认为商户号 WxPayData result = WxPayApi.Refund(data); //提交退款申请给API,接收返回数据 Log.Info("Refund", "Refund process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
public JsonResult GetPaySign(string openid, string revenueFee, string totalFee, Guid personVguid, Guid pushContentVguid, int revenueType) { var revenueReceivable = decimal.Parse(revenueFee); //获取司机支付应付金额 var totalFeeDouble = double.Parse(totalFee); //double totalFeeInt = tatol + driverPayfee; //包含手续费的总钱数 var totalFeeInt = (int)Math.Round(totalFeeDouble * 100); string nonceStr = WxPayApi.GenerateNonceStr(); //随机字符串,不长于32位 string outTradeNo = WxPayApi.GenerateOutTradeNo(); //订单号:32个字符内、不得重复 string spbillCreateIp = WxPayConfig.GetIP(System.Web.HttpContext.Current); //用户端IP double total_fee = totalFeeInt; //订单金额(单位:分),整数 string trade_type = "JSAPI"; //JSAPI,NATIVE,APP,WAP #region 调用统一支付接口获得prepay_id(预支付交易会话标识) WxPayData wxPayData = new WxPayData(); wxPayData.SetValue("appid", WxPayConfig.APPID); //appid wxPayData.SetValue("body", WxPayConfig.BODY); //支付描述 wxPayData.SetValue("mch_id", WxPayConfig.MCHID); //商户id wxPayData.SetValue("nonce_str", nonceStr); //随机字符串 wxPayData.SetValue("notify_url", WxPayConfig.NOTIFY_URL); //回调地址 wxPayData.SetValue("openid", openid); //openid wxPayData.SetValue("out_trade_no", outTradeNo); //订单号 wxPayData.SetValue("spbill_create_ip", spbillCreateIp); //客户端ip地址 wxPayData.SetValue("total_fee", total_fee.ToString()); //订单金额(单位:分),整数 wxPayData.SetValue("trade_type", trade_type); //交易类型 wxPayData.SetValue("sign", wxPayData.MakeSign()); //签名 string data = wxPayData.ToXml(); string prepayId = WeChatTools.UnifiedOrder(data); #endregion #region 支付参数 string timeStamp = WxPayApi.GenerateTimeStamp(); nonceStr = WxPayApi.GenerateNonceStr(); WxPayData wxPaySign = new WxPayData(); wxPaySign.SetValue("appId", WxPayConfig.APPID); wxPaySign.SetValue("timeStamp", timeStamp); wxPaySign.SetValue("nonceStr", nonceStr); wxPaySign.SetValue("package", string.Format("prepay_id={0}", prepayId)); wxPaySign.SetValue("signType", "MD5"); string paysign = wxPaySign.MakeSign(); wxPaySign.SetValue("paySign", paysign); #endregion var paymentHistoryInfo = new Business_PaymentHistory_Information(); paymentHistoryInfo.RevenueReceivable = revenueReceivable; paymentHistoryInfo.PaymentPersonnel = personVguid; paymentHistoryInfo.PaymentAmount = decimal.Parse(totalFee); paymentHistoryInfo.VGUID = Guid.NewGuid(); paymentHistoryInfo.RevenueType = revenueType; paymentHistoryInfo.WeChatPush_VGUID = pushContentVguid; paymentHistoryInfo.Remarks = outTradeNo; //商户订单号 paymentHistoryInfo.CreateDate = DateTime.Now; paymentHistoryInfo.CreateUser = "******"; paymentHistoryInfo.PayDate = DateTime.Now; paymentHistoryInfo.PaymentStatus = "3"; bool addsuccess = _weChatRevenueLogic.AddPaymentHistory(paymentHistoryInfo); return(Json(new { success = addsuccess, data = wxPaySign.GetValues() }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 拼享惠商家提现 /// </summary> /// <param name="aid"></param> /// <param name="storeId"></param> /// <param name="userId"></param> /// <param name="account"></param> /// <param name="accountName"></param> /// <param name="cash"></param> /// <param name="drawCashWay"></param> /// <returns>0失败 1成功</returns> public int PxhAddApply(PinStore store, int userId, string account, string accountName, int cash, int drawCashWay, int serviceFee, int applyType, int xwkjUserId = 0) { string filed = string.Empty; string useCash = string.Empty; if (applyType == (int)DrawCashApplyType.拼享惠平台交易) { filed = "cash"; store.cash -= cash; useCash = store.cashStr; } else { filed = "qrcodecash"; store.qrcodeCash -= cash; useCash = store.qrcodeCashStr; } TransactionModel tran = new TransactionModel(); MySqlParameter[] pone = null; tran.Add(PinStoreBLL.SingleModel.BuildUpdateSql(store, filed, out pone), pone); int code = 0; XcxAppAccountRelation xcx = XcxAppAccountRelationBLL.SingleModel.GetModel(store.aId); if (xcx == null) { log4net.LogHelper.WriteError(GetType(), new Exception($"拼享惠申请提现失败:小程序信息错误 aid:{store.aId}")); return(code); } string partner_trade_no = WxPayApi.GenerateOutTradeNo(); DrawCashApply apply = new DrawCashApply() { Aid = store.aId, appId = xwkjUserId == 0 ? xcx.AppId : WebSiteConfig.GongZhongAppId, userId = xwkjUserId == 0 ? userId : xwkjUserId, partner_trade_no = partner_trade_no, applyMoney = cash, serviceMoney = serviceFee, cashMoney = cash - serviceFee, useCash = useCash, AddTime = DateTime.Now, remark = "拼享惠商户申请提现", hostIP = Utility.WebHelper.GetIP(), applyType = applyType, account = account, accountName = accountName, drawCashWay = drawCashWay, OrderId = userId, }; tran.Add(BuildAddSql(apply)); code = base.ExecuteTransactionDataCorect(tran.sqlArray, tran.ParameterArray) ? 1 : 0; return(code); }
/// <summary> /// 用户拼团成功返现 /// </summary> /// <param name="id">提现账号id(PlatUserCash)</param> /// <param name="drawcashmoney">提现金额(分)</param> /// <returns></returns> public string PxhUserApplyDrawCash(PinGoodsOrder order, int userId, string appid) { PinGoodsOrderBLL pinGoodsOrderBLL = new PinGoodsOrderBLL(); TransactionModel tran = new TransactionModel(); if (userId <= 0) { return("用户ID不能为0"); } if (order.returnMoney <= 0) { return("返现金额不能为0"); } if (string.IsNullOrEmpty(appid)) { return("appid不能为空"); } int serviceFee = 0;//服务费 string partner_trade_no = WxPayApi.GenerateOutTradeNo(); DrawCashApply apply = new DrawCashApply() { Aid = order.aid, appId = appid, partner_trade_no = partner_trade_no, userId = userId, applyMoney = order.returnMoney, serviceMoney = serviceFee, cashMoney = order.returnMoney - serviceFee, useCash = "0", BeforeApplyMoney = 0, AddTime = DateTime.Now, remark = "拼享惠拼团成功用户申请返现", hostIP = WebHelper.GetIP(), state = 0, drawState = (int)DrawCashState.未开始提现, applyType = (int)DrawCashApplyType.拼享惠用户返现, drawCashWay = (int)DrawCashWay.微信提现, OrderId = order.id, }; tran.Add(base.BuildAddSql(apply)); order.isReturnMoney = 1; tran.Add(pinGoodsOrderBLL.BuildUpdateSql(order, "isReturnMoney")); if (!base.ExecuteTransactionDataCorect(tran.sqlArray)) { return("申请提现失败"); } return(""); }
private static void SDK_Pay(HttpContext context) { JS_SDKModel model = new JS_SDKModel(); try { var total_fee = Convert.ToInt32(Math.Round(Convert.ToDecimal(context.Request["total_fee"]), 2) * 100); var openid = context.Request["openid"]; WxPayData jsApiParam = new WxPayData(); //构造需要用SHA1算法加密的数据 WxPayData data = new WxPayData(); data.SetValue("body", "test"); data.SetValue("attach", "test"); data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); data.SetValue("total_fee", total_fee); data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); data.SetValue("goods_tag", "test"); data.SetValue("trade_type", "JSAPI"); data.SetValue("openid", openid); WxPayData result = WxPayApi.UnifiedOrder(data); model.appId = WeChatConfig.AppId; WxPayData signData = new WxPayData(); signData.SetValue("appId", model.appId); signData.SetValue("timeStamp", WxPayApi.GenerateTimeStamp()); signData.SetValue("nonceStr", WxPayApi.GenerateNonceStr()); signData.SetValue("package", "prepay_id=" + result.GetValue("prepay_id").ToString()); signData.SetValue("signType", "MD5"); signData.SetValue("paySign", signData.MakeSign()); model.nonceStr = signData.GetValue("nonceStr").ToString(); model.package = signData.GetValue("package").ToString(); model.paySign = signData.GetValue("paySign").ToString(); model.timeStamp = signData.GetValue("timeStamp").ToString(); model.status = 1; model.msg = "成功"; } catch (Exception ex) { model.status = 0; model.msg = ex.Message; } context.Response.Write(JsonConvert.SerializeObject(model)); }
public JsonResult CreateOrderFromShopcart(string prodIds) { string userOpenId = base.getUserOpenIdFromCookie(); string res = "fail"; if (!string.IsNullOrEmpty(userOpenId)) { try { //订单付款页面用户回退购物车页面,然后再创单时实际没有商品,规避此类垃圾数据 string[] prods = prodIds.Split(','); bool prodExist = false; for (int i = 0; i < prods.Length; i++) { shoppingcart checkResult = ShopCartBiz.CreateNew().checkProdExistInCarts(userOpenId, prods[i]); if (checkResult != null) { prodExist = true; break; } } if (prodExist) { string salesNo = WxPayApi.GenerateOutTradeNo();// Guid.NewGuid().ToString(); OrderBiz.CreateNew().createOrderFromShopcart(prodIds, userOpenId, salesNo); res = salesNo; } else { res = "noProds"; } } catch (Exception e) { res = "fail"; _Apilog.WriteLog("ProductsController/CreateOrderFromShopcart 异常: " + e.Message); } } else { _Apilog.WriteLog("ProductsController/CreateOrderFromShopcart 用户userOpenId 为空: " + prodIds); } return(Json(res)); }
public (string, string) CreateOrder(string openId, IOrderBase order, string notifyurl) { JsApiPay jsApiPay = new JsApiPay(); var outTradeNo = WxPayApi.GenerateOutTradeNo(); var orderDict = new Dictionary <string, string>(); orderDict.Add("fee", order.Fee.ToString()); orderDict.Add("name", order.Name); orderDict.Add("notify_url", notifyurl); orderDict.Add("openid", openId); orderDict.Add("tag", order.Tag); orderDict.Add("desc", order.Desc); orderDict.Add("out_trade_no", outTradeNo); var wxPayData = jsApiPay.GetUnifiedOrderResult(orderDict); return(GetJsApiParameters(wxPayData), outTradeNo); }
public JsonResult WxPay(string money, string tradetitle = "订单支付") { var result = new ReturnMessage(false) { Message = "订单支付失败!" }; try { if (string.IsNullOrWhiteSpace(money)) { result.Message = "请输入金额"; return(Json(result)); } if (LoginUser == null) { result.Message = "获取当前用户信息失败"; return(Json(result)); } var openid = LoginUser.OpenId; JsApiPay jsApiPay = new JsApiPay(this); jsApiPay.openid = openid; jsApiPay.total_fee = (int)(Converter.ParseDecimal(money) * 100);//Converter.ParseDecimal(money, 0) * 100;//单位为分 所以在此*100 //JSAPI支付预处理 var tradeNo = WxPayApi.GenerateOutTradeNo(); Log.Debug(this.GetType().Name, "用户订单支付!openid:" + LoginUser.OpenId); WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(tradeNo, "订单支付", "订单支付", openid, jsApiPay.total_fee, "ticket"); WriteDebug("aaa"); var appid = unifiedOrderResult.GetValue("appid").ToString(); WriteDebug("bbb" + appid); var prepayid = unifiedOrderResult.GetValue("prepay_id").ToString(); var param = jsApiPay.GetJsApiParameters(appid, prepayid); result.IsSuccess = true; result.Message = "支付成功!"; result.ResultData["data"] = new { tradeNo = tradeNo, param = param }; } catch (Exception ex) { ex.Data["Method"] = "PurseController>>WxPay"; new ExceptionHelper().LogException(ex); } return(Json(result)); }
public (Stream, string) NativeCreateOrder(string openId, IOrderBase order, string notifyUrl) { NativePay nativePay = new NativePay(); var outTradeNo = WxPayApi.GenerateOutTradeNo(); var orderDict = new Dictionary <string, string>(); orderDict.Add("fee", order.Fee.ToString()); orderDict.Add("name", order.Name); orderDict.Add("notify_url", notifyUrl); orderDict.Add("tag", order.Tag ?? String.Empty); orderDict.Add("desc", order.Desc ?? String.Empty); orderDict.Add("out_trade_no", outTradeNo); orderDict.Add("productId", order.Id.ToString()); var payUrl = nativePay.GetPayUrl(orderDict); return(MakeQRCode(payUrl), outTradeNo); }
private WxPayData UnifiedOrder(string openId, string productId) { //统一下单 WxPayData req = new WxPayData(); req.SetValue("body", "test"); req.SetValue("attach", "test"); req.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); req.SetValue("total_fee", 1); req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); req.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); req.SetValue("goods_tag", "test"); req.SetValue("trade_type", "NATIVE"); req.SetValue("openid", openId); req.SetValue("product_id", productId); WxPayData result = WxPayApi.UnifiedOrder(req); return(result); }
/** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式二URL */ public string GetPayUrl(string productId) { WxPayData data = new WxPayData(); data.SetValue("body", "广东雅达电子股份有限公司"); //商品描述 data.SetValue("attach", "附加信息,用于后台或者存入数据库,做自己的判断"); //附加数据 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); //随机字符串 data.SetValue("total_fee", 1); //总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 data.SetValue("goods_tag", "商品的备忘,可以自定义"); //商品标记 data.SetValue("trade_type", "NATIVE"); //交易类型 data.SetValue("product_id", productId); //商品ID WxPayData result = WxPayApi.UnifiedOrder(data); //调用统一下单接口 string url = result.GetValue("code_url").ToString(); //获得统一下单接口返回的二维码链接 return(url); }
public Order WxPayNoMoneyOrder(string productCode, string userCode, string peopleCount, DateTime dateTime, decimal money, string orderCode = "", string couponCode = "") { IProductInfoService _productInfoService = new ProductInfoService(); DateTime now = DateTime.Now; IOrderService _orderService = new OrderService(); IUserStoreService _userStoreService = new UserStoreService(); var userSotre = _userStoreService.GetUserStorebyUserCode(userCode); var tempOrder = _orderService.GetOrderByCode(orderCode); Order order = new Order(); if (tempOrder != null && tempOrder.UserCode == userCode) { order.CreateTime = tempOrder.CreateTime; order.OrderCode = tempOrder.OrderCode; order.OrderNO = tempOrder.OrderNO; } else { order.OrderCode = Guid.NewGuid().ToString(); order.OrderNO = WxPayApi.GenerateOutTradeNo().ToString(); order.CreateTime = now; } order.Money = money; int ss = 0; if (int.TryParse(peopleCount, out ss)) { order.Number = ss; } order.PayTime = DateTime.Now; order.StoreCode = userSotre.MembershipCardStore; order.UserCode = userCode; order.ProductCode = productCode; order.ExperienceVoucherCode = couponCode; order.AppointmentTime = dateTime; LogHelper.WriteLog("订单编码OrderCode " + order.OrderCode); LogHelper.WriteLog("订单号OrderNO " + order.OrderNO); _orderService.InsertOrder(order); return(order); }
public static bool WxPayRefundRequest(string trade_no, int total_fee, string out_refund_no, out string response) { response = string.Empty; if (string.IsNullOrEmpty(out_refund_no)) { out_refund_no = WxPayApi.GenerateOutTradeNo(); } string url = "https://api.mch.weixin.qq.com/secapi/pay/refund"; string wx_appid = PaymentConfig.WeiXinConfig.MobileAppID; string wx_mch_id = PaymentConfig.WeiXinConfig.MobileMCHID; WxPayData data = new WxPayData(); data.SetValue("out_trade_no", trade_no); data.SetValue("total_fee", total_fee); //订单总金额 data.SetValue("refund_fee", total_fee); //退款金额 data.SetValue("out_refund_no", out_refund_no); //随机生成商户退款单号 data.SetValue("op_user_id", wx_mch_id); //操作员,默认为商户号 data.SetValue("appid", wx_appid); //公众账号ID data.SetValue("mch_id", wx_mch_id); //商户号 data.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", "")); //随机字符串 data.SetValue("sign", data.MakeAPPSign()); //签名 string xml = data.ToXml(); response = HttpService.Post(xml, url, true, 6, SSLCERT_PATH: PaymentConfig.WeiXinConfig.MobileSSLCERT_PATH, SSLCERT_PASSWORD: PaymentConfig.WeiXinConfig.MobileSSLCERT_PASSWORD);//调用HTTP通信接口提交数据到API WxPayData result = new WxPayData(); result.FromXml(response); if (result.IsSet("return_code")) { if (result.GetValue("return_code").ToString().Equals("SUCCESS")) { return(true); } return(false); } else { response = result.GetValue("return_msg").ToString(); } return(false); }
public ActionResult wxPay(string total_fee, string sb) { string guid = Request["userId"]; var user = Common.CacheHelper.Get(guid) as PersonalUser; if (user == null) { return(Json(new { success = "false", str = "您还没登陆,请先登陆后操作!" }, JsonRequestBehavior.AllowGet)); } string xml = null; string trade_no = WxPayApi.GenerateOutTradeNo(); try { xml = new WXPay() { body = "爽赞网(爽币)充值", //费用名称,这会显示 detail = "爽赞网", //微信名称 attach = string.Format("{0},{1}", user.Id, sb), //自定义数据,这里给充值数量和用户ID out_trade_no = trade_no, //商户订单号 total_fee = int.Parse(total_fee) * 100 // total_fee=1 用户测试数据 }.pay(); if (xml.IsNullOrEmpty()) { return(Json(new { success = "false", str = "微信下单超时失败!" }, JsonRequestBehavior.AllowGet)); } XElement xe = XElement.Parse(xml); if (xe.Element("code_url") == null) { LogHelper.WriteLog(xml); return(Json(new { success = "false", str = "微信统一下单失败!" }, JsonRequestBehavior.AllowGet)); } return(Json(new { success = "true", trade_no = trade_no, url = xe.Element("code_url").Value }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { LogHelper.WriteLog(xml + "\r\n" + e.ToString()); return(Json(new { success = "false", str = "微信下单失败!" }, JsonRequestBehavior.AllowGet)); } }
public int InsertTopupOrder(string userCode, string prepayid, string typeCode, decimal?money = 0) { DynamicParameters paras = new DynamicParameters(); paras.Add("@TopupOrderCode", Guid.NewGuid().ToString(), System.Data.DbType.String); paras.Add("@UserCode", userCode, System.Data.DbType.String); paras.Add("@RecordsOfConsumptionCode", Guid.NewGuid().ToString(), System.Data.DbType.String); paras.Add("@WallePrCode", prepayid, System.Data.DbType.String); paras.Add("@OutTradeNo", WxPayApi.GenerateOutTradeNo().ToString(), System.Data.DbType.String); paras.Add("@PayDatetime", null, System.Data.DbType.DateTime); paras.Add("@RechargeTypeCode", typeCode, System.Data.DbType.String); paras.Add("@RecordsMoney", money, System.Data.DbType.String); paras.Add("@CreateTime", null, System.Data.DbType.DateTime); string sql = @"insert into [dbo].[TopupOrder](TopupOrderCode,UserCode,RecordsOfConsumptionCode, WallePrCode,OutTradeNo,PayDatetime,RechargeTypeCode,RecordsMoney,CreateTime) values(@TopupOrderCode,@UserCode,@RecordsOfConsumptionCode,@WallePrCode, @OutTradeNo,@PayDatetime,@RechargeTypeCode,@RecordsMoney,@CreateTime)"; return(DapperSqlHelper.ExcuteNonQuery <Order>(sql, paras, false)); }
public string GeneratePrepayId() { //统一下单 WxPayData data = new WxPayData(); data.SetValue("body", "test"); data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); data.SetValue("total_fee", total_fee); data.SetValue("trade_type", "APP"); WxPayData result = WxPayApi.UnifiedOrder(data); if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "") { Log.Error(this.GetType().ToString(), "UnifiedOrder response error!"); throw new WxPayException("UnifiedOrder response error!"); } return(result.GetValue("prepay_id").ToString()); }
private void Pay_Click(object sender, RoutedEventArgs e) { NativePay nativePay = new NativePay(); //生成扫码支付模式二url //string tmp = priceTB.Text.Trim(); //double price = 0.01; //double.TryParse(tmp, out price); int totalFee = 1; string out_trade_no = WxPayApi.GenerateOutTradeNo(); WxPayData data = new WxPayData(); data.SetValue("body", "张裕DIY流程演示用"); //商品描述 data.SetValue("attach", "张裕DIY流程演示用"); //附加数据 data.SetValue("out_trade_no", out_trade_no); //随机字符串 data.SetValue("total_fee", totalFee); //总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 data.SetValue("goods_tag", "jjj"); //商品标记 data.SetValue("trade_type", "NATIVE"); //交易类型 data.SetValue("product_id", "123456789"); //商品ID WxPayData result = WxPayApi.UnifiedOrder(data); //调用统一下单接口 string url = result.GetValue("code_url").ToString(); //获得统一下单接口返回的二维码链接 //string url2 = nativePay.GetPayUrl("123456789", totalFee); //string ss = HttpUtility.UrlEncode(url2); //CreateQrCode(url2); QrCodeDisplay dis = new WeChatDemo.QrCodeDisplay(out_trade_no); dis.Owner = this; dis.SetQR(url); dis.Show(); }
} //H5调起JS API参数 protected void Page_Load(object sender, EventArgs e) { Log.Info(this.GetType().ToString(), "page load"); if (!IsPostBack) { string openid = "oN3xdxP75aDqm6WMHCwNgmR1OLCk"; string total_fee = "1"; //检测是否给当前页面传递了相关参数 if (string.IsNullOrEmpty(openid) || string.IsNullOrEmpty(total_fee)) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面传参出错,请返回重试" + "</span>"); Log.Error(this.GetType().ToString(), "This page have not get params, cannot be inited, exit..."); //submit.Visible = false; return; } //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数 JsApiPay jsApiPay = new JsApiPay(this); jsApiPay.openid = openid; jsApiPay.total_fee = int.Parse(total_fee); //JSAPI支付预处理 try { var company = WebUtil.GetCompany(this.Context); string body = company != null ? company.CompanyName : ConfigurationManager.AppSettings["CompanyName"]; string tradeno = WxPayApi.GenerateOutTradeNo(); WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(body, tradeno); wxJsApiParam = jsApiPay.GetJsApiParameters();//获取H5调起JS API参数 Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam); //在页面上显示订单信息 result.InnerHtml = "<span style='color:#00CD00;font-size:20px'>订单详情:</span><br/>"; result.InnerHtml += "<span style='color:#00CD00;font-size:20px'>" + unifiedOrderResult.ToPrintStr() + "</span>"; } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试" + "</span>"); //submit.Visible = false; } } }
public ActionResult SubmitRefundApply(string OrderID, string Remark, decimal?Amount) { string RefundNo = WxPayApi.GenerateOutTradeNo(); var resultData = new RefundService().AddRefundApply(OrderID, RefundNo, SessionTools.UserID, Remark, Amount); if (resultData != null && resultData.status > 0) { // 修改订单状态为退款中 var resultOrderStatus = new RecordService().RefundOrder(OrderID); // 退款申请提交成功后,(修改订单状态为退款中),向管理员发送退款申请验证码 // 消息携带链接:/User/ValidateRefund?OrderID=&TelePhone=&CodeStr= // 管理员点击退款申请信息后,跳转至link,验证通过,管理员输入允许的退款金额 // 然后调用 POST - /User/RefundAmount 进行退款 // 退款成功后,修改订单状态、退款单状态、使用券状态 if (resultOrderStatus != null && resultOrderStatus.status > 0) { this.SendCode(OrderID, (int)Code_Type.Refund); } } return(Content(JsonHelper.SerializeObject(resultData))); }
/// <summary> /// 统一下单 /// </summary> /// <param name="openId"></param> /// <param name="productId"></param> /// <returns></returns> private WxPayData UnifiedOrder(string openId, string productId) { //TODO 根据productId获取产品信息 //统一下单 WxPayData req = new WxPayData(); req.SetValue("body", "广东雅达电子股份有限公司"); req.SetValue("attach", "附加信息,用于后台或者存入数据库,做自己的判断"); req.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); req.SetValue("total_fee", 1); req.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); req.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); req.SetValue("goods_tag", "商品的备忘,可以自定义"); req.SetValue("trade_type", "NATIVE"); req.SetValue("openid", openId); req.SetValue("product_id", productId); WxPayData result = WxPayApi.UnifiedOrder(req); return(result); }
public JsonResult GetPaySign(string openid) { string nonceStr = WxPayApi.GenerateNonceStr(); //随机字符串,不长于32位 string outTradeNo = WxPayApi.GenerateOutTradeNo(); //订单号:32个字符内、不得重复 string spbillCreateIp = WxPayConfig.GetIP(System.Web.HttpContext.Current); //用户端IP int total_fee = 1; //订单金额(单位:分),整数 string trade_type = "JSAPI"; //JSAPI,NATIVE,APP,WAP #region 调用统一支付接口获得prepay_id(预支付交易会话标识) WxPayData wxPayData = new WxPayData(); wxPayData.SetValue("appid", WxPayConfig.APPID); //appid wxPayData.SetValue("body", WxPayConfig.BODY); //支付描述 wxPayData.SetValue("mch_id", WxPayConfig.MCHID); //商户id wxPayData.SetValue("nonce_str", nonceStr); //随机字符串 wxPayData.SetValue("notify_url", WxPayConfig.NOTIFY_URL); //回调地址 wxPayData.SetValue("openid", openid); //openid wxPayData.SetValue("out_trade_no", outTradeNo); //订单号 wxPayData.SetValue("spbill_create_ip", spbillCreateIp); //客户端ip地址 wxPayData.SetValue("total_fee", total_fee.ToString()); //订单金额(单位:分),整数 wxPayData.SetValue("trade_type", trade_type); //交易类型 wxPayData.SetValue("sign", wxPayData.MakeSign()); //签名 string data = wxPayData.ToXml(); string prepayId = WeChatTools.UnifiedOrder(data); #endregion #region 支付参数 string timeStamp = WxPayApi.GenerateTimeStamp(); nonceStr = WxPayApi.GenerateNonceStr(); WxPayData wxPaySign = new WxPayData(); wxPaySign.SetValue("appId", WxPayConfig.APPID); wxPaySign.SetValue("timeStamp", timeStamp); wxPaySign.SetValue("nonceStr", nonceStr); wxPaySign.SetValue("package", string.Format("prepay_id={0}", prepayId)); wxPaySign.SetValue("signType", "MD5"); string paysign = wxPaySign.MakeSign(); wxPaySign.SetValue("paySign", paysign); #endregion return(Json(new { data = wxPaySign.GetValues(), openid = openid }, JsonRequestBehavior.AllowGet)); }
public int CreateWxOrder(PinGoodsOrder order, string userName) { int cityMorderId = 0; //citymorder表ID XcxAppAccountRelation xcx = XcxAppAccountRelationBLL.SingleModel.GetModel(order.aid); if (xcx == null) { return(cityMorderId); } string no = WxPayApi.GenerateOutTradeNo(); CityMorders citymorderModel = new CityMorders { OrderType = (int)ArticleTypeEnum.PinOrderPay, ActionType = (int)ArticleTypeEnum.PinOrderPay, Addtime = DateTime.Now, payment_free = order.money, trade_no = no, Percent = 99,//不收取服务费 userip = WebHelper.GetIP(), FuserId = order.userId, Fusername = userName, orderno = no, payment_status = 0, Status = 0, Articleid = 0, CommentId = order.id, //订单Id MinisnsId = order.aid, // 订单aId TuserId = order.storeId, ShowNote = $" {xcx.Title}购买商品支付{order.moneyStr}元", CitySubId = 0, //无分销,默认为0 PayRate = 1, buy_num = 0, //无 appid = xcx.AppId, }; cityMorderId = Convert.ToInt32(new CityMordersBLL().Add(citymorderModel)); return(cityMorderId); }
/// <summary> /// 申请退款完整业务流程逻辑 /// </summary> /// <param name="transaction_id">微信订单号</param> /// <param name="out_trade_no">商户订单号</param> /// <param name="total_fee">订单总金额</param> /// <param name="refund_fee">退款金额</param> /// <returns> 退款结果(xml格式)</returns> public static string Run(string transaction_id, string out_trade_no, int total_fee, int refund_fee, string appID = WxPayConfig.APPID, string mchID = WxPayConfig.MCHID, string key = WxPayConfig.KEY, string sSLCERT_PASSWORD = WxPayConfig.SSLCERT_PASSWORD, string sSLCERT_PATH = WxPayConfig.SSLCERT_PATH) { Log.Info("Refund", "Refund is processing..."); WxPayData data = new WxPayData(); if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准 { data.SetValue("transaction_id", transaction_id); } else//微信订单号不存在,才根据商户订单号去退款 { data.SetValue("out_trade_no", out_trade_no); } data.SetValue("total_fee", total_fee); //订单总金额 data.SetValue("refund_fee", refund_fee); //退款金额 data.SetValue("out_refund_no", WxPayApi.GenerateOutTradeNo()); //随机生成商户退款单号 data.SetValue("op_user_id", mchID); //操作员,默认为商户号 WxPayData result = WxPayApi.Refund(data, 6, appID, mchID, key, sSLCERT_PASSWORD, sSLCERT_PATH); //提交退款申请给API,接收返回数据 Log.Info("Refund", "Refund process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
WxPayData GetUnifiedOrderResult() { string url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; //统一下单 WxPayData data = new WxPayData(); data.SetValue("body", "test"); data.SetValue("attach", "test"); data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); data.SetValue("notify_url", "http://demo.xmpharos.com/WXNotify.aspx"); data.SetValue("total_fee", 1); data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); data.SetValue("goods_tag", "test"); data.SetValue("trade_type", "JSAPI"); data.SetValue("openid", "oAZCps75h8Jyj1a0uyIktHiGHbho"); data.SetValue("spbill_create_ip", WxPayConfig.IP); //终端ip data.SetValue("appid", "wxbeb2e5a46ca7bf69"); //公众账号ID data.SetValue("mch_id", "1240541002"); //商户号 data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); //随机字符串,放置顺序 //签名 data.SetValue("sign", data.MakeSign("e10adc3849ba56abbe56e056f2588888")); string xml = data.ToXml(); var start = DateTime.Now; Log.Debug("WxPayApi", "UnfiedOrder request : " + xml); string response = HttpService.Post(xml, url, false, 10); Log.Debug("WxPayApi", "UnfiedOrder response : " + response); WxPayData result = new WxPayData(); result.FromXml(response); if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "") { Log.Error(this.GetType().ToString(), "UnifiedOrder response error!"); throw new Exception("UnifiedOrder response error!"); } return(result); }
/// <summary> /// 生成直接支付url,支付url有效期为2小时,模式二 /// </summary> /// <param name="productId">商品ID</param> /// <param name="body">商品描述</param> /// <param name="attach">附加数据</param> /// <param name="totalFee">总金额</param> /// <param name="goodsTag">商品标记</param> /// <returns>模式二URL</returns> public string GetPayUrl(string productId, string body, string attach, string totalFee, string goodsTag) { LogHelper.Info(this.GetType().ToString(), "Native pay mode 2 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("body", body); //商品描述 data.SetValue("attach", attach); //附加数据 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); //随机字符串 data.SetValue("total_fee", totalFee); //总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 data.SetValue("goods_tag", goodsTag); //商品标记 data.SetValue("trade_type", "NATIVE"); //交易类型 data.SetValue("product_id", productId); //商品ID WxPayData result = WxPayApi.UnifiedOrder(data); //调用统一下单接口 string url = result.GetValue("code_url").ToString(); //获得统一下单接口返回的二维码链接 LogHelper.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url); return(url); }