微信支付 偶尔成功偶尔失败

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csu_passer/article/details/86503957

日常有的Bug

在测试的时候遇到了这样神奇的问题,有时候能够成功支付,而有时候就支付失败。
别慌,虽然花了我很多时间debug,最后终于找到原因了。
也许你也是这个原因呢?看看吧。

解决办法

吐槽:微信支付的错误信息真的无语,只给了一个failed能看出啥嘛…
直接说解决办法:
我是在用户一进入页面的使用wx.config进而获取用户地址,然后在支付的时候微信授权登录,再进行支付。
偶尔成功的原因是:我用了缓存,用户登录之后一段时间内可以不登录。获得地址之后一段时间内不再获取地址。因此实际上有时候没有使用wx.config进行注册。当我在缓存时间有效的情况下进入支付时支付不成功的,因为没有使用wx.config获取支付权限…

那么就这样解决吧,每次提交支付请求前先wx.config一下。

如果一直支付失败呢?很有可能是参数写错或者支付请求地址和微信后台配置不一致

展开阅读全文

socket api实现表单自动提交数据,偶尔成功偶尔失败!

03-18

为什么提交不了呢?好象修改一下表单提交的内容 偶尔又能返回200 OK,真是百思不得其解,那位高人给讲解下,POST的数据,HTTP报头等要注意那些格式.基本代码如下:rnrn[code=C/C++]rnint main()rnrn rn char request[MAX_REQUEST_LEN];rn memset(request,0,MAX_REQUEST_LEN);rnrn char header[]="POST /wp-content/themes/fresh/comments-ajax.php HTTP/1.1\r\n"rn "Accept: */*\r\n"rn "Accept-Language: zh-cn\r\n"rn "x-prototype-version: 1.4.0\r\n"rn "Referer: http://www.dunsh.org/2008/03/12/barrel/\r\n"rn "Content-Type: application/x-www-form-urlencoded\r\n"rn "UA-CPU: x86\r\n"rn "Accept-Encoding: gzip, deflate\r\n"rn "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)\r\n"rn "Host: www.dunsh.org\r\n"rn "Content-Length: %d\r\n"rn "Connection: Keep-Alive\r\n"rn "Pragma: no-cache\r\n"rn "Cookie: __utmc=6926887\r\n\r\n";rnrn char contents[] ="author=%e5%b8%b8%e5%b1%b1%e5%ad%90%e9%be%99 &email=liqisong611%40yahoo.com.cn&"rn "url=&submit=%E6%8F%90%E4%BA%A4&comment_post_ID=789&comment=fsdgdsfgdfgdfgupupup&_=";rnrnrn rn rn char szAddrName[] = "www.dunsh.org";rn rn SOCKADDR_IN saServer; rn LPHOSTENT lphostent; rn SOCKET hsocket;rn int nRet; rn rn // 通过域名获得目标WebServer的IP rn if(isalpha(szAddrName[0])) /* server address is a name*/ rn rn lphostent = gethostbyname(szAddrName); rn rn else rn rn unsigned long addr = inet_addr(szAddrName); rn lphostent = gethostbyaddr((const char*)&addr,4,AF_INET); rn rn rn if(lphostent==NULL)rn rn printf("Cannot resolve address,error code:%d\n",WSAGetLastError());rn return 0; rn rnrn hsocket = socket(AF_INET,SOCK_STREAM,0); rn if(hsocket==INVALID_SOCKET)rn rn printf("Failed socket(),error code:%d\n",WSAGetLastError()); rn return 0; rn rn saServer.sin_family = AF_INET; rn saServer.sin_port = htons(80); rn saServer.sin_addr= *((LPIN_ADDR)*lphostent->h_addr_list); rn rn nRet = connect(hsocket,(sockaddr*)&saServer,sizeof(saServer)); rn if(nRet==SOCKET_ERROR) rn rn printf("Failed connect(),error code:%d\n",WSAGetLastError());rn closesocket(hsocket); rn return 0; rn rn rn int nContentLen = strlen(contents);rn wsprintf(request,header,nContentLen);rn strcat(request,contents);rn printf("%s\n",request);rn nRet = TCPsend(hsocket,request,strlen(request),0);rn char dest[3000]; rn nRet=1; rn int senlen=0;rn memset(dest,0,3000);rn rn nRet =recv(hsocket,dest,3000,0);rn rn printf("%s\n",dest);rn closesocket(hsocket);rn return 0;rnrnrn[/code]rnrn测试的一个网址:http://www.dunsh.org/2008/03/12/barrel/ 论坛

没有更多推荐了,返回首页