public void OrderqueryTest() { var result = TenPay.Orderquery("[appId]", "[package]", "[timesTamp]", "[app_Signature]", "[sign_Method]"); Console.Write(result); Assert.IsNotNull(result); }
public void NativePayTest() { var result = TenPay.NativePay("[appId]", "[timesTamp]", "[nonceStr]", "[productId]", "[sign]"); Console.Write(result); Assert.IsNotNull(result); }
public void DelivernotifyTest() { var result = TenPay.Delivernotify("[appId]", "[openId]", "[transId]", "[out_Trade_No]", "[deliver_TimesTamp]", "[deliver_Status]", "[deliver_Msg]", "[app_Signature]", "sha1"); Console.Write(result); Assert.IsNotNull(result); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button3_Click(object sender, EventArgs e) { TenPay tenPay = new TenPay(); string price = "10000"; decimal total = decimal.Parse(price); //订单支付金额 decimal supperates = 0.001M; //支付费率 decimal paySXF = FourToFiveNum(total * supperates, 2); //支付手续费 decimal actPrice = total - paySXF; //收款账号金额 string orderId = DateTime.Now.Ticks.ToString(); TenPayParam tenPayParam = new TenPayParam(); tenPayParam.Bus_Args = "261065527^" + 1 + "^1|465853660^" + 1 + "^4|" + "[email protected]^" + 2 + "^4"; tenPayParam.Bus_Desc = "12345^深圳-上海^1^fady^庄^13800138000";///业务描述,特定格式的字符串,格式为:PNR^航程^机票张数^机票销售商在机票平台的id^联系人姓名^联系电话 //tenPayParam.Bus_Desc = "测试"; tenPayParam.Desc = "在线充值"; tenPayParam.Orderid = orderId; tenPayParam.Total_Tee = total.ToString(); tenPayParam.UserHostAddress = Page.Request.UserHostAddress; tenPayParam.Total_Tee = "4"; string strFromValue = new PbProject.Logic.Pay.TenPay().SplitPayRequest(tenPayParam); Response.Write(strFromValue); }
/*** * 退款查询完整业务流程逻辑 * @param refund_id 微信退款单号(优先使用) * @param out_refund_no 商户退款单号 * @param transaction_id 微信订单号 * @param out_trade_no 商户订单号 * @return 退款查询结果(xml格式) */ public static string Run(string refund_id, string out_refund_no, string transaction_id, string out_trade_no) { Log.Info("RefundQuery", "RefundQuery is processing..."); WxPayData data = new WxPayData(); if (!string.IsNullOrEmpty(refund_id)) { data.SetValue("refund_id", refund_id);//微信退款单号,优先级最高 } else if (!string.IsNullOrEmpty(out_refund_no)) { data.SetValue("out_refund_no", out_refund_no);//商户退款单号,优先级第二 } else if (!string.IsNullOrEmpty(transaction_id)) { data.SetValue("transaction_id", transaction_id);//微信订单号,优先级第三 } else { data.SetValue("out_trade_no", out_trade_no);//商户订单号,优先级最低 } WxPayData result = TenPay.RefundQuery(data);//提交退款查询给API,接收返回数据 Log.Info("RefundQuery", "RefundQuery process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
/*** * 申请退款完整业务流程逻辑 * @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", TenPay.GenerateOutTradeNo()); //随机生成商户退款单号 data.SetValue("op_user_id", WxPayConfig.GetConfig().GetMchID()); //操作员,默认为商户号 WxPayData result = TenPay.Refund(data); //提交退款申请给API,接收返回数据 Log.Info("Refund", "Refund process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
protected void Page_Load(object sender, EventArgs e) { TenPayParam tenPayParam = new TenPayParam(); tenPayParam.Orderid = getParameter("orderid"); //订单号 tenPayParam.Total_Tee = getParameter("total_tee"); //商品金额 tenPayParam.UserHostAddress = getParameter("userhostaddress"); //ip tenPayParam.Attach = getParameter("attach"); tenPayParam.Bus_Args = getParameter("busargs"); //分账明细 tenPayParam.Bus_Desc = getParameter("busdesc"); tenPayParam.Desc = "机票支付"; string banktype = getParameter("banktype"); if (string.IsNullOrEmpty(banktype)) { tenPayParam.BankType = "0"; } else { tenPayParam.BankType = banktype; } string msgShow = new TenPay().SplitPayRequest(tenPayParam); OnErrorNew(msgShow, false); //} Response.Write(msgShow); }
public void TenPayNotify() { TenPay pay = new TenPay(); pay.Notify(); CancelLayout(); CancelView(); }
public void TenPayReceive() { CancelLayout(); TenPay pay = new TenPay(); pay.Receive(); RenderView("PayResult"); }
/*** * 下载对账单完整业务流程逻辑 * @param bill_date 下载对账单的日期(格式:20140603,一次只能下载一天的对账单) * @param bill_type 账单类型 * ALL,返回当日所有订单信息,默认值 * SUCCESS,返回当日成功支付的订单 * REFUND,返回当日退款订单 * REVOKED,已撤销的订单 * @return 对账单结果(xml格式) */ public static string Run(string bill_date, string bill_type) { Log.Info("DownloadBill", "DownloadBill is processing..."); WxPayData data = new WxPayData(); data.SetValue("bill_date", bill_date); //账单日期 data.SetValue("bill_type", bill_type); //账单类型 WxPayData result = TenPay.DownloadBill(data); //提交下载对账单请求给API,接收返回结果 Log.Info("DownloadBill", "DownloadBill process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
public ActionResult Native() { string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; RequestHandler outParams = new RequestHandler(null); outParams.Init(); string productid = sp_billno; string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); RequestHandler Params = new RequestHandler(null); Params.SetParameter("appid", TenPayInfo.AppId); Params.SetParameter("appkey", TenPayInfo.AppKey); Params.SetParameter("noncestr", nonceStr); Params.SetParameter("timestamp", timeStamp); Params.SetParameter("productid", productid); string sign = Params.CreateSHA1Sign(); Params.SetParameter("sign", sign); var parm = TenPay.NativePay(TenPayInfo.AppId, timeStamp, nonceStr, productid, sign); parm = QRCode.QRfromGoogle(parm); ViewData["parm"] = parm; return(View()); }
/// <summary> /// 二维码支付 /// </summary> /// <param name="order"></param> /// <param name="spbillCreateIp"></param> /// <returns></returns> public string TenPayV3QrCodeInfo(Order order, string spbillCreateIp) { var appId = SiteConfig.AppId; //AppId var mchId = SiteConfig.MCHID; //mchId var key = SiteConfig.MCHKEY; //key //var serviceKey = SiteConfig.SERVICEMCHKEY; //var serviceMchId = SiteConfig.SERVICEMCHID; //var serviceAppId = SiteConfig.SERVICEAPPID; var tenPayV3Notify = "{0}/TenPayResult".With(SiteConfig.DomainName); var tenPay = new TenPay(appId, mchId, key, tenPayV3Notify); var body = order.Description; var codeUrl = order.PrepayCodeUrl; //订单是否失效 if (order.GetPayOrderTime == null || DateTime.Compare(order.GetPayOrderTime.Value.AddHours(2), DateTime.Now) < 0) { try { //获取微信预支付订单 string prepayId; //判断订单模式 codeUrl = tenPay.GetCodeUrl(order.OrderNumber, body, spbillCreateIp, order.TotalPrice, out prepayId); //记录微信的订单号 order.PrepayId = prepayId; order.PrepayCodeUrl = codeUrl; //TODO:获取预支付订单时间【只有两个小时的有效期】 order.GetPayOrderTime = DateTime.Now; SaveObject(order); } catch (Exception ex) { LogUtility.Order.Error("支付失败:{0}".With(ex.Message), ex); throw ex; } } return(codeUrl); }
/*** * 订单查询完整业务流程逻辑 * @param transaction_id 微信订单号(优先使用) * @param out_trade_no 商户订单号 * @return 订单查询结果(xml格式) */ public static string Run(string transaction_id, string out_trade_no) { Log.Info("OrderQuery", "OrderQuery 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); } WxPayData result = TenPay.OrderQuery(data);//提交订单查询请求给API,接收返回数据 Log.Info("OrderQuery", "OrderQuery process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
public ActionResult Delivernotify() { string timeStamp = ""; string appSignature = ""; //string appId, string openId, string transId, string out_Trade_No, string deliver_TimesTamp, string deliver_Status, string deliver_Msg, string app_Signature, string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //调起微信支付签名 timeStamp = TenPayUtil.GetTimestamp(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appid", TenPayInfo.AppId); paySignReqHandler.SetParameter("openId", TenPayInfo.AppKey); paySignReqHandler.SetParameter("transId", "111112222233333"); paySignReqHandler.SetParameter("deliver_TimesTamp", timeStamp); paySignReqHandler.SetParameter("out_Trade_No", sp_billno); paySignReqHandler.SetParameter("deliver_Status", "1"); paySignReqHandler.SetParameter("deliver_Msg", "ok"); appSignature = paySignReqHandler.CreateSHA1Sign(); var result = TenPay.Delivernotify(TenPayInfo.AppId, "oX99MDgNcgwnz3zFN3DNmo8uwa-w", "111112222233333", sp_billno, timeStamp, "1", "ok", appSignature, "sha1"); ViewData["message"] = result.errcode; return(View()); }
public void GotoPay(string PayWay, decimal total, string pname, int docId, int chargeType) { OrderService os = Context.GetService <OrderService>(); AccountService accs = Context.GetService <AccountService>(); U_UserInfo logonUser = base.GetUser(); decimal orderId = Utils.TmmUtils.GenOrderId(); DDocInfo doc = new DDocInfo(); TOrder order = new TOrder(); TOrderDetail detail = new TOrderDetail(); int orderType = 0; //订单类型 if (chargeType == 1) { doc = os.DDocInfoBll.Get(docId); orderType = (int)OrderType.DownDocOrder; } else if (chargeType == 0) { //如果是直接充值,这里虚拟一个doc对象,来作为订单的商品 doc = new DDocInfo() { DocId = -1, Title = "直接充值:" + total.ToString(), Price = total }; orderType = (int)OrderType.DirectCharge; } detail = new TOrderDetail() { DocId = doc.DocId, DocTitle = doc.Title, GoodsCount = 1, Price = doc.Price, OrderId = orderId }; order = new TOrder() { OrderType = orderType, OrderId = orderId, UserId = logonUser.UserId, Email = logonUser.Email, Total = detail.Price * detail.GoodsCount, Ip = Context.Request.UserHostAddress, Status = (int)OrderStatus.NewOrder, CreateTime = DateTime.Now, PayWay = Helper.FormatHelper.GetPayWay(PayWay), OrderDetails = new List <TOrderDetail>() { detail } }; os.TOrderBll.SaveOrder(order); TOrder o = os.TOrderBll.Get(orderId); decimal amount = 0;//除扣除账户余额外还需要支付金额 amount = total; //if (total > minfo.Amount) //{ // amount = total - minfo.Amount; //} //else { // //账户支付 //} #region 转至支付接口 if (PayWay.ToLower() == "tenpay") { TenPay pay = new TenPay(); pay.UserId = logonUser.UserId; pay.Send(orderId.ToString(), amount.ToString(), pname); } if (PayWay.ToLower() == "chinabank") { ChinaBankPay pay = new ChinaBankPay(); pay.Send(orderId.ToString(), amount.ToString(), pname); // Response.Write("ChinaBank"); } if (PayWay.ToLower() == "alipay") { AliPay pay = new AliPay(); pay.Send(orderId.ToString(), amount.ToString(), pname, logonUser.UserId); // Response.Write("ChinaBank"); } if (PayWay.ToLower() == "useraccount") { MAccount minfo = accs.MAccountBll.GetByUserId(logonUser.UserId); //账户 if (o.Total <= minfo.Amount && (o.Status == (int)OrderStatus.NewOrder)) { //ms.MAccount.AccountExpend(o.OrderId); ////ms.MOrder.UpdateOrder2Paid(o.OrderId, 0, "账户支付", (int)Models.MOrderStateInfo.己付款); //Web.Common.OrderCallBack oCallBack = new MamShare.Mall.Web.Common.OrderCallBack( // o.UserId, o.OrderId, 0, (int)Models.MOrderStateInfo.己付款, "账户支付"); //oCallBack.Update2Paid(); //Hashtable p = new Hashtable(); //p.Add("OrderId", o.OrderId); //RedirectToAction("payok.do", p); os.MAccountBll.AccountExpend(o.OrderId, Utils.TmmUtils.IPAddress()); //账户花销 Common.OrderCallBack oCallBack = new TMM.Core.Common.OrderCallBack(); oCallBack.UserId = o.UserId; oCallBack.OrderId = o.OrderId; oCallBack.PayWay = 0; oCallBack.Status = (int)OrderStatus.IsPaied; oCallBack.PayDetail = "账户支付"; oCallBack.GotoUrl = "/my/purchase.do"; oCallBack.ExecAfterPaid(); } else { Redirect("NetPay.do?orderid=" + o.OrderId); } } #endregion RenderView("pay"); }