Android微信支付获取二次签名Sign的方法
本文实例为大家分享了Android微信支付获取二次签名Sign的方法,供大家参考,具体内容如下
/** *获取sign签名 * *@return */ privateStringgenPayReq(){ //获取参数的值 PayReqrequest=newPayReq(); 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=newTreeMap<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); StringcharacterEncoding="UTF-8"; StringmySign=createSign(characterEncoding,parameters); System.out.println("我的签名是:"+mySign); returnmySign; } /** *微信支付签名算法sign * *@paramcharacterEncoding *@paramparameters *@return */ publicstaticStringcreateSign(StringcharacterEncoding, SortedMap<Object,Object>parameters){ StringBuffersb=newStringBuffer(); Setes=parameters.entrySet();//所有参与传参的参数按照accsii排序(升序) Iteratorit=es.iterator(); while(it.hasNext()){ @SuppressWarnings("rawtypes") Map.Entryentry=(Map.Entry)it.next(); Stringk=(String)entry.getKey(); Objectv=entry.getValue(); if(null!=v&&!"".equals(v)&&!"sign".equals(k) &&!"key".equals(k)){ sb.append(k+"="+v+"&"); } } sb.append("key="+ConstantsMember.KEY);//KEY是商户秘钥 Stringsign=MD5Util.MD5Encode(sb.toString(),characterEncoding) .toUpperCase(); returnsign;//D3A5D13E7838E1D453F4F2EA526C4766 //D3A5D13E7838E1D453F4F2EA526C4766 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。