本着分享和吐槽的原则,我打算将我遇到的坑在这儿记录一下,然后列一下经过,一方面是提醒自己,另外一方面也算是分享一下,然后是吐槽、娱乐一下。
(1)在app中使用支付宝支付,提交的金额只能精确到小数点后两位。
我们的APP中有打折券,有时候会将金额计算成比如2.412这样的值,结果发现支付不了,支付宝根本就不认,直接提示参数错误,我先是翻我们的日志,异常全部拦截,只返回结果,没招了,去问金服技术客服,问的过程中我也感觉到可能是这个问题,毕竟写过微信支付嘛,哈哈哈,然后客服就确认了,哎,系统中所有涉及到金额的只能将小数点第三位给抹了,钱啊。。。。。
(2)在app中使用支付宝支付,支付宝回调接口时返回参数问题。
支付宝回调时,不能直接返回字符串"success",因为支付宝收到的是待双引号的success,哈哈哈,又是一个大坑,这种问题不能直接增加一个判断给过滤掉,万一支付宝那边始终没有收到我们的正常反馈,再退钱了我们就傻眼了嘛,经过修改后,demo如下,供大家参考。我们后端服务使用的是springboot,如下写法后,接口将直接返回success。
@ApiOperation(value = "test1", notes = "test1")
@PostMapping("/test1")
public void test1(HttpServletRequest request,HttpServletResponse resp) {
printData("success",resp);
}
private void printData(String data,HttpServletResponse resp) {
PrintWriter out;
try {
out = resp.getWriter();
out.print(data);
out.flush();
out.close();
out = null;
} catch (Exception e) {
e.printStackTrace();
}
}
(3)增强for循环的坑。。。,要不要看看呢,来吧
下边这段代码猛的一看没啥问题吧,测试一下也没问题,如果这个时候你就放过去了,那你就惨了,因为会出现空指针,所以在使用增强for循环时必须在外边加一个判断是否为空。
for(javaBean javabean : listBean){
if(javabean.variable.isEmpty()){
break;
}
}