支付宝接口支付完成不跳转return_url也不异步返回notify_url的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42760466/article/details/88076999

return_url和notify_url
       今天因为一个支付demo出问题弄了两个多小时,使用了支付宝支付接口支付,接受到了表单,并且完成了支付。然而作为商家的服务器端并不知道用户是否进行了付款,这时候就会用到return_url和notify_url这两个参数,前者是支付成功跳转的页面,后者是支付状态发生改变(如:用户付款完成)请求的url路径。
       当时demo的代码如下,去掉了很多选填字段:

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setBizContent("{" +
                "\"out_trade_no\":\"20150320010101001\"," +
                "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                "\"total_amount\":0.01," +
                "\"subject\":\"Iphone6 16G\"," +
                "\"body\":\"Iphone6 16G\"," +
				"\"return_url\":\"我的跳转地址\"," +
				"\"notify_url\":\"支付宝异步通知我的地址\"," +
                "\"goods_type\":\"0\"," +
                "\"timeout_express\":\"90m\"," +
                "\"integration_type\":\"ALIAPP\"," +
                "\"request_from_url\":\"https://www.baidu.com\"," +
                "  }");
AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
if(response.isSuccess()){
    System.out.println("调用成功");
} else {
    System.out.println("调用失败");
  }

      然而在我支付成功之后,并没有进行跳转,支付宝也没有异步请求我设置的notify_url。百度了很多文章,也没发现和我一样的错误(可能这个错误太低级了)。

     错误的原因是作为公共请求参数的return_url和notify_url,不能设置在bizContent中。于是将bizContent的json字符串中的两个url去掉,使用如下设置request

request.setReturnUrl("http://gk6v3z.natappfree.cc/share/static/index.html");
request.setNotifyUrl("http://gk6v3z.natappfree.cc/share/goods/testReturn");

    问题解决

展开阅读全文

支付宝接口支付

08-13

此支付为跨境支付。rn手中有一个完成了的线上支付系统,现在的工作是要将商城系统跟跨境支付系统对接在一起,通过支付系统跳转到支付宝的支付平台完成消费者付款。rn现在有两个问题,一个是:根据已有的支付系统API 要求,组装完参数后,再提交到支付宝收银台的时候,出现乱码(参数完全根据支付系统API要求组装的)。rn试过一下方法:支付系统配置了tomcat的编码rn还配置了过滤器代码如下:rnpublic class CodeFilter implements Filter rnrn @Overridern public void init(FilterConfig filterConfig) throws ServletException rn rnrn @Overridern public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)rn throws IOException, ServletException rn request.setCharacterEncoding("utf-8");rn response.setCharacterEncoding("utf-8");rn chain.doFilter(request, response);rn rnrn @Overridern public void destroy() rn rnrn还试过设置提交的编码为UTF-8,都不能管用,内部系统参数显示都正常没有任何乱码;rn[img=https://img-bbs.csdn.net/upload/201708/13/1502615968_246426.png][/img];rn大佬们对于这个问题可有高见。。。。。。中国程序员的伤痛啊rnrn-------------------------------------------------------------------------------------------------------------------------------------------------------------------rn第二个问题:测试时如果第一个订单提交到支付宝上,可以正常出现支付页面,rn[img=https://img-bbs.csdn.net/upload/201708/13/1502616442_565131.png][/img]rn但是,再次选择支付一个订单的时候就会出现以下提示:rn[img=https://img-bbs.csdn.net/upload/201708/13/1502616507_85068.png][/img]rn等过了大概一天以后,又可以选择一个订单支付,正常跳转到支付宝收银台,可以显示支付二维码。这时候要是再次选择一个订单支付又会提示调试错误。。如此循环,我之前没做过支付宝支付接口,一点头绪都没,查资料大部分说是请求有乱码导致的。rn还有就是因为支付宝那里返回的异步通知没有处理。我现在脑子一片萌萌哒。。看谁都萌。大佬们有建议吗??小弟这里先谢了。。 论坛

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面

02-04

问个问题 微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 哪位大神指点一下 谢谢rn[code=javascript]function doWxpay() rn if (typeof('WeixinJSBridge') == "undefined") rn alert('WeixinJSBridge:undefined');rn if (document.addEventListener) rn document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);rn else if (document.attachEvent) rn document.attachEvent('WeixinJSBridgeReady', onBridgeReady);rn document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);rn rn else rn onBridgeReady();rn rn rnrn function onBridgeReady() rn WeixinJSBridge.invoke(rn 'getBrandWCPayRequest', rn "appId": "<%=appId %>", //公众号名称,由商户传入rn "timeStamp": " <%=timeStamp %>",//时间戳,自1970年以来的秒数rn "nonceStr": "<%=nonceStr %>", //随机串rn "package": "<%=package %>",rn "signType": "MD5", //微信签名方式:rn "paySign": "<%=paySign %>" //微信签名 rn ,rn function (res) rn if (res.err_msg == "get_brand_wcpay_request:ok") rn alert("ok");rn window.location.href = "V_WXPayOK.aspx?orderId=<%=partnerid %>";rn // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,rn else rn alert(res.err_msg);rn window.location.href = "V_WXPayFail.aspx?orderId=<%=partnerid %>&action=Cancel";rn rn rn );rn [/code]rn这种方式不可以了吗?rnrn[color=#FF0000]下面代码判断是否成功有误 修改后代码如下:[/color]rnsuccess: function (res) rn if(res.errMsg == "chooseWXPay:ok" ) rn //支付成功rn elsern alert(res.errMsg);rn rn ,rn cancel:function(res)rn //支付取消rn rnrn可参考:http://blog.csdn.net/hefeng_aspnet/article/details/50679495 论坛

异步HttpWebRequest不异步

05-14

看代码,问题在代码中:rn static void Main()rn rn //qq号码rn string qqCode = "289699769";rn HttpWebRequest request = WebRequest.Create("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline") as HttpWebRequest;rn request.Method = "post";rn //下面开始设置标头,不能使用request.Headers.Add或者Set方法 rn request.ContentType = "application/x-www-form-urlencoded";rn Stream reqStream = request.GetRequestStream();rn byte[] arr = Encoding.UTF8.GetBytes("qqCode=" + qqCode);rn reqStream.Write(arr, 0, arr.Length);rn reqStream.Close();rnrn Console.ReadLine();rn //从这里开始异步,在这里之前http请求还没有发送出去,在这里将request传进去rn request.BeginGetResponse(new AsyncCallback(Compleate), request);rn //问题是多次测试发现,每次程序运行到这里都必须要等异步请求返回后执行Compleate(IAsyncResult asyncResult)方法后才执行下面的输出语句,这不就和同步没有区别了吗?想了很久,google搜不到我想要的。好久没发帖,大家都一起来参谋下。rn Console.WriteLine("继续");rn rnrn /// rn /// 异步操作完成后触发的方法rn /// rn /// rn static void Compleate(IAsyncResult asyncResult)rn rn Console.WriteLine("异步完成");rn if (asyncResult == null)rn rn return;rn rn HttpWebRequest req = (asyncResult.AsyncState as HttpWebRequest);rn HttpWebResponse res = req.EndGetResponse(asyncResult) as HttpWebResponse;rn StreamReader reader = new StreamReader(res.GetResponseStream());rn Console.WriteLine(reader.ReadToEnd());rn 论坛

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