刚开始做支付宝支付相关功能的时候什么都不了解,只想着去找别人已有的代码,结果找到了个很厉害的,代码都封装到jar包里面的,也没源码,最近整理代码发现这样很不方便自己维护,毕竟代码不是自己写的,出什么问题也不好快速改正,重新看了看支付宝线下支付的文档,哎呀,支付宝支付对程序员开发还是很友好的,Java 相关的方法都封装好了,就花了一点点时间,轻松写出线下支付当面付的代码,直接上代码:
官方文档地址:
https://docs.open.alipay.com/api_1/alipay.trade.precreate
@ApiOperation(value = "Alipay 当面付支付获得订单接口", notes = "Alipay 当面付支付获得订单接口")
@ApiImplicitParams({
})
@PostMapping("/AlipayF2FPayQrcode")
public JsonResult alipayF2FPayQrcode() {
try {
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
AliPayProperties.appid, AliPayProperties.private_key, "json", "UTF-8",
AliPayProperties.alipay_public_key, "RSA2");
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
// 订单描述
model.setBody("我是测试数据");
// 订单标题
model.setSubject("App支付测试Java");
// 商户订单号 就是商户后台生成的订单号
model.setOutTradeNo("201503200101010013232222231");
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天 (屁股后面的字母一定要带,不然报错)
model.setTimeoutExpress("30m");
// 订单总金额 ,默认单位为元,精确到小数点后两位,取值范围[0.01,100000000]
model.setTotalAmount("0.01");
// 销售产品码 不必填
request.setBizModel(model);
// request.setNotifyUrl("商户外网可以访问的异步地址,不写就是不回调");
// 通过api的方法请求阿里接口获得反馈
AlipayTradePrecreateResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
if (response.isSuccess()) {
System.out.println("调用成功");
JSONObject respJson = JSON.parseObject(response.getBody());
JSONObject rsj = (JSONObject) respJson.get("alipay_trade_precreate_response");
// 这里是阿里生成的二维码地址内容
String qr_code = (String) rsj.get("qr_code");
// 把阿里反馈的内容用自己的二维码生成方法生成二维码
String filename = QrcodeUtils.createQrcode(qr_code);
System.out.println(qr_code);
} else {
System.out.println("调用失败");
}
return JsonResult.success(response.getBody());
} catch (Exception e) {
// TODO: handle exception
return JsonResult.failMsg(e.getMessage());
}
}
成功返回:
{"alipay_trade_precreate_response":{"code":"10000","msg":"Success","out_trade_no":"201503200101010013232222231","qr_code":"https://qr.alipay.com/bax08517xrq2pnqliywx609f"},
"sign":"p50dsErSV5msDcjkhhAkl70Rst3Lb8IvAELx7ar522J2EUJz/+Kf25eGEMnFmvN3i7L5jvRJwxmoXFfaLFi7S7qS8PE9kw5dZT5LXx0azBRSkQJcZtkpQgJLUuDcEmVQFyNZItltCADI4EL8aPYCGXcg8Zv3PY83Mqj+raiH0AgXwdsQFbuO4lEaIb17p68KjcT54xZjIHjwdjC3omS6QNJX+EwfwSqjWyuemTlpyCOcSIUSbU9pZaFb2mohf+qpTsD5RMYrG231fJzCESmf5QUWWNUsWZdzL/3g8FWXmWMM/u59TwKiDz/CyUEy/YpzTfcUqLNM3oQSRPk6EWtEzQ=="}
具体方法和app支付类似,阿里封装好了实体类,所以调用起来很方便,生成二维码的方法很多,这里就不贴出来了,用自己的就好。最后在前端或app端显示好你生成的二维码就好了。还是很容易的嘛。
版权声明:本文为atmknight原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。