支付宝扫码支付、APP支付
2017-11-01 13:39
253 查看
新版支付宝手机网站支付、支付宝pc支付、支付宝无密退款实现
这些已经介绍过,下面扫码支付也是用IJPay,导入alipay-sdk-java2017xxxxxxxx.jar,如何导入上篇已经介绍过
这个很不错,很多问题都得到了解决
开通扫码支付,看好官方文档
1商户系统调用支付宝预下单接口alipay.trade.precreate,获得该订单二维码图片地址。
2发起轮询获得支付结果:等待5秒后调用交易查询接口alipay.trade.query通过支付时传入的商户订单号(out_trade_no)查询支付结果(返回参数TRADE_STATUS),如果仍然返回等待用户付款(WAIT_BUYER_PAY),则再次等待5秒后继续查询,直到返回确切的支付结果(成功TRADE_SUCCESS 或 已撤销关闭TRADE_CLOSED),或是超出轮询时间。在最后一次查询仍然返回等待用户付款的情况下,必须立即调用交易撤销接口alipay.trade.cancel将这笔交易撤销,避免用户继续支付。
3除了主动轮询,也可以通过接受异步通知获得支付结果,详见扫码异步通知,注意一定要对异步通知做验签,确保通知是支付宝发出的。
调用接口:alipay.trade.precreate
直接上代码
请求tradePrecreatePayd.do 打印的jsonobject----------
{"alipay_trade_precreate_response{"msg":"Success","code":"10000","out_trade_no":"110114055715095","qr_code":"https://qr.alipay.com/bax08974wxnhvq6xi5sf604a"},"sign":"签名"}
生成qrcode---------https://qr.alipay.com/bax08974wxnhvq6xi5sf604a 就是支付的二维码图片地址,将其生成二维码即可支付
将其返回,我用的是jquery插件生成的二维码
<div id="output"></div>
<script src="/js/jquery-1.10.2.min.js"></script>
<script src="/js/jquery.qrcode.min.js"></script>
<script>
code();
function code() {
var code='${qrcode}';
/*jquery二维码生成插件生成二维码*/
jQuery(function () {
jQuery("#output").qrcode(code);
})
}
</script>
这个方式就自己选择吧,最后生成二维码扫描支付即可,notify_url异步返回代码上篇有这里就不贴了
我测试有一个问题,支付没有回调notify_url,因为支付宝别的支付在局域网测试就可以,所以我就没用域名,而扫码支付得用域名访问才会回调成功!!!
demo是基于SpringMVC的,扫码支付应该没加,自己加上,配置好改成自己的信息就可以测试,http://download.csdn.net/download/goligory/10048415
相关链接:http://blog.csdn.net/zyw_java/article/details/7143726
APP支付
官方文档:https://docs.open.alipay.com/204
客户端我就不说了,我这只说服务端提供的信息,调用生成orderInfo
生成形式如下;
将生成的orderInfo返回Android即可
这些已经介绍过,下面扫码支付也是用IJPay,导入alipay-sdk-java2017xxxxxxxx.jar,如何导入上篇已经介绍过
<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay</artifactId> <version>0.8</version> </dependency>支付宝接口社区精华帖集锦-接口样例、常见问题:https://openclub.alipay.com/read.php?tid=2019&fid=25
这个很不错,很多问题都得到了解决
开通扫码支付,看好官方文档
1商户系统调用支付宝预下单接口alipay.trade.precreate,获得该订单二维码图片地址。
2发起轮询获得支付结果:等待5秒后调用交易查询接口alipay.trade.query通过支付时传入的商户订单号(out_trade_no)查询支付结果(返回参数TRADE_STATUS),如果仍然返回等待用户付款(WAIT_BUYER_PAY),则再次等待5秒后继续查询,直到返回确切的支付结果(成功TRADE_SUCCESS 或 已撤销关闭TRADE_CLOSED),或是超出轮询时间。在最后一次查询仍然返回等待用户付款的情况下,必须立即调用交易撤销接口alipay.trade.cancel将这笔交易撤销,避免用户继续支付。
3除了主动轮询,也可以通过接受异步通知获得支付结果,详见扫码异步通知,注意一定要对异步通知做验签,确保通知是支付宝发出的。
调用接口:alipay.trade.precreate
直接上代码
/** * 扫码支付 返回一个链接自己生成二维码 已测试 * */ @RequestMapping(value ="/tradePrecreatePay.do") public String tradePrecreatePay(Model modelV) { String subject = "支付宝扫码支付测试"; String totalAmount = "0.1"; String storeId = "123"; String notifyUrl = "http://192.168.0.148:8080/alipay/notify_url.do"; AlipayTradePrecreateModel model = new AlipayTradePrecreateModel(); model.setSubject(subject); model.setTotalAmount(totalAmount); model.setStoreId(storeId); model.setTimeoutExpress("1m"); model.setOutTradeNo(StringUtils.getOutTradeNo()); try { AliPayApiConfigKit.putApiConfig(getApiConfig()); String resultStr = AliPayApi.tradePrecreatePay(model, notifyUrl); JSONObject jsonObject = JSONObject.parseObject(resultStr); System.out.println("jsonobject--"+jsonObject); String qrcode=jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code"); System.out.println(qrcode); modelV.addAttribute("qrcode",qrcode); return "success"; } catch (Exception e) { e.printStackTrace(); } return null; }
请求tradePrecreatePayd.do 打印的jsonobject----------
{"alipay_trade_precreate_response{"msg":"Success","code":"10000","out_trade_no":"110114055715095","qr_code":"https://qr.alipay.com/bax08974wxnhvq6xi5sf604a"},"sign":"签名"}
生成qrcode---------https://qr.alipay.com/bax08974wxnhvq6xi5sf604a 就是支付的二维码图片地址,将其生成二维码即可支付
将其返回,我用的是jquery插件生成的二维码
<div id="output"></div>
<script src="/js/jquery-1.10.2.min.js"></script>
<script src="/js/jquery.qrcode.min.js"></script>
<script>
code();
function code() {
var code='${qrcode}';
/*jquery二维码生成插件生成二维码*/
jQuery(function () {
jQuery("#output").qrcode(code);
})
}
</script>
这个方式就自己选择吧,最后生成二维码扫描支付即可,notify_url异步返回代码上篇有这里就不贴了
我测试有一个问题,支付没有回调notify_url,因为支付宝别的支付在局域网测试就可以,所以我就没用域名,而扫码支付得用域名访问才会回调成功!!!
demo是基于SpringMVC的,扫码支付应该没加,自己加上,配置好改成自己的信息就可以测试,http://download.csdn.net/download/goligory/10048415
相关链接:http://blog.csdn.net/zyw_java/article/details/7143726
APP支付
官方文档:https://docs.open.alipay.com/204
客户端我就不说了,我这只说服务端提供的信息,调用生成orderInfo
* app支付 * 生成的orderInfo */ @RequestMapping(value = "/appPay.do") @ResponseBody public String appPay() { try { System.out.println("-----------------------------app pay start------------------------------"); AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody("我是测试数据-By Javen"); model.setSubject("App支付测试-By Javen"); model.setOutTradeNo(StringUtils.getOutTradeNo()); model.setTimeoutExpress("30m"); model.setTotalAmount("0.01"); model.setPassbackParams("callback params"); model.setProductCode("QUICK_MSECURITY_PAY"); System.out.println("-2-"); AliPayApiConfigKit.putApiConfig(getApiConfig()); System.out.println("-3-"); String orderInfo = AliPayApi.startAppPayStr(model, "http://xxx/alipay/notify_url.do"); System.out.println("orderInfo----------"+orderInfo); return orderInfo; } catch (AlipayApiException e) { e.printStackTrace(); result.addError("system error:"+e.getMessage()); } return null; }
生成形式如下;
将生成的orderInfo返回Android即可
相关文章推荐
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- APP支付宝支付
- JAVA支付宝app端支付以及提现
- Android版-支付宝APP支付
- 手机APP使用支付宝支付(服务端)
- 利用面向对象的思想实现一套代码,要求一个APP支持微信支付,支付宝支付,银联支付
- 支付宝App支付
- APPCAN支付宝APP支付和web支付的完美解决
- java支付宝app支付代码
- 支付宝APP支付(Java后台生成签名具体步骤)
- 支付宝APP支付集成文档
- 支付宝 app支付 沙盘使用
- app接入支付宝后,支付成功后,回调不响应
- 2016最新支付宝APP支付集成问题解决
- [置顶] 实现APP支付QQ,微信,支付宝三方的后端服务------php实现支付宝APP支付
- PHP app 唤起支付宝支付 获取链接【项目实例】
- 支付宝app支付服务端流程
- android通过webview调起支付宝app支付
- 移动APP 支付宝快捷支付开发流程
- 支付宝的app支付