工行在线支付接口实战开发流程及源码
工行在线支付接口实战开发流程及源码
作为刚毕业的我来说,第一次开发在线支付功能,还是工行的,真的是被坑死了,和工行的技术真的是太难沟通了,而且那个技术明显是他们接口问题还死不承认,总是让我细读开发文档,结果我代码什么都没改,他调试接口后可以运行支付了,他无话可说……希望这篇能让一些人少走一些弯路。进入正题:
一、 前期准备
- 支付组件注册(PS:当时工行技术根本没有给我这个组件,被坑了,当时还想骂那个技术一下,签名什么的,难道我随便按照自己的想法签一个也可以?后来终于给我了)
组件注册说明
一、API配置说明:
1.将ICBCEBankUtil.dll和infosecapi.dll两个dll文件拷贝到系统system32目录下(其中,如果是64位系统,则拷贝到SysWOW64目录下);
2.打开DOS窗口,进入system32目录/SysWOW64目录;
3.运行“regsvr32 ICBCEBankUtil.dll”命令注册控件;
二、函数说明:
1、初始化
init(
BSTR certFN,银行证书文件名
BSTR certFNM,商户证书文件名
BSTR keyFN,私钥文件名
BSTR key私钥保护口令
)
返回值:
-100:银行证书文件名传递错
-101:商户证书文件名传递错
-102:私钥文件名传递错
-103:私钥保护口令传递错
-110:打开银行证书文件错
-111:打开商户证书文件错
-112:打开私钥文件错
2、签名
signC(
BSTR src,明文字符串
int srcLen,明文长度
)
返回值:
如果成功则返回BASE64编码后的签名串,否则返回空串
如果返回空串,可调用getRC取得错误码
3、获取错误码(只在出错时有效)
getRC
返回值
-100:明文字符串传递错误
-1:明文错误
-2:私钥错
-3:私钥解密错
-4:私钥保护口令错
4、验证签名
verifySignC(
BSTR src,明文字符串
int srcLen,明文字符串长度
BSTR sSrc,签名BASE64编码字符串
int sSrcLen签名BASE64编码字符串长度
)
返回值:
0:成功
-1:验证失败
-2:解码失败
-100:明文字符串传递有误
-101:签名字符串传递有误
5、获取证书
getCert(
int which证书类型:0银行证书,1商户证书
)
返回值:BASE64编码后的证书
注册好以后将infosecapi.dll引用到项目中。
2.证书引用
然后将public.crt、商户.crt、商户.key 这三个文件放到项目某个文件夹下
二、 开发阶段
- 首先必须细读:《中国工商银行网上银行新B2C在线支付接口说明V1.0.0.11》这个文档(PS:工行人员当时没有给我这个文档,打电话过去问技术,技术让我细读这个文档,根本没有这个文档,还说他发给客户了的,问客户也说没有发过,当时真的是被坑好多,后来网上找到了一个)。
- 以下是源码:
/// <summary>/// 工商银行签名验证类/// </summary>public class ICBCTest{string strCertFN = @"f:\aa\ahhfycYQHLTEST.pfx";string strCertFNM = @"f:\aa\ahhfyc.crt";string strKeyFN = @"f:\aa\ahhfyc.key";//string strCertFN = System.Web.HttpContext.Current.Server.MapPath(@"user\user.crt");//string strCertFNM = System.Web.HttpContext.Current.Server.MapPath(@"user\user.crt");//string strKeyFN = System.Web.HttpContext.Current.Server.MapPath(@"user\user.key");//string strKey = "12345678";string strKey = "12345678";/// <summary>/// 获取工商银行验证信息/// </summary>/// <returns></returns>public ICBC GetCheckInfo(ICBC argIcbc){string strMerSignMsg = string.Empty;B2CUtil icbcObj = new B2CUtil();if (icbcObj.init(strCertFN, strCertFNM, strKeyFN, strKey) == 0){//对订单数据进行签名,得到订单签名数据 MerSignMsg argIcbc.MerSignMsg = icbcObj.signC(argIcbc.TranData, argIcbc.TranData.Length);//证书公钥 商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串 argIcbc.MerCert = icbcObj.getCert(1);argIcbc.TranData = Base64Encode(argIcbc.TranData);}else{return null;}return argIcbc;}/// <summary>/// 获取工商银行验证信息/// </summary>/// <returns></returns>public ICBC GetCheckReturnInfo(ICBC argIcbc){string strMerSignMsg = string.Empty;B2CUtil icbcObj = new B2CUtil();if (icbcObj.init(strCertFN, strCertFNM, strKeyFN, strKey) == 0){argIcbc.TranData = Base64Decode(argIcbc.TranData);if (icbcObj.verifySignC(argIcbc.TranData, argIcbc.TranData.Length, argIcbc.MerSignMsg, argIcbc.MerSignMsg.Length) == 0) //判断验证银行签名是否成功 {argIcbc.IsCheck = true;}elseargIcbc.IsCheck = true;}else{argIcbc.IsCheck = false;}return argIcbc;}///<summary>///转成Base64形式的System.String///</summary>///<param name="str"></param>///<returns></returns>public static string Base64Encode(string str){byte[] b = System.Text.Encoding.Default.GetBytes(str);//转成Base64形式的System.Stringreturn Convert.ToBase64String(b);}public static string Base64Encode(Byte[] b){///转成Base64形式的System.Stringreturn Convert.ToBase64String(b);}///<summary>/// Base64转回到原来的 System.String///</summary>///<param name="str"></param>///<returns></returns>public static string Base64Decode(string str){byte[] c = Convert.FromBase64String(str);//转回到原来的 System.Stringreturn System.Text.Encoding.Default.GetString(c);}}
/// <summary>/// 工行实体信息类/// </summary>public class ICBC{//private string _orderPostUrl = "https://mybank.icbc.com.cn/servlet/ICBCINBSEBusinessServlet";//private string _orderPostUrl = "https://mybank3.dccnet.com.cn/servlet/NewB2cMerPayReqServlet";private string _orderPostUrl = "https://myipad.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";//private string _interfaceName = "ICBC_PERBANK_B2C";private string _interfaceName = "ICBC_PERBANK_B2C";private string _interfaceVersion = "1.0.0.11";private string _orderid;private string _amount;private string _curType = "001";//private string _merID = "1302EC23361694";private string _merID = "1302EC23928826";//private string _merAcct = "1302010119022149867";private string _merAcct = "1302010119022141605";private string _verifyJoinFlag = "0";private string _notifyType = "HS";private string _merURL;private string _resultType = "1";private string _orderDate = DateTime.Now.ToString("yyyyMMddHHmmss");private string _merSignMsg;private string _merCert;private string _goodsID = "10021";private string _goodsName = "XXXX";private string _goodsNum;private string _carriageAmt;private string _remark1;private string _remark2;private string _merHint;private string _tranData;private string _merReference = "www.XXX.com";//private string _merReference = "localhost";private bool _isCheck = false;/// <summary>/// 是否检测成功/// </summary>public bool IsCheck{get { return _isCheck; }set { _isCheck = value; }}public string MerReference{get { return _merReference; }set { _merReference = value; }}/// <summary>/// 报文数据/// </summary>public string TranData{get { return _tranData; }set { _tranData = value; }}/// <summary>/// 工商支付接口路径/// </summary>public string OrderPostUrl{get { return _orderPostUrl; }set { _orderPostUrl = value; }}/// <summary>/// 接口名称/// </summary>public string InterfaceName{get { return _interfaceName; }set { _interfaceName = value; }}/// <summary>/// 接口版本号/// </summary>public string InterfaceVersion{get { return _interfaceVersion; }set { _interfaceVersion = value; }}/// <summary>/// 订单号/// </summary>public string Orderid{get { return _orderid; }set { _orderid = value; }}/// <summary>/// 订单金额/// </summary>public string Amount{get { return _amount; }set { _amount = value; }}/// <summary>/// 支付币种 RMB:001/// </summary>public string CurType{get { return _curType; }set { _curType = value; }}/// <summary>/// 商户代码/// </summary>public string MerID{get { return _merID; }set { _merID = value; }}/// <summary>/// 商户账号 /// </summary>public string MerAcct{get { return _merAcct; }set { _merAcct = value; }}/// <summary>/// 检验联名标志/// 取值“1”:客户支付时,网银判断该客户是否与商户联名,是则按上送金额扣帐,否则展现未联名错误;/// 取值“0”:不检验客户是否与商户联名,按上送金额扣帐。/// </summary>public string VerifyJoinFlag{get { return _verifyJoinFlag; }set { _verifyJoinFlag = value; }}/// <summary>/// 通知类型/// 取值“HS”:在交易完成后实时将通知信息以HTTP协议POST方式,主动发送给商户,发送地址为商户端随订单数据提交的接收工行支付结果的URL即表单中的merURL字段;/// 取值“AG”:在交易完成后不通知商户。商户需使用浏览器登录工行的B2C商户服务网站,或者使用工行提供的客户端程序API主动获取通知信息。/// </summary>public string NotifyType{get { return _notifyType; }set { _notifyType = value; }}/// <summary>/// 返回商户URL/// </summary>public string MerURL{get { return _merURL; }set { _merURL = value; }}/// <summary>/// 结果发送类型/// </summary>public string ResultType{get { return _resultType; }set { _resultType = value; }}/// <summary>/// 交易日期时间/// </summary>public string OrderDate{get { return _orderDate; }set { _orderDate = value; }}/// <summary>/// 订单签名数据/// </summary>public string MerSignMsg{get { return _merSignMsg; }set { _merSignMsg = value; }}/// <summary>/// 商城证书公钥/// </summary>public string MerCert{get { return _merCert; }set { _merCert = value; }}/// <summary>/// 商品编号/// </summary>public string GoodsID{get { return _goodsID; }set { _goodsID = value; }}/// <summary>/// 商品名称/// </summary>public string GoodsName{get { return _goodsName; }set { _goodsName = value; }}/// <summary>/// 商品数量/// </summary>public string GoodsNum{get { return _goodsNum; }set { _goodsNum = value; }}/// <summary>/// 已含运费金额/// </summary>public string CarriageAmt{get { return _carriageAmt; }set { _carriageAmt = value; }}/// <summary>/// 备注字段1/// </summary>public string Remark1{get { return _remark1; }set { _remark1 = value; }}/// <summary>/// 备注字段2/// </summary>public string Remark2{get { return _remark2; }set { _remark2 = value; }}/// <summary>/// 商城提示/// </summary>public string MerHint{get { return _merHint; }set { _merHint = value; }}}
以下为支付页面逻辑代码:
public partial class trainpay : System.Web.UI.Page{public ICBC icmcModel = new ICBC();ICBCTest it = new ICBCTest();BLL.PXBCourse bllPXBCourse = new BLL.PXBCourse();public string money;protected void Page_Load(object sender, EventArgs e){if (pxbID != 0 && courseID != "" && UserId != ""){//string ccid = Request.QueryString["cid"];//Random rnd = new Random();//int n = rnd.Next(1000, 9999);//string orderId = DateTime.Now.ToString("yyyyMMddHHmmss") + n.ToString();//订单号string datetime = DateTime.Now.AddDays(-1).ToString("yyyyMMddHHmmss");//总价try{//string ii = bllPXBCourse.Getbymoney(courseID,pxbID);string ii = "1";if (ii != ""){//money = ii + "00"; money = ii;}else{//money = "0.01"; Response.Write("金额出错,请联系管理员!");Response.End();}}catch{Response.Write("金额出错,请联系管理员!");Response.End();}//数据处理 StringBuilder strXml = new StringBuilder();strXml.Append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\"?>");strXml.Append("<B2CReq>");//接口名称 strXml.Append("<interfaceName>" + icmcModel.InterfaceName + "</interfaceName>");//接口版本号 strXml.Append("<interfaceVersion>" + icmcModel.InterfaceVersion + "</interfaceVersion>");//订单信息 strXml.Append("<orderInfo>");//交易日期时间 strXml.Append("<orderDate>" + icmcModel.OrderDate + "</orderDate>");//支付币种 strXml.Append("<curType>" + icmcModel.CurType + "</curType>");//商户代码 strXml.Append("<merID>" + icmcModel.MerID + "</merID>");//订单信息列表 strXml.Append("<subOrderInfoList>");//订单信息 strXml.Append("<subOrderInfo>");//订单编号 strXml.Append("<orderid>" + OrderId + "</orderid>");//订单金额 strXml.Append("<amount>" + money + "</amount>");//分期付款期数 1代表全额付款 strXml.Append("<installmentTimes>1</installmentTimes>");//商户账号 strXml.Append("<merAcct>" + icmcModel.MerAcct + "</merAcct>");//商品编号 strXml.Append("<goodsID>" + DateTime.Now.ToString("yyyyMMddHHmmss").ToString() + "</goodsID>");//商品名称 strXml.Append("<goodsName>" + GetPxbname(pxbID) + "</goodsName>");//商品数量 strXml.Append("<goodsNum>1</goodsNum>");//已含运费金额 strXml.Append("<carriageAmt>0</carriageAmt>");strXml.Append("</subOrderInfo>");strXml.Append("</subOrderInfoList>");strXml.Append("</orderInfo>");strXml.Append("<custom>");//检验联名标志 取值“1”:客户支付时,网银判断该客户是否与商户联名 strXml.Append("<verifyJoinFlag>" + icmcModel.VerifyJoinFlag + "</verifyJoinFlag>");//语言版本 取值:“EN_US”为英文版;取值:“ZH_CN”或其他为中文版 strXml.Append("<Language>ZH_CN</Language>");strXml.Append("</custom>");strXml.Append("<message>");//支持订单支付的银行卡种类 strXml.Append("<creditType>2</creditType>");//通知类型 strXml.Append("<notifyType>HS</notifyType>");//结果发送类型 strXml.Append("<resultType>1</resultType>");//商户reference strXml.Append("<merReference>" + icmcModel.MerReference + "</merReference>");//客户端IP 当商户reference项送空时,该项必输 strXml.Append("<merCustomIp></merCustomIp>");//虚拟商品/实物商品标志位 取值“0”:虚拟商品 取值“1”,实物商品 strXml.Append("<goodsType>1</goodsType>");//买家用户号 strXml.Append("<merCustomID>" + UserId + "</merCustomID>");//买家联系电话 strXml.Append("<merCustomPhone>110</merCustomPhone>");//收货地址 strXml.Append("<goodsAddress></goodsAddress>");//订单备注 strXml.Append("<merOrderRemark></merOrderRemark>");//商城提示 strXml.Append("<merHint></merHint>");//备注字段1 strXml.Append("<remark1></remark1>");//备注字段2 strXml.Append("<remark2></remark2>");//返回商户URL strXml.Append("<merURL>http://www.XXX.com/pay/PayReturn.aspx</merURL>");//返回商户变量//strXml.Append("<merVAR>" + OrderId + "," + UserId + "," + pxbID + "," + courseID + "</merVAR>"); strXml.Append("<merVAR>" + OrderId + "," + UserId + "</merVAR>");strXml.Append("</message>");strXml.Append("</B2CReq>");icmcModel.TranData = strXml.ToString();icmcModel = it.GetCheckInfo(icmcModel);//Payment paymo = new Payment();//PaymentBLL paybll = new PaymentBLL();//paymo.oid = OrderId;//paymo.uid = UserId;//paymo.pid = pxbID.ToString();//paymo.cid = courseID;//paymo.ispay = 0;//0初始化订单,1支付成功,2支付失败,3签名失败,4数据异常//paymo.nopay = 1;//线上1,线下2//paymo.ordertime = DateTime.Now;//paybll.Add(paymo); }else{Response.Write("数据非法提交,请正常付费!");Response.End();}}//用户public string UserId{get{VerifyUser vuser = new VerifyUser();return vuser.GetUserID;}}//订单号public string OrderId{get{string sid = string.Empty + Request.QueryString["oid"];return sid;}}private BLL.PaymentBLL paymentBll = new PaymentBLL();//培训班public int pxbID{get{//string sid = string.Empty + Request.QueryString["pid"]; Payment payment = paymentBll.GetModelbyoid(OrderId);string sid = payment.pid.ToString();int id = 0;if (!int.TryParse(sid, out id))return 0;return id;}}//课程编号public string courseID{get{//string cid = Request.QueryString["cid"]; Payment payment = paymentBll.GetModelbyoid(OrderId);string cid = payment.cid;cid = cid.Replace("x", ",");return cid;}}//培训班名称public string GetPxbname(int pxbid){Community.BLL.PXB bll = new BLL.PXB();string name = "";Community.Model.PXB model = bll.GetModel(pxbid);if (model != null){name = model.Name;}return name;}}
以下是支付页面代码:
<body><form name="sendOrder" method="post" action="<%= icmcModel.OrderPostUrl %>" id="order"><input type="hidden" name="interfaceName" value="<%= icmcModel.InterfaceName %>"><input type="hidden" name="interfaceVersion" value="<%= icmcModel.InterfaceVersion %>"><input type="hidden" name="tranData" value="<%= icmcModel.TranData %>"><input type="hidden" name="merSignMsg" value="<%= icmcModel.MerSignMsg %>"><input type="hidden" name="merCert" value="<%= icmcModel.MerCert %>"></form><script type="text/javascript">document.order.submit();</script></body>
以下是支付返回页面:
public partial class PayReturn : System.Web.UI.Page{public ICBC icmcModel = new ICBC();protected void Page_Load(object sender, EventArgs e){ICBCTest it = new ICBCTest();if (Request.Form["notifyData"] != null){Payment paymo = new Payment();PaymentBLL paybll = new PaymentBLL();try{//PaymentBLL paybll = new PaymentBLL(); ICBCTest icbcCheck = new ICBCTest();ICBC icbcInfo = new ICBC();icbcInfo.TranData = Request.Form["notifyData"];icbcInfo.MerSignMsg = Request.Form["signMsg"].ToString();icbcInfo = icbcCheck.GetCheckReturnInfo(icbcInfo);//自定义返回string strOrderSN = Request.Form["merVAR"].ToString();string[] arrorder = strOrderSN.Split(',');string oid = arrorder[0];string uid = arrorder[1];int pid = Convert.ToInt32(arrorder[2]);string cid = arrorder[3];if (icbcInfo.IsCheck)//处理签名 {DataSet myds = new DataSet();StringReader strReader = new StringReader(icbcInfo.TranData);myds.ReadXml(strReader);DataTable mytable = new DataTable();mytable = myds.Tables["bank"];if (null != mytable && mytable.Rows.Count > 0){if (mytable.Rows[0]["tranStat"].ToString().Trim() == "1"){//这里做成功操作try{//入库处理 BLL.PXBCourse bllPXBCourse = new BLL.PXBCourse();BLL.PXBUsers pxbUser = new BLL.PXBUsers();string b = cid;string[] arrtemp = b.Split('x');for (int i = 0; i < arrtemp.Length; i++){int courseid = int.Parse(arrtemp[i]);int addi = bllPXBCourse.Addcoursechoose(uid, courseid, pid);}//付费成功的同时也报名成功int res = pxbUser.GetRecordCount(" userid='" + uid + "' and pxbid=" + pid);if (res == 0){Model.PXBUser user = new Model.PXBUser();user.PXBID = pid;user.UserID = uid;user.BYWay = 1;user.CJWay = 1;//如果当前人不在当前培训班,则报名 pxbUser.Add(user);}// <param name="nopay">支付方式:1为线上支付,2为线下支付</param>// <param name="ispay">支付状态:0初始化订单,1支付成功,2支付失败,3签名失败,4数据异常,5支付中</param>// <param name="oid">订单号</param> paybll.Updatepay(1,1, oid);//支付成功 Response.Write("http://122.225.101.115:444/FirstPage.aspx");Response.End();}catch{paybll.Updatepay(1,4, oid);//数据异常 Response.Write("数据异常,请联系管理员!");Response.End();}}else{paybll.Updatepay(1,2, oid);//支付失败 Response.Write("支付失败,请联系管理员!");Response.End();}}}else{paybll.Updatepay(1,3, oid);//签名失败 Response.Write("签名失败,请联系管理员!");Response.End();}}catch{Response.Write("数据异常,请联系管理员!");Response.End();}}else{Response.Write("返回失败,请联系管理员!");Response.End();}}}
然而,比较重要的一个还有支付查询页面,防止比如支付成功了,但由于网络异常等原因没有返回支付成功数据等情况下使用。
以下是支付查询页面逻辑代码:
public partial class openpay : System.Web.UI.Page{/// <summary>/// 银行证书文件地址/// </summary>static string strCertFN = System.Web.HttpContext.Current.Server.MapPath(@"user\user.crt");/// <summary>/// 商户证书文件地址/// </summary>static string strCertFNM = System.Web.HttpContext.Current.Server.MapPath(@"user\user.crt");/// <summary>/// 私钥文件名/// </summary>//static string strKeyFN = System.Web.HttpContext.Current.Server.MapPath(@"user\user.key");static string strKeyFN = System.Web.HttpContext.Current.Server.MapPath(@"user\kjks-sy.key");/// <summary>/// 私钥口令/// </summary>static string strKey = "12345678";// static string api_url = "https://corporbank.icbc.com.cn/servlet/ICBCINBSEBusinessServlet";//static string api_url = "https://corporbank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";static string api_url = "https://myipad.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";//static string post_params = "APIName=EAPI&APIVersion=001.001.002.001&MerReqData=";static string post_params = "APIName=kjks.y.1302&APIVersion=0.0.1.0&MerReqData=";static string cert_path = HttpContext.Current.Server.MapPath("~/..");protected void Page_Load(object sender, EventArgs e){string outMess;string mess = CheckOrder("201408041357171136 ", "20140804", "1302EC23361694", "1302010119022149867", out outMess);}/// <summary>/// 查询订单/// </summary>/// <param name="strOrderNum">订单号</param>/// <param name="strTranDate">交易日期</param>/// <param name="strShopCode">商家代码</param>/// <param name="strShopAccount">商城账号</param>/// <param name="errInfo"></param>/// <returns></returns>public static string CheckOrder(string strOrderNum, string strTranDate, string strShopCode, string strShopAccount, out string errInfo){try{errInfo = string.Empty;StringBuilder sb = new StringBuilder();sb.Append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><ICBCAPI><in><orderNum>");sb.Append(strOrderNum);sb.Append("</orderNum><tranDate>");sb.Append(strTranDate);sb.Append("</tranDate><ShopCode>");sb.Append(strShopCode);sb.Append("</ShopCode><ShopAccount>");sb.Append(strShopAccount);sb.Append("</ShopAccount></in></ICBCAPI>");string post_data = post_params + sb.ToString();string retruenstring = PostDataBySSL(post_data, api_url, cert_path, strKey, out errInfo);//var result = SpringFactory.BusinessFactory.GetBusinessAnonymousUser();//result.AddLogs("返回3:" + (retruenstring.Length > 400 ? retruenstring.Substring(0, 400) : retruenstring));if (retruenstring.Length <= 5){return retruenstring;}return HttpUtility.UrlDecode(retruenstring);}catch{errInfo = "查询缴费接口失败";return "99";}}/// <summary>/// 发送SSL加密请求/// </summary>/// <param name="post_data"></param>/// <param name="url"></param>/// <param name="cert_path"></param>/// <param name="cert_password"></param>/// <param name="errInfo"></param>/// <returns></returns>public static string PostDataBySSL(string post_data, string url, string cert_path, string cert_password, out string errInfo){errInfo = string.Empty;try{ASCIIEncoding encoding = new ASCIIEncoding();byte[] data = encoding.GetBytes(post_data);if (cert_path != string.Empty)ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);WebRequest webRequest = WebRequest.Create(url);HttpWebRequest httpRequest = webRequest as HttpWebRequest;if (cert_path.ToLower().EndsWith(".cer")){httpRequest.ClientCertificates.Add(X509Certificate.CreateFromCertFile(cert_path));}else{//SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(cert_path); httpRequest.ClientCertificates.Add(new X509Certificate2(cert_path, cert_password, X509KeyStorageFlags.MachineKeySet));}httpRequest.KeepAlive = true;httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)";httpRequest.ContentType = "application/x-www-form-urlencoded";httpRequest.Method = "POST";httpRequest.ContentLength = data.Length;Stream requestStream = httpRequest.GetRequestStream();requestStream.Write(data, 0, data.Length);requestStream.Close();Stream responseStream = null;responseStream = httpRequest.GetResponse().GetResponseStream();string stringResponse = string.Empty;if (responseStream != null){using (StreamReader responseReader =new StreamReader(responseStream, Encoding.GetEncoding("GBK"))){stringResponse = responseReader.ReadToEnd();}responseStream.Close();}return stringResponse;}catch (Exception e){errInfo = e.Message;// SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(e.Message);return string.Empty;}}public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors){return true;}}
三、注意事项
根据本人被坑死的经历,告诉大家注意以下事项:
1.在支付发送数据时,支付金额应该是以“分”为单位,也就是金额是一个整数。
2.在进行测试的时候,订单提交时间必须和他们服务器时间一致,而他们,工行测试服务器时间是被他们设置了的,根本不是正常时间,最重要的一点是,时间每天都在变化,比如今天是2016年8月22号,明天可能是2016年8月26号之类的,之前他们没有直接诶告诉我,被坑死了。时间不对,支付不了哦。
3.在测试时,支付成功后不会跳转到我们的支付返回地址,这个也必须注意一下,这也是他们测试服务器的原因,本人在这里也是被坑了,这样的话我们也无法更新本地订单支付状态表。
本来很久之前就该写好的了,当时技术经理让我做完这个功能写一篇技术文档给后来人借鉴下的,可惜一直比较懒,现在我敬爱的技术经理都走了,我遇到的第一位温柔可亲的还对我这么好的技术经理居然都走了(PS:是个男的哦),真的很不舍。我多希望我们部门能尽快找到一位新的技术经理,带我飞,至少我才踏入这个社会,很多东西需要学习,有人给我引路,我会少走很多弯路,进步更快一些。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- android移动支付——支付宝支付
前言这里开篇讲解一系列的android相关的移动支付。移动支付也称为手机支付,用户使用移动的设备,完成对所购买商品或者服务的支付功能。包括远程支付(网上支付、短信支付),近场支付(刷卡、滴卡、pos机)。 国内的移动支付方式: 支付宝,微信,银联,百度钱包,QQ钱包,财付通,…...
2024/4/20 23:19:03 - 详述支付路由的设计方案
正文在支付的过程中,用户在前端选择一种支付方式,比如使用招行借记卡来支付后,系统不一定就是调用招行的接口来执行支付。支付宝、微信、易宝支付等第三方支付平台以及银联等,都支持招行借记卡支付,这种将支付方式落地到具体的支付接口的模块,就是支付路由。1 设计目标支…...
2024/4/20 23:19:02 - JavaWeb项目练习--支付模块、后台部分模块(手风琴下拉菜单、上传技术)
易宝支付在线支付的两种形式:1. 电商与银行直连!安全不收手续费不与小电商合作!2. 第三台支付平台支付宝易宝财富通好处:不安全收手续费(1%)小电商可以与其合作!需要在第三方注册账户需要认证!我们有一个易宝的测试账户钱转过去就要不回来了!易宝支付1 去银行易宝给了…...
2024/4/20 23:19:01 - 网关支付、银联代扣通道、快捷支付、银行卡支付等网上常见支付方式接口说明
一、网关支付这是在线支付的最普遍形式。 大致支付过程:第三方支付公司作为代理(网关),接入一堆银行。用户在网关页面(可以在商户端,也可以第三方支付平台端)选择银行,页面跳转到第三方支付平台,然后重定向到对应的银行,用户在银行电子银行官网,采用网银(个人网银或…...
2024/4/25 3:30:11 - 易宝——在线支付
1.在线支付的两种常见支付方式和采用第三方支付公司的支付流程。第三方支付公司的支付流程:2.易宝:参考内容 商户账号:p1_MerId=10001126856秘钥:keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl加密算法:PaymentUtil.java请求参数处理:PayServl…...
2024/4/20 23:18:59 - android 支付接口
转载http://blog.csdn.net/hujiameihuxu/article/details/9886679的博客关于在线支付平台,目前国内主要有以下几种 paypal 支付宝,财付通,盛付通,易宝支付,快钱,银联在线,国付宝,网易宝,汇付天下等等。 手机支付平台,调研了支付宝,支付宝,财付通,盛付通,paypal,…...
2024/4/20 21:22:09 - 传智播客之网上支付笔记(三)
笔记(三)主要是出现一些问题的解决方案,有些错误确实犯的特么逗比,自己都不忍直视,但是慢慢来吧,不着急不着急 五、问题总结 1、出现下单失败问题 InvalidParamException 问题原因:merchantInfo.properties获取的商户ID和商户密钥不匹配或者压根不存在这个商户ID 解决办法…...
2024/4/20 21:22:07 - 第三方支付接口搜集
刚整理的几个接口文档记录 支付接口搜集 08年1月 第三方支付接口 1. 快钱支付 2. 支付宝 3. YeePay易宝 4. 邮局支付(网汇通) 5. 安付通 6. 网银(chinabank) 7. PayPal贝宝 8. ips环迅支付 9. 腾讯财付通 10. NPS网…...
2024/4/20 21:22:07 - 今天发现易宝(yeepay)充值卡类支付方式可能存在的安全漏洞!
这二天应朋友之托,要为他的游戏增加一个在线充值功能,因为支付宝/快钱等比较大牌的公司申请商户都要营业执照或付费,于是他选择了易宝支付(www.yeepay.com),下载了SDk开发文档看了下,功能还蛮全的,而且比较贴心的是易宝提供了二种模式:测试模式和生产模式,测试模式下不必…...
2024/4/26 0:04:34 - 哪个支付接口好?如何选择支付接口
可能刚接触第三方支付行业的商户对接口这一块不太了解,面对这么多的第三方支付平台不知道如何选择一个合适的接口,那么我就说一下什么接口适合你。个人商户: 个人商户的话由于每天的流水量不是太高,选择支付接口的话尽量选择一些费率比较低的接口,因为所有的接口平台在费率…...
2024/4/28 8:32:44 - 第三方支付接口
第三方支付接口1. 快钱支付 2. 支付宝 3. YeePay易宝 4. 邮局支付(网汇通) 5. 安付通 6. 网银(chinabank) 7. PayPal贝宝 8. ips环迅支付 9. 腾讯财付通 10. NPS网上支付系统 1.快钱支付(银行/邮政汇) (https://www…...
2024/4/20 23:18:57 - 支付接口示例代码
第三方支付接口 1. 快钱支付 2. 支付宝 3. YeePay易宝 4. 邮局支付(网汇通) 5. 安付通 6. 网银(chinabank) 7. PayPal贝宝 8. ips环迅支付 9. 腾讯财付通 10. NPS网上支付系统1.快钱支付(银行/邮政汇) (https://www…...
2024/4/20 23:18:57 - 支付宝在线支付接口开发教程
1.什么是第三方支付所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。目前提供第三方支付的机构很多…...
2024/4/20 23:18:55 - 第三方支付接口现号,第三方支付接口对接,第三方支付接口申请
第三方支付公司太多,到目前为止一共有5批206家拿牌支付公司:国付宝,支付宝,环迅,汇潮,易宝,快钱,智付,等等不管您从事与哪家,我们都必须面对这些事实,每家支付公司都有自己的优势跟劣势。 目前国家对第三方支付平台的管控越来越严格,导致目前第三方支付平台的申请越…...
2024/4/20 23:18:54 - 支付宝支付接入(安全基础 - 生成公钥 私钥)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 原文:https://fuwu.alipay.com/platform/doc.htm#c02一、概述支付宝支付采用了RSA加密签名…...
2024/4/20 23:18:54 - 支付宝接口开发总结(php)
支付宝接口开发总结1、需要向客户要的东西:、PID、Key、企业支付宝的账号2、前期准备:注册好企业账号,然后申请支付套餐:https://b.alipay.com/order/productSet.htm 建议申请【网银支付】+【即时到账收款】(可以不申请)。里面的方案按各自的需求选择“套餐“类型去申请。3…...
2024/4/20 23:18:53 - asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付
第三方支付接口快钱支付支付宝YeePay易宝邮局支付(网汇通)安付通网银(chinabank)PayPal贝宝ips环迅支付腾讯财付通NPS网上支付系统...
2024/4/20 23:18:52 - java第三方网上支付
一、网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付。1.直接和银行对接。2.使用第三方支付平台3.常见的第三方支付平台二、使用易宝支付接口实现java网上支付功能(农业银行)。1.完整源代码:https://github.c…...
2024/4/20 23:18:50 - PHP在线支付接口集成教程
网上支付(支付宝,财付通,易宝,银联)是电子支付的一种形式,它是通过第三方提供的与银行之间的支付接口进行的即时支付方式,这种方式的好处在于可以直接把资金从用户的银行卡中转账到网站账户中,汇款马上到账,不需要人工确认。客户和商家之间可采用信用卡、电子钱包、电子…...
2024/4/20 23:18:49 - 调用支付宝第三方支付接口详解(沙箱环境)
首发地址:Java知音 注:这里的支付是沙箱模拟支付注册蚂蚁金服开放平台蚂蚁金服开放平台注册地址 支付宝扫码登陆 -> 注册为自主研发者2. 配置你的沙箱支付宝支付宝提供一键生成工具便于开发者生成一对RSA2密钥:https://docs.open.alipay.com/291/105971 该工具使用需要jav…...
2024/4/20 23:18:49
最新文章
- Vue3+ts(day05:ref、props、生命周期、hook)
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】,记录一下学习笔记,用于自己复盘,有需要学…...
2024/5/3 13:14:37 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 探索进程控制第一弹(进程终止、进程等待)
文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么?进程终止的情况代码跑完,结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...
2024/5/1 13:05:31 - 浅聊什么是Redis?
需求:MySQL面临大量的查询,即读写操作,因此类比CPU,给数据加缓存,Redis诞生。应用程序从MySQL查询的数据,在Redis设置缓存(记录在内存中,无需IO操作),后再需要…...
2024/5/2 22:15:36 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57