收藏
回答

mp_sig签名一直提示错误

框架类型 问题类型 操作时间 AppID
小游戏 Bug 2018-07-02 wxe0e6a8746dd227ed


字符串的顺序检查过了,是正确的

mp_sig提示语

2018-7-2 10:45:13.338 INFO [main] buy|jsonObject={
  "errcode": 90009,
  "errmsg": "mp_sig error hint: [bjyzOA0513shc1]"
}

mp_sig提示错误,是不是说明,sig签名是正确的?

sessionKey有过期时间吗?

签名代码如下

private static String getSign(StringBuilder stringBuilder, String session_key) {
       String mp_sig = null;
       try {
           String temp = SnsSigCheck.encodeUrl(stringBuilder.toString());
           Mac mac = Mac.getInstance("HmacSHA256");
           SecretKeySpec secretKey = new SecretKeySpec(session_key.getBytes(), "HmacSHA256");
           mac.init(secretKey);
           byte[] hash = mac.doFinal(temp.getBytes());
           mp_sig = Base64.encodeBase64String(hash);
       } catch (Exception e) {
           Logs.get().error("=========e=" + Lang.getStackTrace(e));
       }
       return mp_sig;
   }

请问要怎么查这个问题呢,顺序是完全按照文档中的顺序的,其他数据只有sessionKey不确定,sessionKey指的是用户的登陆返回的sessionKey吧,这个有过期时间吗,还是怎样的?文档中也没有说明,只是提示这个错误,能不能帮我检查一下sig签名是不是对的,否则不知道那个参数有问题,或者不知道问题出现在哪里,要不提供一下java的封装方法也行

sig签名字符串

StringBuilder stringBuilder = new StringBuilder("appid=");
        stringBuilder.append(appid);
        stringBuilder.append("&offer_id=");
        stringBuilder.append(offer_id);
        stringBuilder.append("&openid=");
        stringBuilder.append(openid);
        stringBuilder.append("&pf=android&ts=");
        stringBuilder.append(ts);
        stringBuilder.append("&zone_id=");
        stringBuilder.append(1);
        stringBuilder.append("&org_loc=/cgi-bin/midas/getbalance&method=POST&secret="+secret);
        String sig = getSign(stringBuilder, secret);

mp_sig签名字符串

stringBuilder = new StringBuilder("");
        stringBuilder.append("access_token=");
        stringBuilder.append(getAccessToken());
        stringBuilder.append("&appid=");
        stringBuilder.append(appid);
        stringBuilder.append("&offer_id=");
        stringBuilder.append(offer_id);
        stringBuilder.append("&openid=");
        stringBuilder.append(openid);
        stringBuilder.append("&pf=android");
        stringBuilder.append("&sig=");
        stringBuilder.append(sig);
        stringBuilder.append("&ts=");
        stringBuilder.append(ts);
        stringBuilder.append("&zone_id=");
        stringBuilder.append(1);
        stringBuilder.append("&org_loc=/cgi-bin/midas/getbalance&method=POST&session_key="+session_key);
        String mp_sig = getSign(stringBuilder, session_key);

这样还是提示90009的错误

最后一次编辑于  2018-07-02
回答关注问题邀请回答
收藏

1 个回答

  • 疯狂的小辣椒
    疯狂的小辣椒
    2018-07-02

    你好。不需要重复发帖的,你的反馈我们已经收到,之前也有回复,有结果会在已回复的帖子下跟进哈

    2018-07-02
    有用
    回复
登录 后发表内容