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");
问题解决