Android微信支付获取二次签名Sign的方法

原创 2016年09月05日 11:36:16

    /**
     * 获取sign签名
     * 
     * @return
     */
    private String genPayReq() {

        // 获取参数的值
        PayReq request = new PayReq();
        request.appId = ConstantsMember.APP_ID;
        request.partnerId = ConstantsMember.MCHID;
        request.prepayId = mPrepayId;
        request.packageValue = "Sign=WXPay";
        request.nonceStr = DataUtil.getGuid();
        request.timeStamp = DataUtil.getTimeStamp();

        // 把参数的值传进去SortedMap集合里面
        SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
//      {appid=wx34df375d7dae8c90, noncestr=3BF34EF2CA4A462DB8D4EA48E785CDC3, 
//              package=Sign=WXPay, partnerid=1349967601, 
//              prepayid=wx2016070910354542c7155d4e0846850809, timestamp=1468031760}
        parameters.put("appid", request.appId);
        parameters.put("noncestr", request.nonceStr);
        parameters.put("package", request.packageValue);
        parameters.put("partnerid", request.partnerId);
        parameters.put("prepayid", request.prepayId);
        parameters.put("timestamp", request.timeStamp);

        String characterEncoding = "UTF-8";
        String mySign = createSign(characterEncoding, parameters);
        System.out.println("我的签名是:" + mySign);
        return mySign;
    }

    /**
     * 微信支付签名算法sign
     * 
     * @param characterEncoding
     * @param parameters
     * @return
     */
    public static String createSign(String characterEncoding,
            SortedMap<Object, Object> parameters) {

        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)
        Iterator it = es.iterator();
        while (it.hasNext()) {
            @SuppressWarnings("rawtypes")
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            Object v = entry.getValue();
            if (null != v && !"".equals(v) && !"sign".equals(k)
                    && !"key".equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }
        sb.append("key=" + ConstantsMember.KEY); //KEY是商户秘钥
        String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding)
                .toUpperCase();
        return sign; // D3A5D13E7838E1D453F4F2EA526C4766
                        // D3A5D13E7838E1D453F4F2EA526C4766
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

如何集成android微信支付及各种问题(-1,签名错误,无法获得预支付id)的解决办法。

集成微信支付遇到的各种问题
  • gaoqingliang521
  • gaoqingliang521
  • 2017年05月31日 16:12
  • 2485

android 微信支付 签名错误

前言 最近在做一个web app是个商城里面需要集成微信支付,在开发的过程中遇到许多坑。 本次主要介绍签名错误,其实造成签名的错误有很多。 正文  我这里只介绍 由于网络请求参数Strin...
  • hu285279904
  • hu285279904
  • 2016年08月17日 13:21
  • 797

APP调用微信支付接口-服务端二次签名

微信官方实在太坑了,不仅不给demo,还在文档中误导人!!!下面来说说要注意的两个坑 1、在第二次签名时候,官方给出的说法是如图: 要是按照他上面的驼峰原则来进行签名,那你就大错特错了。 记...
  • sinat_17820239
  • sinat_17820239
  • 2016年05月06日 19:56
  • 4706

APP调用微信支付接口-服务端二次签名失败原因及解决方法

做微信支付要细心,仔细才不会走弯路 1、要是按照他上面的驼峰原则来进行签名,那你就大错特错了。 记住:这几个字段的“字段名”在参与签名的时候一定都要改成小写!!! 2、还有个坑要...
  • qq_35624642
  • qq_35624642
  • 2016年12月15日 21:30
  • 3902

微信公众号支付支付验证签名失败及公众号支付总结

微信公众号支付总结:做完了微信支付想趁着这把火没灭继续把公众号支付也做完,但是没想到中途出了呢么多意外,每次都是感觉解决了这个问题就可以支付了,但每次都是一个问题接另一个问题的出现,特此总结一下出现的...
  • The_Knife
  • The_Knife
  • 2017年05月08日 11:30
  • 11408

【java】微信支付生成签名的过程

关于签名的算法,api提供的原文是: 1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序...
  • xb12369
  • xb12369
  • 2015年05月14日 11:19
  • 51959

浅谈安卓微信支付遇到的那些坑(服务端签名)

**浅谈安卓微信支付遇到的那些坑(服务端签名)** 做微信支付首先需要到微信开放平台https://open.weixin.qq.com注册自己的APP。 1,如果是创建移动应用就...
  • qq_15122875
  • qq_15122875
  • 2016年03月22日 15:15
  • 6318

微信支付V3版本地签名统一下单android端详解

满满的都是坑,因为服务器偷懒让客服端写统一下单,服务器只给了通知的url。微信平台缺乏本地签名的代码...
  • meijuanyou
  • meijuanyou
  • 2016年07月08日 20:58
  • 3234

微信支付 第一次成功,其他无法调起,返回-1(Android eclipse 微信支付之大坑 签名工具问题)

参考链接:http://blog.csdn.net/xinluqishi123/article/details/52234002 微信支付第一次成功,其它支付不成功,可能的原因有: 1:订单号重复,...
  • ws1836300
  • ws1836300
  • 2017年01月03日 10:47
  • 3153

微信支付V3版本地签名统一下单android端详解

满满的都是坑,因为服务器偷懒让客服端写统一下单,服务器只给了通知的url。微信的支付demo并没有统一下单的代码。 读此文前先阅读  https://pay.weixin.qq.com/wiki/d...
  • SuperCopa
  • SuperCopa
  • 2016年08月19日 11:23
  • 947
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android微信支付获取二次签名Sign的方法
举报原因:
原因补充:

(最多只允许输入30个字)