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
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。