官方文档
https://opendocs.alipay.com/apis/028xq9
APP 支付
// app 支付
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
// 商品的标题/交易标题/订单标题/订单关键字等。
model.setSubject("医疗服务");
// 商户订单号,必须唯一
model.setOutTradeNo("2021010203040506");
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
model.setTotalAmount("0.01");
// 销售产品码,商家和支付宝签约的产品码
model.setProductCode("QUICK_MSECURITY_PAY");
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
model.setTimeoutExpress("30m");
// 把 appPayResult 直接返回给前端即可
String appPayResult = AliPayUtils.appPay(model);Copy to clipboardErrorCopied
测试APP支付
在手机上下载 客户端调试
软件,下载链接
- 选择正式环境
- 复制 appPayResult 返回的内容
-
待支付实现的两种方法
当一个订单生成支付接口,不支付直接返回,再次支付时,如果更改了价格或其中一个参数值,会出现订单号重复的错误。
解决方法 每次支付的时候在订单号后面加上’_323232’ ,下划线和随机值,微信支付(或支付宝支付)成功返回的时候去掉下划线后面的即可得到实际订单号。
- 订单表里新增一个字段,在每次触发支付接口时,都重新生成一个唯一的临时订单号保存在此订单的临时订单字段中,传递给支付接口的订单号就是临时订单号,支付状态处理的时候,根据临时订单号获取正式订单号,同时进行业务处理。如果要核实对账单,那临时订单号最好是和正式的订单号一样,在后面随机加上一些随机字符串来解决