protected void Page_Load(object sender, EventArgs e) { // 设置 Response编码格式为GB2312 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); p2_Order = Request.Form["p2_Order"]; p3_Amt = Request.Form["p3_Amt"]; p4_verifyAmt = Request.Form["p4_verifyAmt"]; p5_Pid = Request.Form["p5_Pid"]; p6_Pcat = Request.Form["p6_Pcat"]; p7_Pdesc = Request.Form["p7_Pdesc"]; p8_Url = Request.Form["p8_Url"]; pa_MP = Request.Form["pa_MP"]; pa7_cardAmt = Request.Form["pa7_cardAmt"]; pa8_cardNo = Request.Form["pa8_cardNo"]; pa9_cardPwd = Request.Form["pa9_cardPwd"]; pd_FrpId = Request.Form["pd_FrpId"]; pr_NeedResponse = "1"; pz_userId = Request.Form["pz_userId"]; pz1_userRegTime = Request.Form["pz1_userRegTime"]; try { //非银行卡 正式使用 SZXResult result = SZX.AnnulCard(p2_Order, p3_Amt, p4_verifyAmt, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, pa_MP, pa7_cardAmt, pa8_cardNo, pa9_cardPwd, pd_FrpId, pr_NeedResponse, pz_userId, pz1_userRegTime); if (result.R1_Code == "1") { Response.Write("非银行卡支付请求提交成功"); Response.Write("<br>商户订单号:" + result.R6_Order); Response.Write("<br><br>" + result.ReqResult); } else { Response.Write("非银行卡支付请求提交失败 [" + result.R1_Code + "]" + result.Rq_ReturnMsg); if (result.R1_Code == "11") { Response.Write("-订单号重复"); } else if (result.R1_Code == "7") { Response.Write("-卡密无效"); } else if (result.R1_Code == "61") { Response.Write("-账户未开通"); } Response.Write("<br><br>" + result.ReqUrl); Response.Write("<br><br>" + result.ReqResult); } } catch (Exception ex) { Response.Write(ex.ToString()); } }
public CardPaymentRequestStatus ProcessCardPaymentRequest(CardPayment cardPayment, int retryCount) { var result = CardPaymentRequestStatus.NotRequest; // SZXResult szxResult = PaymentsService.YeepayCardPayments(cardPayment); //卡内金额全部充值 SZXResult szxResult = PaymentsService.YeepayCardPartialPayments(cardPayment); //部分充值 LogHelper.WriteInfo(string.Format("Processing card payment with OrderNo : {0}, request result : {1}", cardPayment.OrderNo, szxResult == null ? "null" : szxResult.R1_Code)); if (szxResult == null || string.IsNullOrEmpty(szxResult.R1_Code)) // retry { if (retryCount == -1) { result = CardPaymentRequestStatus.RequestFailed; } else { cardPayment.RequestDateTime = DateTime.Now; retryCount++; result = CardPaymentRequestStatus.RequestFailed; if (retryCount <= retryTimesLimitation) { RedisService.AddItemToQueue <CardPayment>(BillingConsts.KEY_CARD_PAYMENT_REQUEST_RETRY_QUEUE + retryCount, cardPayment); } else // final failed { Order currentOrder = oracleRepo.Single <Order>(cardPayment.OrderID); SetFailedOrderStatus(CardPaymentRequestStatus.RequestFailed, currentOrder); //record the info for retry manually var cardPaymentInfoForRetry = EntityMapping.Auto <CardPayment, CardPaymentRetry>(cardPayment); var AddRes = oracleRepo.Add <CardPaymentRetry>(cardPaymentInfoForRetry); } } } else { CardPaymentRequestStatus requestStatus = (CardPaymentRequestStatus)szxResult.R1_Code.ToInt32(); Order currentOrder = oracleRepo.Single <Order>(cardPayment.OrderID); if (currentOrder != null) { switch (requestStatus) { case CardPaymentRequestStatus.Success: SetSuccessOrderStatus(currentOrder); result = requestStatus; break; default: SetFailedOrderStatus(requestStatus, currentOrder); result = requestStatus; break; } } } return(result); }
/// <summary> /// /// </summary> /// <param name="order"></param> /// <returns></returns> public string GetPayUrl(string _orderid, string _cardno, string _cardpwd, int _typeId, int cardvalue, out string errmsg) { errmsg = string.Empty; string puserid = this.SuppAccount; string puserkey = this.SuppKey; HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("gb2312"); p2_Order = _orderid; p3_Amt = decimal.Parse(cardvalue.ToString()).ToString("0.00"); p4_verifyAmt = "false"; p5_Pid = "product"; p6_Pcat = "producttype"; p7_Pdesc = "productdesc"; p8_Url = this.SiteDomain + "/notify/YeePay_Card_Return.aspx"; pa_MP = ""; pa7_cardAmt = decimal.Parse(cardvalue.ToString()).ToString("0.00"); pa8_cardNo = _cardno; pa9_cardPwd = _cardpwd; pd_FrpId = CardTypeNo(_typeId); pr_NeedResponse = "1"; pz_userId = puserid; pz1_userRegTime = ""; try { SZXResult result = SZX.AnnulCard(SuppKey, SuppAccount, p2_Order, p3_Amt, p4_verifyAmt, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, pa_MP, pa7_cardAmt, pa8_cardNo, pa9_cardPwd, pd_FrpId, pr_NeedResponse, pz_userId, pz1_userRegTime); if (result.R1_Code == "1") { return("0");//success } if (result.R1_Code == "11") { errmsg = "订单号重复"; return("-1");//订单号重复 } if (result.R1_Code == "7") { errmsg = "卡密无效"; return("-1");//卡密无效 } if (result.R1_Code == "61") { errmsg = "卡密无效"; return("-1");//卡密无效 } errmsg = "未知错误,错误编码:" + result.R1_Code; return("-1");// ("未知错误,错误编码:" + result.R1_Code); } catch (Exception ex) { ExceptionHandler.HandleException(ex); return("-1"); } }
public void update_order_status_when_yeepaycardpayments_return_normal_result() { SZXResult result = new SZXResult("", "1", "", "", "", "", ""); Order currentOrder = new Order { Id = (int)cp.OrderID, }; _paymentsServiceMock.Setup <SZXResult>(s => s.YeepayCardPartialPayments(cp)).Returns(result); _repository.Setup(s => s.Single <Order>(cp.OrderID)).Returns(currentOrder); cardPaymentProcessor.ProcessCardPaymentRequest(cp, 0); _repository.Verify(s => s.Update <Order>(currentOrder)); }
public void update_order_status_and_add_to_CardPaymentCallbackResult_processing_queue_when_yeepaycardpayments_return_abnormal_result() { SZXResult result = new SZXResult("", "-1", "", "", "", "", ""); _paymentsServiceMock.Setup <SZXResult>(s => s.YeepayCardPartialPayments(cp)).Returns(result); _repository.Setup(s => s.Single <Order>(cp.OrderID)).Returns(currentOrder); cardPaymentProcessor.ProcessCardPaymentRequest(cp, 0); // should update order status _repository.Verify(s => s.Update <Order>(currentOrder)); // should put into Q2 //_redisServiceMock.Verify(s => s.AddItemToQueue<PaymentNotification>(BillingConsts.KEY_CARD_PAYMENT_CALLBACK_PROCESSING_QUEUE, It.IsAny<PaymentNotification>())); }
/// <summary> /// /// </summary> /// <param name="info"></param> /// <param name="apiKey"></param> /// <returns></returns> public static string GetResponseText(SZXResult info, string apiKey) { string rHmac = info.R0_Cmd + info.R1_Code + info.R2_TrxId + info.R6_Order + info.Rq_ReturnMsg; rHmac = Lib.Digest.HmacSign(rHmac, apiKey); string text = string.Format("r0_Cmd={1}{0}r1_Code={2}{0}r2_TrxId={3}{0}r6_Order={4}{0}rq_ReturnMsg={5}{0}hmac={6}", '\n' , info.R0_Cmd , info.R1_Code , info.R2_TrxId , info.R6_Order , info.Rq_ReturnMsg , rHmac); return(text); }
/// <summary> /// /// </summary> /// <param name="o"></param> /// <returns></returns> public CardSynchCallBack CardSend(CardOrderSummitArgs o) { var callBack = new CardSynchCallBack(); HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("gb2312"); p2_Order = o.SysOrderNo; p3_Amt = decimal.Parse(o.FaceValue.ToString(CultureInfo.InvariantCulture)).ToString("0.00"); p4_verifyAmt = "false"; p5_Pid = "product"; p6_Pcat = "producttype"; p7_Pdesc = "productdesc"; p8_Url = NotifyUrl; pa_MP = ""; pa7_cardAmt = decimal.Parse(o.FaceValue.ToString(CultureInfo.InvariantCulture)).ToString("0.00"); pa8_cardNo = o.CardNo; pa9_cardPwd = o.CardPass; pd_FrpId = CardTypeNo(o.CardTypeId); pr_NeedResponse = "1"; pz_userId = SuppAccount; pz1_userRegTime = ""; try { SZXResult result = SZX.AnnulCard(SuppKey, SuppAccount, p2_Order, p3_Amt, p4_verifyAmt, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, pa_MP, pa7_cardAmt, pa8_cardNo, pa9_cardPwd, pd_FrpId, pr_NeedResponse, pz_userId, pz1_userRegTime); callBack.Success = 1; callBack.SuppErrorCode = result.R1_Code; callBack.SuppErrorMsg = result.Rq_ReturnMsg; if (result.R1_Code == "1") { callBack.SummitStatus = 1; } } catch (Exception ex) { ExceptionHandler.HandleException(ex); callBack.Success = 0; } return(callBack); }
protected void Page_Load(object sender, EventArgs e) { Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); if (!string.IsNullOrEmpty(FormatQueryString.GetQueryString("p1_MerId")) && !string.IsNullOrEmpty(FormatQueryString.GetQueryString("pz1_userRegTime"))) { #region 这是我的获取第三方接入过来的提交参数 origin_p1_MerId = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p1_MerId"), System.Text.Encoding.GetEncoding("gb2312")); origin_p2_Order = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p2_Order"), System.Text.Encoding.GetEncoding("gb2312")); p3_Amt = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p3_Amt"), System.Text.Encoding.GetEncoding("gb2312")); p4_verifyAmt = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p4_verifyAmt"), System.Text.Encoding.GetEncoding("gb2312")); p5_Pid = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p5_Pid"), System.Text.Encoding.GetEncoding("gb2312")); p6_Pcat = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p6_Pcat"), System.Text.Encoding.GetEncoding("gb2312")); p7_Pdesc = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p7_Pdesc"), System.Text.Encoding.GetEncoding("gb2312")); origin_p8_Url = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("p8_Url"), System.Text.Encoding.GetEncoding("gb2312")); pa_MP = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pa_MP"), System.Text.Encoding.GetEncoding("gb2312")); pa7_cardAmt = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pa7_cardAmt"), System.Text.Encoding.GetEncoding("gb2312")); pa8_cardNo = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pa8_cardNo"), System.Text.Encoding.GetEncoding("gb2312")); pa9_cardPwd = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pa9_cardPwd"), System.Text.Encoding.GetEncoding("gb2312")); pd_FrpId = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pd_FrpId"), System.Text.Encoding.GetEncoding("gb2312")); pr_NeedResponse = "1"; pz_userId = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pz_userId"), System.Text.Encoding.GetEncoding("gb2312")); pz1_userRegTime = System.Web.HttpUtility.UrlDecode(FormatQueryString.GetQueryString("pz1_userRegTime"), System.Text.Encoding.GetEncoding("gb2312")); origin_hmac = FormatQueryString.GetQueryString("hmac"); #endregion #region 这是我修改提交的参数 p1_MerId = ConfigurationManager.AppSettings["p1_MerId"].ToString(); p8_Url = ConfigurationManager.AppSettings["p8_Url"].ToString(); p2_Order = "789" + origin_p2_Order; #endregion #region 业务逻辑的处理 #endregion SZXResult result = SZX.AnnulCard(p2_Order, p3_Amt, p4_verifyAmt, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, pa_MP, pa7_cardAmt, pa8_cardNo, pa9_cardPwd, pd_FrpId, pr_NeedResponse, pz_userId, pz1_userRegTime); #region 提交的返回值处理 //得到的返回的数值 string call_hmac = result.Hmac; string call_r0_cmd = result.R0_Cmd; string call_r1_code = result.R1_Code; string call_r6_order = result.R6_Order; string call_rq_returnmsg = result.Rq_ReturnMsg; string call_req_result = result.ReqResult; string real_call_req_result = ""; if (result.R1_Code.Equals("1")) { real_call_req_result = getReturnValue(call_r1_code, origin_p2_Order, call_rq_returnmsg, origin_hmac); } else { real_call_req_result = getReturnValue(call_r1_code, origin_p2_Order, call_rq_returnmsg, call_hmac); } Response.Write(real_call_req_result); #endregion //p1_MerId = FormatQueryString.GetQueryString("p1_MerId"); //p2_Order = FormatQueryString.GetQueryString("p2_Order"); //p3_Amt = FormatQueryString.GetQueryString("p3_Amt"); //p4_verifyAmt = FormatQueryString.GetQueryString("p4_verifyAmt"); //p5_Pid = FormatQueryString.GetQueryString("p5_Pid"); //p6_Pcat = FormatQueryString.GetQueryString("p6_Pcat"); //p7_Pdesc = FormatQueryString.GetQueryString("p7_Pdesc"); //p8_Url = FormatQueryString.GetQueryString("p8_Url"); //pa_MP = FormatQueryString.GetQueryString("pa_MP"); //pa7_cardAmt = FormatQueryString.GetQueryString("pa7_cardAmt"); //pa8_cardNo = FormatQueryString.GetQueryString("pa8_cardNo"); //pa9_cardPwd = FormatQueryString.GetQueryString("pa9_cardPwd"); //pd_FrpId = FormatQueryString.GetQueryString("pd_FrpId"); //pr_NeedResponse="1"; //pz_userId = FormatQueryString.GetQueryString("pz_userId"); //pz1_userRegTime = FormatQueryString.GetQueryString("pz1_userRegTime"); } }
protected void Page_Load(object sender, EventArgs e) { // 设置 Response编码格式为GB2312 Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); if (!string.IsNullOrEmpty(Request.Form["Cuserspay"]) && !string.IsNullOrEmpty(Request.Form["inputMoney"])) { string pay_username = Request.Form["Cuserspay"]; string PayMoney = Request.Form["inputMoney"]; string payBank = Request.Form["CpayBank"]; string rtypeBank = Request.Form["yx_bank"]; string payTel = string.IsNullOrEmpty(Request.Form["txt_telphone"]) == true? "" : Request.Form["txt_telphone"]; if (rtypeBank != "BANKSEL") { payBank = rtypeBank; } p3_Amt = Convert.ToString(decimal.Parse(PayMoney)); p4_verifyAmt = "false"; p5_Pid = "金币"; p6_Pcat = "1"; p7_Pdesc = "1"; p8_Url = ConfigurationManager.AppSettings["CallBackC"].ToString(); pa_MP = pay_username; pa7_cardAmt = Request.Form["inputMoney"]; pa8_cardNo = Request.Form["pa8_cardNo"]; pa9_cardPwd = Request["pa9_cardPwd"]; pd_FrpId = payBank; pr_NeedResponse = "1"; pz_userId = Convert.ToString(DateTime.Now.ToString("yyyyMMddhhmmss")); pz1_userRegTime = DateTime.Now.ToString(); p2_Order = "CYC" + DateTime.Now.ToString("yyyyMMddhhmmss"); //非银行卡专业版正式使用 try { int payType = 0; switch (payBank) { case "JUNNET": payType = 2; break; case "SNDACARD": payType = 3; break; case "SZX": payType = 4; break; case "ZHENGTU": payType = 5; break; case "QQCARD": payType = 6; break; case "UNICOM": payType = 7; break; case "JIUYOU": payType = 8; break; case "NETEASE": payType = 9; break; case "WANMEI": payType = 10; break; case "SOHU": payType = 11; break; case "TELECOM": payType = 12; break; case "TIANXIA": payType = 13; break; case "TIANHONG": payType = 14; break; case "YPCARD": payType = 16; break; case "ZONGYOU": payType = 17; break; } DataSet ds = new DataSet(); int uid = accountsFacade.GetAccountsId(pay_username); OnLineOrder onlineOrder = new OnLineOrder(); onlineOrder.Accounts = pay_username; onlineOrder.UserID = uid; onlineOrder.OrderAmount = decimal.Parse(PayMoney); onlineOrder.OrderID = p2_Order; onlineOrder.OrderStatus = 0; onlineOrder.ShareID = payType; onlineOrder.CardTotal = 1; onlineOrder.CardTypeID = payType;//卡类充值 onlineOrder.TelPhone = payTel; onlineOrder.IPAddress = GameRequest.GetUserIP(); Message msg = treasureFacade.RequestOrder(onlineOrder); if (!msg.Success) { Response.Redirect("/Tips.aspx?msg=" + msg.Content); } else { //非银行卡专业版正式使用 SZXResult result = SZX.AnnulCard(onlineOrder.OrderID, p3_Amt, p4_verifyAmt, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, pa_MP, pa7_cardAmt, pa8_cardNo, pa9_cardPwd, pd_FrpId, pr_NeedResponse, pz_userId, pz1_userRegTime); if (result.R1_Code == "1") { Response.Redirect("/WiteNetCard.html?OID=" + onlineOrder.OrderID); } else { Response.Redirect("/WiteNetCard.html?OID=" + onlineOrder.OrderID); } } } catch (Exception ex) { Response.Write(ex.ToString()); } } }
/// <summary> /// /// </summary> private void Process() { var szxresult = new SZXResult { R0_Cmd = "AnnulCard", R2_TrxId = Factory.Instance.GenerateOrderId(OrderPrefix), R6_Order = AnnulCardInfo.p2_Order }; string rCode = viviapi.SysInterface.Card.YeePay.AnnulCard.CheckParameter(AnnulCardInfo); if (rCode != "1") { #region 记录日志 if (this.DebuglogOpen) { var debugInfo = new viviapi.Model.Sys.debuginfo { userid = AnnulCardInfo.UserId, addtime = DateTime.Now, bugtype = viviapi.Model.Sys.debugtypeenum.卡类订单, errorcode = rCode, errorinfo = AnnulCardInfo.Msg, userorder = AnnulCardInfo.p2_Order, url = Request.RawUrl, detail = "" }; viviapi.BLL.Sys.Debuglog.Insert(debugInfo); } #endregion } if (rCode == "1") { var orderInfo = InitOrder(szxresult.R2_TrxId, AnnulCardInfo); if (orderInfo == null) { rCode = "-1"; } else { var suppResponse = new CardSynchCallBack(); if (AnnulCardInfo.ProcessMode == 1) { #region 通过接口 var supp = (SupplierCode)AnnulCardInfo.SupplierId; suppResponse = OrderCardUtils.SynchSubmit(supp , szxresult.R2_TrxId , AnnulCardInfo.TypeId , AnnulCardInfo.CardNo , AnnulCardInfo.CardPwd , AnnulCardInfo.OrderAmt , string.Empty , 1); if (suppResponse.SummitStatus == 0) { rCode = "-1"; string viewMsg = suppResponse.SuppErrorMsg; var response = new CardOrderSupplierResponse() { Sync = 1, SupplierId = AnnulCardInfo.SupplierId, SuppTransNo = suppResponse.SuppTransNo, SysOrderNo = szxresult.R2_TrxId, OrderAmt = 0M, SuppAmt = 0M, OrderStatus = 4, SuppErrorCode = suppResponse.SuppErrorCode, Opstate = rCode, SuppErrorMsg = suppResponse.SuppErrorMsg, ViewMsg = viewMsg, Method = 1 }; OrderCardUtils.FinishForSync(orderInfo, response); } else { AnnulCardInfo.Msg = "提卡成功,等待处理结果"; } #endregion } else { #region 系统自已处理 AnnulCardInfo.SupplierId = 0; suppResponse.SuppTransNo = DateTime.Now.ToString("yyyyMMddHHmmssfff"); suppResponse.OrderStatus = 2; suppResponse.SuppErrorMsg = "支付成功"; suppResponse.SuppErrorCode = "0"; suppResponse.SuccAmt = AnnulCardInfo.OrderAmt; #endregion } if (AnnulCardInfo.ProcessMode == 2 || suppResponse.OrderStatus == 2) { #region 系统自处理 var resInfo = new CardProcessResultInfo { supplierId = 0, orderid = szxresult.R2_TrxId, supplierOrder = suppResponse.SuppTransNo, status = 2, opstate = "0", msg = suppResponse.SuppErrorMsg, userViewMsg = suppResponse.SuppErrorMsg, tranAMT = suppResponse.SuccAmt, suppAmt = 0M, errtype = "0", method = AnnulCardInfo.ProcessMode, count = 0 }; AnnulCardInfo.Msg = "提卡成功,等待处理结果"; var process = new SystemProcessCard(); var tmr = new System.Threading.Timer(process.Process, resInfo, 1000, 0); resInfo.tmr = tmr; #endregion } } } szxresult.R1_Code = rCode; szxresult.Rq_ReturnMsg = AnnulCardInfo.Msg; string text = viviapi.SysInterface.Card.YeePay.AnnulCard.GetResponseText(szxresult, ""); Response.Write(text); }