帖子
帖子
用户
博客
课程
显示全部楼层
3
帖子
0
勋章
7
Y币

[插件使用] aliPayPlus 返回code 4000

[复制链接]
发表于 2019-3-4 18:21:36
本帖最后由 ronychan 于 2019-3-4 18:37 编辑

使用的是aliPayPlus 方案一的方式
Java 服务端代码
public static LvQuResult alipay(String body, String subject, String totalAmount,
                        String outTradeNo) {
                AlipayClient alipayClient = new DefaultAlipayClient("https://openapi**.**/gateway.do",
                                AlipayConfig.app_id, AlipayConfig.private_key, "json", AlipayConfig.input_charset,
                                AlipayConfig.ali_public_key, AlipayConfig.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(body);// 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body
                model.setSubject(subject);// 商品的标题/交易标题/订单标题/订单关键字等
                model.setTotalAmount(totalAmount);// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
                model.setProductCode("QUICK_MSECURITY_PAY");// 销售产品码,商家和支付宝签约的产品码
                model.setOutTradeNo(outTradeNo);// 商户网站唯一订单号,请保证OutTradeNo值每次保证唯一
                model.setTimeoutExpress("30m");// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
                                                                                // 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
                request.setBizModel(model);
                request.setNotifyUrl(AlipayConfig.notify_url);// 商户外网可以访问的异步地址
                AlipayTradeAppPayResponse response;
                try {
                        response = alipayClient.sdkExecute(request);// 这里和普通的接口调用不同,使用的是sdkExecute
                        return new LvQuResult(false, response.getBody());// 就是orderString
                                                                                                                                // 可以直接给客户端请求,无需再做处理。
                } catch (AlipayApiException e) {
                        e.printStackTrace();
                        String massage = "alipay.trade.app.pay接口:订单签名错误";

                        return new LvQuResult(false, "订单号:" + outTradeNo + massage);
                }
        }


前端JS
function pay(data){//这里是异步获取到服务端返回的报文
var aliPayPlus = api.require('aliPayPlus');
                alert(data.json);
                aliPayPlus.payOrder({
                    orderInfo: data.json
                }, function(ret, err) {
                        api.alert({
                        title: '支付结果',
                        msg: ret.code,
                        buttons: ['确定']
                    });

                });
}

密钥验证是匹配的
签名工具验证也是对的

WX20190304-182042.png WX20190304-181955.png

一直提示{"code":"4000"}

请教各位大神,有解决办法吗?


==================================================================
已解决

4000
1、测试机子上没有安装支付宝。安装后,错误提示ALIN10146
2、支付宝签名类型要使用RSA2,sign_type=RSA2;
WX20190304-183604@2x.png

您需要登录后才可以回帖 登录

本版积分规则