有赞新零售社区

发帖
API使用问题»创建收款二维码出错

创建收款二维码出错

点点联 2017-04-15 2192 浏览 4 评论 | [显示全部楼层] [打印]
ERP&API对接
店铺名称: ZX加油站
微信公众号: U20110518
公众号昵称: 浪漫膜法
隐私信息(如订单流水号等信息,只有客服能看见): 隐藏内容
我的商铺采用代销微信支付模式。我调用收银台接口出现异常:


1、调用“获取收款二维码生成记录列表”,是可以正常获得数据的,代码如下:
String appId=Config.string("weiDian#appId");
String appSecret=Config.string("weiDian#appSecret");
Sign sign=new Sign(appId,appSecret);
DefaultKDTClient kdt=new DefaultKDTClient();

KdtPayQrcodesGet api=new  KdtPayQrcodesGet();
KdtPayQrcodesGetParams para=new KdtPayQrcodesGetParams();
api.setAPIParams(para);
String res=kdt.execute(sign, api);    //这里可以返回正确的数据



2、但调用“创建收款二维码”却出现错误:{ "error_response": { "code": 40005, "msg": "签名校验失败" } },程序代码如下:
String appId=Config.string("weiDian#appId");
String appSecret=Config.string("weiDian#appSecret");
Sign sign=new Sign(appId,appSecret);
DefaultKDTClient kdt=new DefaultKDTClient();

KdtPayQrcodeCreateqrcode api=new KdtPayQrcodeCreateqrcode();
KdtPayQrcodeCreateqrcodeParams para=new KdtPayQrcodeCreateqrcodeParams();
para.setQrSource("INSIDE");
//para.setShopId("1");
//para.setShopType("1");
para.setShopType("QR_TYPE_DYNAMIC");
para.setLabelIds("");
para.setQrPrice("3");
para.setQrName("测试二维码");
api.setAPIParams(para);
String res=kdt.execute(sign, api);  //这里就返回【签名校验失败】错误。





但两次接口调度程序,我的签名算法是一样的,是不是系统对【创建收款二维码】做了一些权限控制?


用手机打开
收藏 ··· 回复
    点点联 青铜   2017-04-17 显示全部楼层
    你好,感谢回复。

    程序确实有个参数错了,但修改后还是不行,返回校验失败的错误,从错误提示看,应该还没有到参数检查那一步。

    密钥等一些参数没有错误,因为我调度【获取收款二维码生成记录列表】接口是成功的。

    会不会是这个接口有一些特殊控制,比如必须是VIP会员店铺、线下实体店或需是服务开发商等等之类的限制?

    测试代码如下(两个接口是在一个程序里面依次调用测试的,采用同一套appId和appSecret):

    String appId=Config.string("weiDian#appId");
    String appSecret=Config.string("weiDian#appSecret");
    Sign sign=new Sign(appId,appSecret);
    DefaultKDTClient kdt=new DefaultKDTClient();


    KdtPayQrcodesGet api=new  KdtPayQrcodesGet();
    KdtPayQrcodesGetParams para=new KdtPayQrcodesGetParams();
    api.setAPIParams(para);
    String res=kdt.execute(sign, api);
    log.debug("KdtPayQrcodesGet.res="+res);    //这个执行是成功的

    KdtPayQrcodeCreateqrcode api2=new KdtPayQrcodeCreateqrcode();
    KdtPayQrcodeCreateqrcodeParams para2=new KdtPayQrcodeCreateqrcodeParams();
    para2.setQrType("QR_TYPE_DYNAMIC");  
    para2.setLabelIds("");
    para2.setQrPrice("3");
    para2.setQrName("测试二维码");
    api2.setAPIParams(para2);
    res=kdt.execute(sign, api2);  
    log.debug("KdtPayQrcodeCreateqrcode.res="+res);   //这个返回 :{ "error_response": { "code": 40005, "msg": "签名校验失败" } }

      点点联 青铜   2017-04-19 显示全部楼层
      感谢回复,问题解决了,是参数问题。

      para2.setQrName("测试二维码");  //这里不能用中文,否则就校验出错,应该是sdk未对中文进行处理

        1跳至
        您需要登录后才可以回帖 登录 | 立即注册

        本版积分规则

        复制链接
        新浪微博
        QQ空间
        微信扫码
        • 回复

        • 评分

        客服工作时间是9:00-18:00,客服妹子当前不在线,若不能及时回复请谅解。试试右上角的搜索吧,论坛有丰富的经验贴、公告贴,相信一定能够帮到您~

        复制成功