支付宝当面付功能

刚开始做支付宝支付相关功能的时候什么都不了解,只想着去找别人已有的代码,结果找到了个很厉害的,代码都封装到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端显示好你生成的二维码就好了。还是很容易的嘛。

猜你喜欢

转载自blog.csdn.net/atmknight/article/details/81240677