安卓学习笔记---支付宝支付-交易订单处理失败,请稍后再试。(提示ALI59错误)


当你第一次辛辛苦苦的集成支付宝,点击“立即支付”看到成功跳转到支付宝了,心里是不是有点小激动。

但是却出现一行大字:“交易订单处理失败,请稍后再试。(ALI59)”,是不是就苦逼了。

原因是你在给支付宝传订单金额的时候,在测试的时候,为了节省,给支付宝订单金额传了个0.001。
也就是:
// 订单
String orderInfo = getOrderInfo(subject, desc, balance);
这里有一个balance就是商品的价格,是double类型的,它的精度很高

你可能会看到这行代码:

// 将商品信息拼接成字符串

// 商品金额
orderInfo += "&total_fee=" + "\"" + price+ "\"";

在你的终端仔细看下会有:total_fee="0.001"


重点来了:
支付宝默认的支付金额单位是:元。(微信支付,默认的支付金额单位是:分)
所以你在给支付宝传订单金额的时候,最小要精确到分,也就是0.01,所以:
// 商品金额
orderInfo += "&total_fee=" + "\"" + Constant.decimalFormat.format(price) + "\"";
 //商品价格

这样就可以支付成功了。

定义一个Constant类
public class  Constant
{
  
public final static DecimalFormat decimalFormat = new DecimalFormat("#.##");
}


还要注意
getOrderInfo(subject, desc, balance);这个里面的subject是用来显示商品名称的,里面也有拼接:
将商品名称进行拼接
 
   
// 商品名称
orderInfo += "&subject=" + "\"" + subject + "\"";

注意这里的subject不要太长,支付宝可能有它限制的字符串长度,超过长度也可能导致不能支付,在这里要注意一下字符串的长度。

转载请标注地址谢谢!

你可能感兴趣的:(安卓学习笔记---支付宝支付-交易订单处理失败,请稍后再试。(提示ALI59错误))