欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

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

时间:2020-11-16 11:32:01|栏目:Android代码|点击:

本文实例为大家分享了Android微信支付获取二次签名Sign的方法,供大家参考,具体内容如下

/**
  * 获取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
 }

上一篇:详谈OnTouchListener与OnGestureListener的区别

栏    目:Android代码

下一篇:Android组件实现列表选择框功能

本文标题:Android微信支付获取二次签名Sign的方法

本文地址:http://www.codeinn.net/misctech/23027.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有