/** * 卡前置模式 额外需要的参数 */ private SortedDictionary <string, string> getMoreParamDict(SortedDictionary <string, string> sParaTemp) { string no_agree = ""; if (!YinTongUtil.isnull(Request["no_agree"])) { no_agree = Request["no_agree"].Trim(); } string card_no = Request["card_no"].Trim(); if (!YinTongUtil.isnull(no_agree)) { sParaTemp.Add("no_agree", no_agree); sParaTemp.Add("back_url", "http://www.lianlianpay.com/"); sParaTemp.Add("id_type", "0"); //证件类型 sParaTemp.Add("id_no", "410782198912151334"); //身份证 sParaTemp.Add("acct_name", "连连"); sParaTemp.Add("flag_modify", "1"); } else { // 商户从自己系统中读取用户信息填入,这里写死了,须修改 sParaTemp.Add("id_type", "0"); //证件类型 sParaTemp.Add("id_no", "410782198912151334"); //身份证 sParaTemp.Add("acct_name", "张三"); sParaTemp.Add("flag_modify", "1"); sParaTemp.Add("card_no", card_no); //银行卡号 sParaTemp.Add("back_url", "http://www.lianlianpay.com/"); } return(sParaTemp); }
public void button1Clicked(object sender, EventArgs args) { //组织参数 SortedDictionary <string, string> sParaTemp = getBaseParamDict(); //加签 string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form id='payBillForm' action='" + ServerURLConfig.PAY_URL + "' method='post'>"); foreach (KeyValuePair <string, string> temp in sParaTemp) { sbHtml.Append("<input type='hidden' name='" + temp.Key + "' value='" + temp.Value + "'/>"); } //submit按钮控件请不要含有name属性 sbHtml.Append("<input type='submit' value='tijiao' style='display:none;'></form>"); sbHtml.Append("<script>document.forms['payBillForm'].submit();</script>"); string sHtmlText = sbHtml.ToString(); Response.Write(sHtmlText); }
protected void timer_Tick(object sender, EventArgs e) { //timer.Enabled = false; OrderInfo info = new OrderInfo(lblOrderID.Text); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); Encoding encoding = Encoding.GetEncoding("utf-8"); sParaTemp.Add("no_order", info.OrderNO);//20170425140229 sParaTemp.Add("oid_partner", LigerRM.Common.Payment.WeChartParentConfig.OID_PARTNER); sParaTemp.Add("sign_type", WeChartParentConfig.SIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, WeChartParentConfig.TRADER_PRI_KEY, WeChartParentConfig.MD5_KEY); sParaTemp.Add("sign", sign); HttpWebResponse response = CreatePostHttpResponse(ServerURLConfig.WECHARTQUERY_URL, sParaTemp, encoding); Stream stream = response.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html Dictionary <string, string> ret = new Dictionary <string, string>(); ret = JSONHelper.FromJson <Dictionary <string, string> >(html); if (ret["ret_code"] == "000000" && ret.Keys.Contains("pay_status") && ret["pay_status"] == "0") { Response.Redirect("ReturnUrl.aspx?OrderID=" + lblOrderID.Text); timer.Enabled = false; } }
public void SetSign() { var dic = GetDic(); string sign2 = YinTongUtil.addSign(dic, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sign = sign2; }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Console.WriteLine("接收支付异步通知数据:【" + sPara.ToString() + "】"); if (!YinTongUtil.checkSign(sPara, PartnerConfig.YT_PUB_KEY, //验证失败 PartnerConfig.MD5_KEY)) { Response.Write(@"{""ret_code"":""9999"",""ret_msg"":""验签失败""}"); Console.WriteLine("支付异步通知验签失败"); return; } else { Response.Write(@"{""ret_code"":""0000"",""ret_msg"":""交易成功""}"); Response.Write("支付异步通知数据接收处理成功"); } } else { Response.Write(@"{""ret_code"":""9999"",""ret_msg"":""交易失败""}"); } // 解析异步通知对象 // sPara 字典对象 // TODO:更新订单,发货等后续处理 }
/// <summary> /// API付款 /// </summary> /// public string cashpay(M_LLPay p) { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); sParaTemp.Add("api_version", PartnerConfig.CashVERSION); // sParaTemp.Add("acct_name", HttpUtility.UrlEncode(p.Acct_name)); sParaTemp.Add("acct_name", p.Acct_name); sParaTemp.Add("card_no", p.Card_no); sParaTemp.Add("no_order", p.No_order); sParaTemp.Add("dt_order", p.Dt_order); sParaTemp.Add("money_order", p.Money_order); sParaTemp.Add("flag_card", "0"); // sParaTemp.Add("info_order", HttpUtility.UrlEncode("P2P投资回款")); sParaTemp.Add("info_order", "P2P投资回款"); sParaTemp.Add("notify_url", PartnerConfig.PAYNOTIFY_URL); sParaTemp.Add("city_code", p.City_code); sParaTemp.Add("bank_code", p.Bank_code); //sParaTemp.Add("brabank_name", HttpUtility.UrlEncode(p.Brabank_name)); sParaTemp.Add("brabank_name", p.Brabank_name); sParaTemp.Add("sign_type", PartnerConfig.CASHSIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.CashTRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); string reqJson = YinTongUtil.dictToJson(sParaTemp); YinTongUtil.writelog("付款银行卡卡bin信息查询-请求报文[" + reqJson + "]"); string responseJSON = postJson(ServerURLConfig.CASHPAY_URL, reqJson); return(responseJSON); /* * SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>(); * sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); * sParaTemp.Add("api_version", PartnerConfig.CashVERSION); * sParaTemp.Add("acct_name", "张长江"); * sParaTemp.Add("card_no", "9559980014443530812"); * sParaTemp.Add("no_order", "20150908120120"); * sParaTemp.Add("dt_order", "20150908120120"); * sParaTemp.Add("money_order", "0.05"); * sParaTemp.Add("flag_card", "0"); * sParaTemp.Add("info_order", "p2p投资回款"); * sParaTemp.Add("notify_url", PartnerConfig.PAYNOTIFY_URL); * sParaTemp.Add("city_code", "110000"); * sParaTemp.Add("bank_code", "01030000"); * sParaTemp.Add("brabank_name", "丽泽桥支行"); * sParaTemp.Add("sign_type", PartnerConfig.SIGN_TYPE); * string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); * sParaTemp.Add("sign", sign); * string reqJson = YinTongUtil.dictToJson(sParaTemp); * YinTongUtil.writelog("银行卡卡bin信息查询-请求报文[" + reqJson + "]"); * string responseJSON = postJson(ServerURLConfig.CASHPAY_URL, reqJson); * return responseJSON; */ }
public bool CheckSign() { var dic = GetDic(); var a = YinTongUtil.checkSign(dic, PartnerConfig.YT_PUB_KEY, //验证失败 PartnerConfig.MD5_KEY); return(a); }
/** * 基本参数字典 */ private SortedDictionary <string, string> getBaseParamDict() { /**订单信息**/ // 商户唯一订单号 string no_order = YinTongUtil.getCurrentDateTimeStr(); // 商户订单时间 string dt_order = YinTongUtil.getCurrentDateTimeStr(); // 交易金额 单位为RMB-元 string money_order = WIDmoney_order.Text.Trim(); // 商品名称 string name_goods = WIDname_goods.Text.Trim(); // 订单描述 string info_order = "用户购买" + name_goods; /** 商户提交参数**/ string version = PartnerConfig.VERSION; //接口版本号 string oid_partner = LLYTPay.PartnerConfig.OID_PARTNER; //商户编号 string user_id = Request ["user_id"].Trim(); //用户ID string sign_type = PartnerConfig.SIGN_TYPE; //签名类型:RSA/MD5 string busi_partner = PartnerConfig.BUSI_PARTNER; //业务类型 虚拟商品销售 string notify_url = PartnerConfig.NOTIFY_URL; //接收异步通知地 string url_return = PartnerConfig.URL_RETURN; //支付结束后返回地址 string userreq_ip = Request.UserHostAddress; //IP * string url_order = ""; string valid_order = "10080"; // 订单有效期 单位分钟,可以为空,默认7天 string timestamp = YinTongUtil.getCurrentDateTimeStr(); //时间戳 SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("version", version); sParaTemp.Add("oid_partner", oid_partner); sParaTemp.Add("user_id", user_id); sParaTemp.Add("sign_type", sign_type); sParaTemp.Add("busi_partner", busi_partner); sParaTemp.Add("no_order", no_order); sParaTemp.Add("dt_order", dt_order); sParaTemp.Add("name_goods", name_goods); sParaTemp.Add("info_order", info_order); sParaTemp.Add("money_order", money_order); sParaTemp.Add("notify_url", notify_url); sParaTemp.Add("url_return", url_return); sParaTemp.Add("userreq_ip", userreq_ip); sParaTemp.Add("url_order", url_order); sParaTemp.Add("valid_order", valid_order); sParaTemp.Add("timestamp", timestamp); sParaTemp.Add("risk_item", createRiskItem()); sParaTemp.Add("id_type", "0"); //证件类型 sParaTemp.Add("id_no", "410782198912151334"); //身份证 sParaTemp.Add("acct_name", "张三"); sParaTemp.Add("flag_modify", "1"); return(sParaTemp); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { lblOrderID.Text = YinTongUtil.getCurrentDateTimeStr(); lblGoodsName.Text = "出租屋测试支付"; lblCount.Text = "1"; lblCost.Text = "0.01"; lblMemo.Text = "无"; } }
/// <summary> /// 卡bin校验查询 /// </summary> /// public string queryCardBin() { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); sParaTemp.Add("card_no", Request["card_no"]); sParaTemp.Add("sign_type", PartnerConfig.SIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); string reqJson = YinTongUtil.dictToJson(sParaTemp); Console.WriteLine("银行卡卡bin信息查询-请求报文[" + reqJson + "]"); string responseJSON = Utils.HttpPostByte(ServerURLConfig.QUERY_BANKCARD_URL, reqJson); Console.WriteLine("银行卡卡bin信息查询-响应报文[" + responseJSON + "]"); return(responseJSON); }
public string orderquery(string orderid) { string url = "https://yintong.com.cn/traderapi/orderquery.htm"; SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); sParaTemp.Add("no_order", "" + orderid + ""); sParaTemp.Add("sign_type", PartnerConfig.CASHSIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.CashTRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); string reqJson = YinTongUtil.dictToJson(sParaTemp); YinTongUtil.writelog("代付查询订单信息-请求报文[" + reqJson + "]"); string responseJSON = postJson(url, reqJson); return(responseJSON); }
/// <summary> /// 用户已绑定银行卡信息查询 /// </summary> /// public string queryBankcardList() { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); sParaTemp.Add("user_id", Request["user_id"]); sParaTemp.Add("offset", "0"); sParaTemp.Add("sign_type", PartnerConfig.SIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); string reqJson = YinTongUtil.dictToJson(sParaTemp); Console.WriteLine("用户已绑定银行列表查询-请求报文[" + reqJson + "]"); string responseJSON = postJson(ServerURLConfig.QUERY_USER_BANKCARD_URL, reqJson); Console.WriteLine("用户已绑定银行列表查询-响应报文[" + responseJSON + "]"); return(responseJSON); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Console.WriteLine("接收支付异步通知数据:【" + sPara.ToString() + "】"); if (!YinTongUtil.checkSign(sPara, PartnerConfig.YT_PUB_KEY, //验证失败 PartnerConfig.MD5_KEY)) { Response.Write(@"{""ret_code"":""9999"",""ret_msg"":""验签失败""}"); Console.WriteLine("支付异步通知验签失败"); return; } else { Response.Write(@"{""ret_code"":""0000"",""ret_msg"":""交易成功""}"); Response.Write("支付异步通知数据接收处理成功"); } try { var context = new Agp2p.Linq2SQL.Agp2pDataContext(); var order = context.li_bank_transactions.FirstOrDefault(b => b.no_order == sPara["no_order"]); if (order != null) { context.ConfirmBankTransaction(order.id, null); } } catch (Exception ex) { Response.Write(@"{""ret_code"":""9999"",""ret_msg"":" + ex.Message + "}"); } } else { Response.Write(@"{""ret_code"":""9999"",""ret_msg"":""交易失败""}"); } }
/** * 卡前置模式 额外需要的参数 */ private SortedDictionary <string, string> getParamDict(int _user_id) { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); //查询会员信息 //var user = new BLL.users().GetModel(_user_id); //if (user != null) //{ sParaTemp.Add("id_type", "0"); //证件类型 sParaTemp.Add("id_no", DTRequest.GetFormString("id_card_no")); //身份证 sParaTemp.Add("acct_name", DTRequest.GetFormString("card_username")); sParaTemp.Add("flag_modify", "1"); sParaTemp.Add("back_url", PartnerConfig.URL_BACK); string no_agree = ""; if (!YinTongUtil.isnull(Request["no_agree"])) { no_agree = Request["no_agree"].Trim(); } if (!YinTongUtil.isnull(no_agree)) { sParaTemp.Add("pay_type", "D"); sParaTemp.Add("no_agree", no_agree); } else { string card_no = Request["card_no"].Trim(); sParaTemp.Add("card_no", card_no); } //} //else // throw new InvalidOperationException("找不到会员信息!会员id为:" + _user_id); return(sParaTemp); }
public ResultInfo <string> UnBind(RequestParam <RequestPayEntity> reqst) { var ri = new ResultInfo <string>("99999"); var sql = string.Format("SELECT no_agree FROM dbo.hx_td_LLPay_bindCard WHERE Usrid={0} AND BankCard='{1}'", reqst.body.userId, reqst.body.bankCard); LoggerHelper.Info(sql); var res = DbHelper.Query(sql); if (res != null && res.Tables[0].Rows.Count > 0) { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("oid_partner", PartnerConfig.OID_PARTNER); sParaTemp.Add("user_id", reqst.body.userId); sParaTemp.Add("pay_type", "D"); sParaTemp.Add("no_agree", res.Tables[0].Rows[0]["no_agree"].ToString()); sParaTemp.Add("sign_type", PartnerConfig.SIGN_TYPE); string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); string reqJson = YinTongUtil.dictToJson(sParaTemp); LoggerHelper.Info("解绑-请求报文[" + reqJson + "]"); string responseJSON = HttpHelper.Post(ServerURLConfig.BANK_CARD_UNBIND_URL, reqJson); LoggerHelper.Info(responseJSON); ri.code = "1"; ri.message = ""; ri.body = responseJSON; } return(ri); }
/// <summary> /// 连连复核处理 /// </summary> /// <param name="LLcashid"></param> /// <returns></returns> public ActionResult LLCashPay(int LLcashid) { string str11 = ""; DataTable dt = getinfo(LLcashid); if (dt.Rows.Count > 0) { string no_order = dt.Rows[0]["no_order"].ToString(); M_LLPay m = new M_LLPay(); m.Acct_name = dt.Rows[0]["acct_name"].ToString(); m.Card_no = dt.Rows[0]["card_no"].ToString(); m.No_order = dt.Rows[0]["no_order"].ToString(); m.Dt_order = dt.Rows[0]["dt_order"].ToString(); m.Money_order = dt.Rows[0]["money_order"].ToString(); m.City_code = dt.Rows[0]["city_code"].ToString(); m.Bank_code = dt.Rows[0]["bank_code"].ToString(); m.Brabank_name = dt.Rows[0]["brabank_name"].ToString(); string sql = "update hx_td_LL_cash set paystate=5 where paystate=3 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); BLL.EF.LLpay llp = new BLL.EF.LLpay(); string str = llp.cashpay(m); //Response.Write(str); YinTongUtil.writelog("单个批付及时处理" + no_order + "批付成功 str=" + str); var Objlist = JObject.Parse(str); if (Objlist["ret_code"].ToString() == "0000") { sql = "update hx_td_LL_cash set paystate=1 ,OperTime='" + DateTime.Now.ToString() + "' where paystate= 5 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); // CommonOperate.Show_Msg("批付成功"); str11 = StringAlert.Alert("批付成功"); YinTongUtil.writelog("单个批付及时处理" + no_order + "批付成功 sql=" + sql); Response.End(); } else { sql = "update hx_td_LL_cash set paystate=2 ,OperTime='" + DateTime.Now.ToString() + "' where paystate= 5 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); str11 = StringAlert.Alert("批付失败"); //CommonOperate.Show_Msg("批付失败"); // Response.End(); } YinTongUtil.writelog("前面处理付款:" + str); } return(Content(str11)); // return View(); }
public ActionResult LLCashProcessingmore(string str2) { string json = ""; if (string.IsNullOrEmpty(str2)) { json = @"{""ret"":0,""msg"":""参数错误""}"; } // json = @"{""ret"":-1,""msg"":""功能待完善""}"; string bid = str2; string[] s = bid.Split(new char[] { ',' }); string sqllist = ""; for (int i = 0; i < s.Length; i++) { if (i == s.Length - 1) { sqllist = sqllist + "'" + s[i] + "'"; } else { sqllist = sqllist + "'" + s[i] + "',"; } } string sql = " select LLcashid,no_order,dt_order,money_order,acct_name,province_code,city_code,brabank_name,ordertime,card_no,paystate,Usrid,BankName,bank_code from V_LL_Cash_User where LLcashid in (" + sqllist + ") and h_state=1 and paystate=3"; DataTable dt = DbHelperSQL.GET_DataTable_List(sql); int succ = 0, lost = 0; for (int i = 0; i < dt.Rows.Count; i++) { M_LLPay m = new M_LLPay(); m.Acct_name = dt.Rows[i]["acct_name"].ToString(); m.Card_no = dt.Rows[i]["card_no"].ToString(); m.No_order = dt.Rows[i]["no_order"].ToString(); m.Dt_order = dt.Rows[i]["dt_order"].ToString(); m.Money_order = dt.Rows[i]["money_order"].ToString(); m.City_code = dt.Rows[i]["city_code"].ToString(); m.Bank_code = dt.Rows[i]["bank_code"].ToString(); m.Brabank_name = dt.Rows[i]["brabank_name"].ToString(); sql = "update hx_td_LL_cash set paystate=5 where paystate=3 and LLcashid in (" + sqllist + ") "; DbHelperSQL.RunSql(sql); BLL.EF.LLpay llp = new BLL.EF.LLpay(); string str = llp.cashpay(m); string no_order = dt.Rows[i]["no_order"].ToString(); var Objlist = JObject.Parse(str); if (Objlist["ret_code"].ToString() == "0000") { sql = "update hx_td_LL_cash set paystate=1,OperTime='" + DateTime.Now.ToString() + "' where paystate=5 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); // CommonOperate.Show_Msg("批付成功"); YinTongUtil.writelog(no_order + "批量批付成功sql=" + sql); succ = succ + 1; //Response.End(); } else { // CommonOperate.Show_Msg("批付失败"); sql = "update hx_td_LL_cash set paystate=2,OperTime='" + DateTime.Now.ToString() + "' where paystate=5 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); // CommonOperate.Show_Msg("批付成功"); YinTongUtil.writelog(no_order + "批付失败sql=" + sql); lost = lost + 1; } // Response.Write(dt.Rows[i]["card_no"].ToString() + str + "<br>"); YinTongUtil.writelog(dt.Rows[i]["card_no"].ToString() + "批处理付款:" + str); } json = @"{""ret"":1,""msg"":""成功AB笔,失败BB笔""}"; json = json.Replace("AB", succ.ToString()).Replace("BB", lost.ToString()); return(Content(json, "text/json")); }
protected void btnNext_Click(object sender, EventArgs e) { SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); OrderInfo info = new OrderInfo(lblOrderID.Text); if (rbUnion.Checked) { /**订单信息**/ // 商户订单时间 string dt_order = YinTongUtil.getCurrentDateTimeStr(); // 交易金额 单位为RMB-元 string money_order = lblCost.Text; // 商品名称 string name_goods = lblGoodsName.Text; // 订单描述 string info_order = lblGoodsName.Text; /** 商户提交参数**/ string version = PartnerConfig.VERSION; //接口版本号 string oid_partner = LigerRM.Common.Payment.PartnerConfig.OID_PARTNER; //商户编号 string user_id = SysContext.CurrentUserID.ToString(); string sign_type = PartnerConfig.SIGN_TYPE; //签名类型:RSA/MD5 string busi_partner = PartnerConfig.BUSI_PARTNER; //业务类型 虚拟商品销售 string notify_url = PartnerConfig.NOTIFY_URL; //接收异步通知地 string url_return = PartnerConfig.URL_RETURN; //支付结束后返回地址 string userreq_ip = Request.UserHostAddress; //IP * string url_order = ""; string valid_order = "10080"; // 订单有效期 单位分钟,可以为空,默认7天 string timestamp = YinTongUtil.getCurrentDateTimeStr(); //时间戳 if (!string.IsNullOrEmpty(info.DTOrder)) { sParaTemp.Add("version", info.Version); sParaTemp.Add("oid_partner", info.OidPartner); sParaTemp.Add("user_id", info.UserId); sParaTemp.Add("sign_type", info.SignType); sParaTemp.Add("busi_partner", info.BusiPartner); sParaTemp.Add("no_order", info.OrderID); sParaTemp.Add("dt_order", info.DTOrder); sParaTemp.Add("name_goods", info.OrderDesc); sParaTemp.Add("info_order", info.OrderDesc); sParaTemp.Add("money_order", info.Cost); sParaTemp.Add("notify_url", info.NotifyUrl); sParaTemp.Add("url_return", info.ReturnUrl); sParaTemp.Add("userreq_ip", info.RequestIP); sParaTemp.Add("url_order", info.OrderUrl); sParaTemp.Add("valid_order", info.OrderValid); sParaTemp.Add("timestamp", info.Timestamp); sParaTemp.Add("risk_item", "pass"); sParaTemp.Add("sign", info.Sign); } else { sParaTemp.Add("version", version); sParaTemp.Add("oid_partner", oid_partner); sParaTemp.Add("user_id", user_id); sParaTemp.Add("sign_type", sign_type); sParaTemp.Add("busi_partner", busi_partner); sParaTemp.Add("no_order", lblOrderID.Text); sParaTemp.Add("dt_order", dt_order); sParaTemp.Add("name_goods", name_goods); sParaTemp.Add("info_order", info_order); sParaTemp.Add("money_order", money_order); sParaTemp.Add("notify_url", notify_url); sParaTemp.Add("url_return", string.Format(url_return, lblOrderID.Text)); sParaTemp.Add("userreq_ip", userreq_ip); sParaTemp.Add("url_order", url_order); sParaTemp.Add("valid_order", valid_order); sParaTemp.Add("timestamp", timestamp); sParaTemp.Add("risk_item", "pass"); //加签 string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, PartnerConfig.MD5_KEY); sParaTemp.Add("sign", sign); info.OrderID = lblOrderID.Text; info.DTOrder = dt_order; info.OidPartner = oid_partner; info.UserId = user_id; info.KeyID = string.Empty; info.Sign = sign; info.SignType = sign_type; info.PayType = ((int)OrderInfo.PaymentType.Card).ToString(); info.BusiPartner = busi_partner; info.Version = version; info.OrderDesc = info_order; info.NotifyUrl = notify_url; info.ReturnUrl = string.Format(url_return, lblOrderID.Text); info.RequestIP = userreq_ip; info.OrderUrl = url_order; info.OrderValid = valid_order; info.Timestamp = timestamp; info.Risk = "pass"; info.DimensionUrl = string.Empty; info.CreatedBy = user_id; info.CreateDate = DateTime.Now; info.Status = ((int)OrderInfo.OrderStatus.NotPay).ToString(); OrderDetailInfo dInfo = new OrderDetailInfo(); dInfo.OrderDetailID = YinTongUtil.getCurrentDateTimeStr(); dInfo.OrderID = info.OrderID; dInfo.GoodsName = lblGoodsName.Text; dInfo.Cost = lblCost.Text; info.DetailInfos.Add(dInfo); OrderHelper helper = new OrderHelper(); helper.AddOrder(info); } StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form id='payBillForm' action='" + ServerURLConfig.PAY_URL + "' method='post'>"); foreach (KeyValuePair <string, string> temp in sParaTemp) { sbHtml.Append("<input type='hidden' name='" + temp.Key + "' value='" + temp.Value + "'/>"); } //submit按钮控件请不要含有name属性 sbHtml.Append("<input type='submit' value='tijiao' style='display:none;'></form>"); sbHtml.Append("<script>document.forms['payBillForm'].submit();</script>"); string sHtmlText = sbHtml.ToString(); Response.Write(sHtmlText); } if (rbWeChart.Checked) { string url = ServerURLConfig.WECHARTPAY_URL; Encoding encoding = Encoding.GetEncoding("utf-8"); /**订单信息**/ // 商户唯一订单号 //string no_order = YinTongUtil.getCurrentDateTimeStr(); // 商户订单时间 string dt_order = YinTongUtil.getCurrentDateTimeStr(); // 交易金额 单位为RMB-元 string money_order = lblCost.Text; // 商品名称 string name_goods = lblGoodsName.Text; // 订单描述 string info_order = lblGoodsName.Text; /** 商户提交参数**/ string version = WeChartParentConfig.VERSION; //接口版本号 string oid_partner = LigerRM.Common.Payment.WeChartParentConfig.OID_PARTNER; //商户编号 //string user_id = Request["user_id"].Trim(); //用户ID string sign_type = WeChartParentConfig.SIGN_TYPE; //签名类型:RSA/MD5 string busi_partner = WeChartParentConfig.BUSI_PARTNER; //业务类型 虚拟商品销售 string notify_url = WeChartParentConfig.NOTIFY_URL; //接收异步通知地 string url_return = WeChartParentConfig.URL_RETURN; //支付结束后返回地址 string userreq_ip = Request.UserHostAddress; //IP * string url_order = ""; string valid_order = "10080"; // 订单有效期 单位分钟,可以为空,默认7天 string timestamp = YinTongUtil.getCurrentDateTimeStr(); //时间戳 //sParaTemp.Add("version", version); sParaTemp.Add("no_order", lblOrderID.Text); sParaTemp.Add("oid_partner", oid_partner); sParaTemp.Add("money_order", money_order); sParaTemp.Add("dt_order", dt_order); sParaTemp.Add("notify_url", notify_url); sParaTemp.Add("info_order", info_order); sParaTemp.Add("name_goods", name_goods); sParaTemp.Add("pay_type", ((int)OrderInfo.PaymentType.WeChart).ToString()); sParaTemp.Add("risk_item", "pass"); sParaTemp.Add("sign_type", sign_type); string sign = YinTongUtil.addSign(sParaTemp, WeChartParentConfig.TRADER_PRI_KEY, WeChartParentConfig.MD5_KEY); sParaTemp.Add("sign", sign); HttpWebResponse response = CreatePostHttpResponse(url, sParaTemp, encoding); Stream stream = response.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html Dictionary <string, string> returnStr = JSONHelper.FromJson <Dictionary <string, string> >(html); if (returnStr["ret_code"] == "000000" && returnStr.Keys.Contains("pay_status") && returnStr["pay_status"] == "1") { info.OrderID = lblOrderID.Text; info.DTOrder = dt_order; info.OidPartner = oid_partner; info.UserId = SysContext.CurrentUserID.ToString(); info.KeyID = string.Empty; info.Sign = sign; info.PayType = ((int)OrderInfo.PaymentType.WeChart).ToString(); info.SignType = sign_type; info.BusiPartner = busi_partner; info.Version = version; info.OrderDesc = info_order; info.NotifyUrl = notify_url; info.ReturnUrl = string.Format(url_return, lblOrderID.Text); info.RequestIP = userreq_ip; info.OrderUrl = url_order; info.OrderValid = valid_order; info.Timestamp = timestamp; info.Risk = "pass"; info.DimensionUrl = string.Empty; info.CreatedBy = SysContext.CurrentUserID.ToString(); info.CreateDate = DateTime.Now; info.Status = ((int)OrderInfo.OrderStatus.NotPay).ToString(); OrderDetailInfo dInfo = new OrderDetailInfo(); dInfo.OrderDetailID = YinTongUtil.getCurrentDateTimeStr(); dInfo.OrderID = info.OrderID; dInfo.GoodsName = lblGoodsName.Text; dInfo.Cost = lblCost.Text; info.DimensionUrl = returnStr["dimension_url"]; info.OrderNO = returnStr["no_order"]; info.DetailInfos.Add(dInfo); OrderHelper helper = new OrderHelper(); helper.AddOrder(info); string imgurl = QRCodeHelper.CreateQR(returnStr["dimension_url"]); //helper.UpdateDemitionUrl(lblOrderID.Text, returnStr["dimension_url"], returnStr["no_order"]); timer.Enabled = true; imgCode.ImageUrl = "~/images/" + imgurl; lblTitle.Text = "微信支付-扫面下方二维码完成支付"; ScriptManager.RegisterStartupScript(btnNext, btnNext.GetType(), "show", "javascript:showdiv();", true); } } }
public ActionResult ReLLCash(string no_order, int bu) { //原页面路径:/admin/ReLLCash.aspx string json = ""; if (string.IsNullOrEmpty(no_order) || bu <= 0) { json = @"{""ret"":0,""msg"":""参数错误""}"; } if (bu > 0 && no_order != "") { //生成连连新支付单号 string LLNew_ordid = YinTongUtil.getCurrentDateTimeStr(); string sql = " select Acct_name,Card_no,no_order,dt_order,money_order,city_code,bank_code,brabank_name from hx_td_LL_cash where paystate=2 and no_order='" + no_order + "' "; // sql = " select OutAcctId,InAcctId,TransAmt from hx_td_LLpay_re_cash where htype=0 and h_state=0 and OrdId='" + OrdId + "' and no_order='" + no_order + "'"; DataTable dt = DbHelperSQL.GET_DataTable_List(sql); if (dt.Rows.Count > 0) { string Remarks = "原订单号:" + no_order + " 支付失败 替新订单 " + LLNew_ordid + " 重新支付 <br>"; sql = "update hx_td_LL_cash set no_order='" + LLNew_ordid + "' ,Remarks='" + Remarks + "' where paystate=2 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); sql = " update hx_td_LLpay_re_cash set no_order='" + LLNew_ordid + "' where htype=1 and no_order='" + no_order + "'"; DbHelperSQL.RunSql(sql); M_LLPay m = new M_LLPay(); m.Acct_name = dt.Rows[0]["acct_name"].ToString(); m.Card_no = dt.Rows[0]["card_no"].ToString(); m.No_order = LLNew_ordid; m.Dt_order = dt.Rows[0]["dt_order"].ToString(); m.Money_order = dt.Rows[0]["money_order"].ToString(); m.City_code = dt.Rows[0]["city_code"].ToString(); m.Bank_code = dt.Rows[0]["bank_code"].ToString(); m.Brabank_name = dt.Rows[0]["brabank_name"].ToString(); sql = "update hx_td_LL_cash set paystate=5 where paystate=2 and no_order='" + LLNew_ordid + "'"; DbHelperSQL.RunSql(sql); BLL.EF.LLpay llp = new BLL.EF.LLpay(); string str = llp.cashpay(m); Response.Write(str); YinTongUtil.writelog("单个重新批付及时处理" + no_order + "批付成功 str=" + str); var Objlist = JObject.Parse(str); if (Objlist["ret_code"].ToString() == "0000") { sql = "update hx_td_LL_cash set paystate=1 ,OperTime='" + DateTime.Now.ToString() + "' where paystate= 5 and no_order='" + LLNew_ordid + "'"; DbHelperSQL.RunSql(sql); json = @"{""ret"":1,""msg"":""重新批付成功""}"; // CommonOperate.Show_Msg("重新批付成功 :" + sql); YinTongUtil.writelog("单个重新批付及时处理" + no_order + "批付成功 "); Response.End(); } else { sql = "update hx_td_LL_cash set paystate=2 ,OperTime='" + DateTime.Now.ToString() + "' where paystate= 5 and no_order='" + LLNew_ordid + "'"; DbHelperSQL.RunSql(sql); json = @"{""ret"":0,""msg"":""批付失败""}"; //CommonOperate.Show_Msg("批付失败"); Response.End(); } YinTongUtil.writelog("前面处理付款:" + str); } } //json = @"{""ret"":-1,""msg"":""功能待完善""}"; return(Content(json, "text/json")); }
static void Main(string[] args) { //com.lianlianpay.security.utils.LianLianPaySecurity.isNull("1"); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("acct_name", "测试"); //版本号 sParaTemp.Add("api_version", "1.0"); //版本号 sParaTemp.Add("bank_name", "招商银行"); sParaTemp.Add("card_no", "6245882402098823"); sParaTemp.Add("dt_order", DateTime.Now.ToString("yyyyMMddHHmmss")); sParaTemp.Add("flag_card", "0"); sParaTemp.Add("info_order", "打款");//订单描述 sParaTemp.Add("money_order", "0.01"); sParaTemp.Add("no_order", DateTime.Now.ToString("yyyyMMddHHmmss")); sParaTemp.Add("notify_url", "http://ht.laidaibei.com/notify_url.aspx"); sParaTemp.Add("oid_partner", "201609130000219023");//商户编号 sParaTemp.Add("platform", "jd.com"); sParaTemp.Add("sign_type", "RSA"); //签名 string sign = YinTongUtil.addSign(sParaTemp, PartnerConfig.TRADER_PRI_KEY, string.Empty); sParaTemp["sign"] = sign; string reqJson = YinTongUtil.dictToJson(sParaTemp); var json = ""; try { json = com.lianlianpay.security.utils.LianLianPaySecurity.encrypt(reqJson, PartnerConfig.YT_PUB_KEY); } catch (Exception ex) { Console.WriteLine("异常信息:" + ex.ToString()); } var http = (HttpWebRequest)WebRequest.Create(new Uri("https://instantpay.lianlianpay.com/paymentapi/payment.htm")); http.Accept = "application/json"; http.ContentType = "application/json"; http.Method = "POST"; Console.WriteLine(reqJson); var pay = ($"{{\"pay_load\":\"{json}\",\"oid_partner\":\"{PartnerConfig.OID_PARTNER}\"}}").Replace("\r\n", "\\r\\n"); byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(pay); Stream newStream = http.GetRequestStream(); newStream.Write(bytes, 0, bytes.Length); newStream.Close(); var response = http.GetResponse(); var stream = response.GetResponseStream(); var sr = new StreamReader(stream); var content = sr.ReadToEnd(); //调用付款申请接口,同步返回0000,是指创建连连支付单成功,订单处于付款处理中状态,最终的付款状态由异步通知告知 //出现1002,2005,4006,4007,4009,9999这6个返回码时或者没返回码,抛exception(或者对除了0000之后的code都查询一遍查询接口)调用付款结果查询接口, //明确订单状态,不能私自设置订单为失败状态,以免造成这笔订单在连连付款成功了,而商户设置为失败,用户重新发起付款请求,造成重复付款,商户资金损失 Console.WriteLine(content); //对连连响应报文内容需要用连连公钥验签 Console.ReadKey(); }