支付宝,微信支付问题

懵懂的女人 提交于 2019-11-28 14:40:26

1. 新版的支付宝支付简化了代码,省去了自己去签名配置参数,拼接参数的烦恼,简单明了。

    public static String buildAlipayRequest(AlipayVo alipayVo) {
        String alipayInfo = null;
        //实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_URL, alipayVo.getAppId(), alipayVo.getAppPrivateKey(),
                FORMAT, CHARSET_UTF8, alipayVo.getAlipayPublicKey(), SIGN_TYPE);
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody("AlipayTrade");
        model.setSubject(alipayVo.getSubject());
        model.setOutTradeNo(alipayVo.getOutTradeNo());
        model.setTimeoutExpress("30m");
        model.setTotalAmount(alipayVo.getTotalAmount());
        model.setProductCode("QUICK_MSECURITY_PAY");
        request.setBizModel(model);
        request.setNotifyUrl(alipayVo.getNotifyUrl());
        try {
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
            log.info(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
            alipayInfo = response.getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        return alipayInfo;
    }

2. 因为项目使用到了过滤器,导致签名的sign数据中“+”被替换成了“ ”,无法获取原本的sign

java.security.SignatureException: Signature length not correct: got 253 but was expecting 256

    简单处理,就是替换,将空格替换成加号

sign = sign.replace(" ", "+");

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!