public static string SendRequest(RefundInfo info, PayConfig config) { WxPayData wxPayData = new WxPayData(); if (!string.IsNullOrEmpty(info.transaction_id)) { wxPayData.SetValue("transaction_id", info.transaction_id); } else { wxPayData.SetValue("out_trade_no", info.out_trade_no); } wxPayData.SetValue("total_fee", (int)info.TotalFee.Value); wxPayData.SetValue("refund_fee", (int)info.RefundFee.Value); wxPayData.SetValue("out_refund_no", info.out_refund_no); wxPayData.SetValue("op_user_id", config.MchID); wxPayData.SetValue("sub_appid", config.sub_appid); wxPayData.SetValue("sub_mch_id", config.sub_mch_id); wxPayData.SetValue("refund_account", "REFUND_SOURCE_RECHARGE_FUNDS"); WxPayData wxPayData2 = WxPayApi.Refund(wxPayData, config, 60); SortedDictionary <string, object> values = wxPayData2.GetValues(); if (values["return_code"].ToString() == "SUCCESS" && values["result_code"].ToString() == "SUCCESS") { return("SUCCESS"); } if (values["return_code"].ToString() == "SUCCESS") { return(values["err_code_des"].ToString()); } return(values["return_msg"].ToString()); }
public PayNotify GetPayNotify(string xml) { DataTable dt = this.ErrorTable("Notify"); DataRow row = dt.NewRow(); row["OperTime"] = DateTime.Now; try { if (string.IsNullOrEmpty(xml)) { row["Error"] = "InStream Null"; row["Param"] = "null"; dt.Rows.Add(row); this.WriteLog(dt); return(null); } PayNotify notifyObject = Utils.GetNotifyObject <PayNotify>(xml); WxPayData data = new WxPayData(); try { data.FromXml(xml, this._payAccount.PartnerKey); } catch (WxPayException exception) { Utils.WxPaylog("支付出错了:" + exception.Message, "_WxPaylog.txt"); } SortedDictionary <string, object> values = data.GetValues(); if (((((notifyObject == null) || (values == null)) || (values.Keys.Count == 0)) || (values.ContainsKey("return_code") && (values["return_code"].ToString() == "FAIL"))) || (values.ContainsKey("result_code") && (values["result_code"].ToString() == "FAIL"))) { Utils.WxPaylog(xml, "_WxPaylog.txt"); return(null); } PayInfo info = new PayInfo { SignType = "MD5", Sign = notifyObject.sign, TradeMode = 0, BankType = notifyObject.bank_type, BankBillNo = "", TotalFee = notifyObject.total_fee / 100M, FeeType = (notifyObject.fee_type == "CNY") ? 1 : 0, NotifyId = "", TransactionId = notifyObject.transaction_id, OutTradeNo = notifyObject.out_trade_no, TransportFee = 0M, ProductFee = 0M, Discount = 1M, BuyerAlias = "" }; notifyObject.PayInfo = info; return(notifyObject); } catch (Exception exception2) { row["Error"] = exception2.Message; row["Param"] = xml; dt.Rows.Add(row); this.WriteLog(dt); return(null); } }
public JsonResult GetWXAPPIDInfo(string url) { string nonceStr = WxPayApi.GenerateNonceStr(); //随机字符串,不长于32位 string timeStamp = WxPayApi.GenerateTimeStamp(); string accessToken = WeChatTools.GetAccessoken(true); string jsapi_ticket1 = WeChatTools.PostWebRequest("https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + accessToken + "&type=agent_config", "", Encoding.UTF8); string jsapi_ticket2 = WeChatTools.PostWebRequest("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + accessToken, "", Encoding.UTF8); Dictionary <string, string> tickResult = jsapi_ticket1.JsonToModel <Dictionary <string, string> >(); Dictionary <string, string> tickResult2 = jsapi_ticket2.JsonToModel <Dictionary <string, string> >(); string param1 = "jsapi_ticket=" + tickResult["ticket"] + "&noncestr=" + nonceStr + "×tamp=" + timeStamp + "&url=" + url + ""; string param2 = "jsapi_ticket=" + tickResult2["ticket"] + "&noncestr=" + nonceStr + "×tamp=" + timeStamp + "&url=" + url + ""; string newjsapi_ticket1 = SHA1_Encrypt(param1); string newjsapi_ticket2 = SHA1_Encrypt(param2); //wx.agentConfig WxPayData wxPayData = new WxPayData(); WxPayData wxPayData2 = new WxPayData(); wxPayData.SetValue("appid", WxPayConfig.APPID); //appid wxPayData.SetValue("nonce_str", nonceStr); //随机字符串 wxPayData.SetValue("timestamp", timeStamp); //生成签名的时间戳 wxPayData.SetValue("sign", newjsapi_ticket1.ToLower()); //签名1 //wx.config wxPayData.SetValue("sign2", newjsapi_ticket2.ToLower()); //签名2 wxPayData.SetValue("url", url); return(Json(wxPayData.GetValues(), JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Process() { EnrollDto enrollDto = _helper.GetEnrollDto(); if (enrollDto == null) { return(Redirect("/Mob/Enroll")); } if (WxPayApi.IsPaid("", enrollDto.Enroll.OrderNo)) { PayModelDto model = WxPayApi.GetPayModel(enrollDto.Enroll.OrderNo); await _helper.SetPayStatus(EnrollStatus.PaySuccess, model); } WxPayData data = null; if (enrollDto.Enroll.Status != EnrollStatus.PaySuccess) { data = await WxPayApi.GetJSSDKConfig(); } ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues()); enrollDto.Enroll.IdCard = enrollDto.Enroll.IdCard.ToSpecialString(6, 8); return(View(enrollDto)); }
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)); }
public static string SendRequest(RefundInfo info, PayConfig config, out string WxRefundNum) { WxPayData wxPayData = new WxPayData(); if (!string.IsNullOrEmpty(info.transaction_id)) { wxPayData.SetValue("transaction_id", info.transaction_id); } else { wxPayData.SetValue("out_trade_no", info.out_trade_no); } wxPayData.SetValue("total_fee", (int)info.TotalFee.Value); wxPayData.SetValue("refund_fee", (int)info.RefundFee.Value); wxPayData.SetValue("out_refund_no", info.out_refund_no); wxPayData.SetValue("op_user_id", config.MchID); if (!string.IsNullOrEmpty(config.sub_appid)) { wxPayData.SetValue("sub_appid", config.sub_appid); wxPayData.SetValue("sub_mch_id", config.sub_mch_id); } WxPayData wxPayData2 = WxPayApi.Refund(wxPayData, config, 60); SortedDictionary <string, object> values = wxPayData2.GetValues(); string result; if (values.ContainsKey("return_code") && values["return_code"].ToString() == "SUCCESS" && values.ContainsKey("result_code") && values["result_code"].ToString() == "SUCCESS") { WxRefundNum = ""; result = "SUCCESS"; } else { HttpService.WxDebuglog(JsonConvert.SerializeObject(values), "_wxpay.txt"); string str = ""; if (values.ContainsKey("err_code_des")) { str = values["err_code_des"].ToString(); } if (values.ContainsKey("refund_id")) { WxRefundNum = values["refund_id"].ToString(); } else { WxRefundNum = ""; } result = str + values["return_msg"].ToString(); } return(result); }
public string GetPrePayUrl(string productId, PayConfig config) { WxPayData wxPayData = new WxPayData(); wxPayData.SetValue("appid", config.AppId); wxPayData.SetValue("mch_id", config.MchID); wxPayData.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); wxPayData.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); wxPayData.SetValue("product_id", productId); wxPayData.SetValue("sign", wxPayData.MakeSign(config.Key)); string str = this.ToUrlParams(wxPayData.GetValues()); return("weixin://wxpay/bizpayurl?" + str); }
/// <summary> /// 生成扫描支付模式一URL /// </summary> /// <param name="productId">商品ID</param> /// <returns>模式一URL</returns> public static string GetPrePayUrl(string productId) { WxPayData data = new WxPayData(); data.SetValue("appid", GlobalContext.AppID); //公众帐号id data.SetValue("mch_id", GlobalContext.MCHId); //商户号 data.SetValue("time_stamp", CommonHelper.CreateTimestamp()); //时间戳 data.SetValue("nonce_str", CommonHelper.CreateNonceStr()); //随机字符串 data.SetValue("product_id", productId); //商品ID data.SetValue("sign", data.MakeSign()); //签名 string str = ToUrlParams(data.GetValues()); //转换为URL串 string url = "weixin://wxpay/bizpayurl?" + str; return(url); }
/** * 生成扫描支付模式一URL * @param productId 商品ID * @return 模式一URL */ public string GetPrePayUrl(string productId) { WxPayData data = new WxPayData(); data.SetValue("appid", WxPayConfig.APPID); //公众帐号id data.SetValue("mch_id", WxPayConfig.MCHID); //商户号 data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳 data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); //随机字符串 data.SetValue("product_id", productId); //商品ID data.SetValue("sign", data.MakeSign()); //签名 string str = ToUrlParams(data.GetValues()); //转换为URL串 string url = "weixin://wxpay/bizpayurl?" + str; return(url); }
/** * 生成扫描支付模式一URL * @param productId 商品ID * @return 模式一URL */ public string GetPrePayUrl(string productId) { Log.Info(this.GetType().ToString(), "Native pay mode 1 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("appid", Config.APPID);//公众帐号id data.SetValue("mch_id", Config.MCHID);//商户号 data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp());//时间戳 data.SetValue("nonce_str", WxPayApi.GenerateNonceStr());//随机字符串 data.SetValue("product_id", productId);//商品ID data.SetValue("sign", data.MakeSign());//签名 string str = ToUrlParams(data.GetValues());//转换为URL串 string url = "weixin://wxpay/bizpayurl?" + str; Log.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url); return url; }
/** * 生成扫描支付模式一URL * @param productId 商品ID * @return 模式一URL */ public string GetPrePayUrl(string productId) { //Log.Info(this.GetType().ToString(), "Native pay mode 1 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("appid", WxPayConfig.APPID); //公众帐号id data.SetValue("mch_id", WxPayConfig.MCHID); //商户号 data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳 data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); //随机字符串 data.SetValue("product_id", productId); //商品ID data.SetValue("sign", data.MakeSign()); //签名 var str = ToUrlParams(data.GetValues()); //转换为URL串 var url = "weixin://wxpay/bizpayurl?" + str; //Log.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url); return(url); }
protected override ActionResult SetPostRequest(Enroll enroll) { try { Member member = SessionHelper.Mob.GetSession <Member>(); JsApiPay jsApiPay = new JsApiPay(); jsApiPay.openid = member.OpenId; jsApiPay.GetUnifiedOrderResult(enroll, _helper.GetCourse(enroll.CourseId)); WxPayData wxPayData = jsApiPay.GetJsApiParameters(); return(Success(wxPayData.GetValues()));//获取H5调起JS API参数 } catch (Exception ex) { LogHelper.Error(ex); return(Faild("支付失败,请重试。")); } }
/// <summary> /// 生成扫描支付模式一URL /// </summary> /// <param name="productId">商品ID</param> /// <returns>模式一URL</returns> public string GetPrePayUrl(string productId) { LogHelper.Info(this.GetType().ToString(), "Native pay mode 1 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("appid", WxPayConfig.AppId); //公众帐号id data.SetValue("mch_id", WxPayConfig.MchId); //商户号 data.SetValue("time_stamp", WxPayApi.GenerateTimeStamp()); //时间戳 data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); //随机字符串 data.SetValue("product_id", productId); //商品ID data.SetValue("sign", data.MakeSign()); //签名 string str = ToUrlParams(data.GetValues()); //转换为URL串 string url = "weixin://wxpay/bizpayurl?" + str; //weixin://wxpay/bizpayurl?appid=wx426b3015555a46be&mch_id=1900009851&nonce_str=lz2gmz19sbeteufbg2onmbt9sabv0kef&product_id=123456789&time_stamp=1531917401&sign=69C6AEFFF6943AADCF84C4FA372BE60D LogHelper.Info(this.GetType().ToString(), "Get native pay mode 1 url : " + url); return(url); }
// GET: Mob/Home public async Task <ActionResult> Index(string id) { if (!string.IsNullOrEmpty(id)) { MemberHelper memberHelper = new MemberHelper(); await memberHelper.SetMemberReferee(id); } //if (string.IsNullOrEmpty(_Member.Phone)) //{ // return Redirect("/Mob/Home/Bind"); //} WxPayData data = await WxPayApi.GetJSSDKConfig(); ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues()); return(View()); }
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)); }
// GET: Mob/Share public async Task <ActionResult> Index(string id = "") { if (SessionHelper.Mob.IsNullSession()) { return(Redirect("/Mob/Home/Index/" + id)); } if (string.IsNullOrEmpty(id)) { Member member = SessionHelper.Mob.GetSession <Member>(); if (member != null) { id = member.ShareCode; } } WxPayData data = await WxPayApi.GetJSSDKConfig(); ViewBag.WxConfig = data == null ? "" : SerializationHelper.ToJson(data.GetValues()); return(View((object)id)); }
public ActionResult RefundAmount(string OrderID, decimal?Amount = null) { var recordEntity = new RecordService().SelectByID(OrderID); var refundEntity = new RefundService().SelectByID(OrderID); if (recordEntity != null) { JsApiPay jsApiPay = new JsApiPay(this); var userEntity = new UserService().SelectByID(recordEntity.UserID); jsApiPay.op_user_id = userEntity != null ? userEntity.WeiXin_Openid : ""; jsApiPay.order_no = recordEntity.OrderNo; jsApiPay.out_refund_no = refundEntity != null ? refundEntity.RefundNo : WxPayApi.GenerateOutTradeNo(); jsApiPay.total_fee = Convert.ToInt32(recordEntity.Amount * 100); jsApiPay.refund_fee = Amount != null?Convert.ToInt32(Amount * 100) : (refundEntity != null ? Convert.ToInt32(refundEntity.Amount * 100) : 0); try { WxPayData result = jsApiPay.GetRefundOrderResult(); if (result.IsSet("result_code") && result.GetValue("result_code").ToString() == "SUCCESS") { return(Content(JsonHelper.SerializeObject(Common.MessageRes.OperateSuccess.SetResult("SUCCESS")))); } else { MYLog.Error("退款申请失败:" + SessionTools.UserName, JsonHelper.SerializeObject(result.GetValues())); return(Content(JsonHelper.SerializeObject(result.GetValue("err_code_des").ToString().SetResult(null)))); } } catch (Exception ex) { MYLog.Error("退款申请失败,请返回重试:" + SessionTools.UserName, ex.ToString()); return(Content(JsonHelper.SerializeObject("退款申请失败,请返回重试".SetResult(null)))); } } return(Content(JsonHelper.SerializeObject(Common.MessageRes.OperateFailed.SetResult(null)))); }