有赞新零售社区

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

创建收款二维码出错

点点联 2017-04-15 2680 浏览 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 | 只看该作者
    你好,
    首先你再次检查下输入的密钥是否正确;然后你在调创建收款码接口的时候有一个参数传错了,必填字段qr_type你没有传值,你传到了shop_type上。请修改一下。
    谢谢!

      点点联 青铜   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-18 | 只看该作者
        KDTClient client = new DefaultKDTClient(new Sign(appid,appsecret));
        String res=kdt.execute(api);
        上面两个地方改一下,试看看,如果还有问题直接联系微信号youzanfantuan

          点点联 青铜   2017-04-19 | 只看该作者
          感谢回复,问题解决了,是参数问题。

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

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

            本版积分规则

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

            • 评分

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

            复制成功