官方文档

https://opendocs.alipay.com/apis/028xq9

APP 支付

  1. // app 支付
  2. AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
  3. // 商品的标题/交易标题/订单标题/订单关键字等。
  4. model.setSubject("医疗服务");
  5. // 商户订单号,必须唯一
  6. model.setOutTradeNo("2021010203040506");
  7. // 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
  8. model.setTotalAmount("0.01");
  9. // 销售产品码,商家和支付宝签约的产品码
  10. model.setProductCode("QUICK_MSECURITY_PAY");
  11. // 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
  12. model.setTimeoutExpress("30m");
  13. // 把 appPayResult 直接返回给前端即可
  14. String appPayResult = AliPayUtils.appPay(model);Copy to clipboardErrorCopied

测试APP支付

在手机上下载 客户端调试 软件,下载链接
app支付 - 图1

  • 选择正式环境
  • 复制 appPayResult 返回的内容
  • 点我去支付

    待支付实现的两种方法

    当一个订单生成支付接口,不支付直接返回,再次支付时,如果更改了价格或其中一个参数值,会出现订单号重复的错误。
    解决方法

  • 每次支付的时候在订单号后面加上’_323232’ ,下划线和随机值,微信支付(或支付宝支付)成功返回的时候去掉下划线后面的即可得到实际订单号。

  • 订单表里新增一个字段,在每次触发支付接口时,都重新生成一个唯一的临时订单号保存在此订单的临时订单字段中,传递给支付接口的订单号就是临时订单号,支付状态处理的时候,根据临时订单号获取正式订单号,同时进行业务处理。如果要核实对账单,那临时订单号最好是和正式的订单号一样,在后面随机加上一些随机字符串来解决