支付宝APP支付,无论在文档上,还是在demo上,比微信支付高好几个level吧.使用起来非常方便,基本上不会有什么太大的坑,只要严格按照demo,和文档进行操作的话,基本上可以一把过的.在这里要提示下,加签和验签使用的公钥问题:加签是在开发商平台查看公钥的时候的:应用公钥,而回调验签使用的,在开发商平台查看公钥的时候的:支付公钥.一定要注意这个,要不回调会报错的.
Controller:
@PostMapping("/payRequest")
@ApiOperation("统一下单alipay支付")
public Result payRequest(@RequestBody MallOrderPayDto mallOrderPayDto) throws Exception {
log.info("ali 支付:{}",mallOrderPayDto);
try {
Map<String,String> maps = aliPayService.payRequest(mallOrderPayDto);
return super.success(maps);
} catch (Exception e) {
log.info("订单ali支付异常:{}",e);
return super.error("订单数据异常!");
}
}
@PostMapping(value = "/aliPayOrderCallBack")
@ApiOperation("alipay支付回调")
public Map<String, String> aliPayOrderCallBack(HttpServletRequest request){
Map<String, String> map = new HashMap<String, String>();
try {
AliPayVO aliPayVo = friendsMallAliPayService.aliPayCallBack(request);
aliPayService.aliPayOrderCallBack(aliPayVo);
map.put("msg", "SUCCESS");
} catch (Exception e) {
e.printStackTrace();
log.error("aliPayOrderCallBack Error.",e);
}
return map;
}
Service:
public interface AliPayService {
//支付宝支付
public Map<String, String> payRequest(OrderPayDto orderPayDto) throws Exception;
//支付宝回调
public AliPayVO aliPayCallBack(HttpServletRequest request) throws Exception;
//支付宝订单支付回调业务处理
public void aliPayOrderCallBack(AliPayVO aliPayVo) throws Exception;
}
ServiceImpl:
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class AliPayServiceImpl implements AliPayService {
//订单支付支付宝回调地址
public static String ALIPAY_ORDER_CALLBACK = "http://127.0.0.1:8080/api/alipay/aliPayOrderCallBack";
@Override
public Map<String, String> payRequest(OrderPayDto orderPayDto) throws Exception