Android微信支付获取二次签名Sign的方法_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
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索支付宝签名sign参数、微信支付签名算法sign、微信支付 paysign签名、支付宝签名sign生成、微信支付 sign签名,以便于您获取更多的相关知识。

时间: 2024-10-12 07:14:40

Android微信支付获取二次签名Sign的方法_Android的相关文章

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

本文实例为大家分享了Android微信支付获取二次签名Sign的方法,供大家参考,具体内容如下 /** * 获取sign签名 * * @return */ private String genPayReq() { // 获取参数的值 PayReq request = new PayReq(); request.appId = ConstantsMember.APP_ID; request.partnerId = ConstantsMember.MCHID; request.prepayId =

Android实现Service获取当前位置(GPS+基站)的方法_Android

本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法.分享给大家供大家参考.具体如下 需求详情 1).Service中每隔1秒执行一次定位操作(GPS+基站) 2).定位的结果实时显示在界面上(要求得到经度.纬度) 技术支持 1).获取经纬度 通过GPS+基站获取经纬度先通过GPS来获取如果为空改用基站进行获取–>GPS+基站(基站获取支持联通.电信.移动). 2).实时获取经纬度 为了达到实时获取经纬度需在后台启动获取经纬度的Service然后把经纬度数据通过广播发

Android编程实现获取新浪天气预报数据的方法_Android

本文实例讲述了Android编程实现获取新浪天气预报数据的方法.分享给大家供大家参考,具体如下: 新浪天气预报地址: http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0 其中,city后的城市可用java.net.URLEncoder.encode("武汉"," gb2312");也可以直接写"武汉",但不能用"wu

Android编程实现获取当前连接wifi名字的方法_Android

本文实例讲述了Android编程实现获取当前连接wifi名字的方法.分享给大家供大家参考,具体如下: WifiManager wifiMgr = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE); int wifiState = wifiMgr.getWifiState(); WifiInfo info = wifiMgr.getConnectionInfo(); String wifiId = info != null

android微信支付问题总结

首先我们先看一个android微信支付时遇到的一个错误提示: onPayFinish, errCode = -1  当你参数签名都没有问题的时候,出现这个提示,请按照如下操作: 在你的项目测试android微信的组件(微信分享.微信支付等)的时候,一定要用你自己的keystore签名出来测试,如果用debug.keystore肯定是不成功的! 本文部分内容转自:http://blog.csdn.net/baidu_17508977/article/details/44517283 1,在微信开放

Android微信支付3.0版本

问题描述 Android微信支付3.0版本 根据开发文档以及网上给的demo总是调不通,apk也是打包签名了的!客户端自己实现第一次签名和第二次签名总是支付结果总是-1,我也是无能为力了!求大神指点 解决方案 android微信支付android 微信支付android微信支付 解决方案二: http://download.csdn.net/detail/baidu_17508977/8521101 解决方案三: 可以看下 Ping++ Android 支付接口:https://www.ping

Android 微信支付总看到签名 这是什么? 要调用微信支付一定要有签名吗?

问题描述 Android 微信支付总看到签名 这是什么? 要调用微信支付一定要有签名吗? Android 微信支付总看到签名 这是什么? 要调用 签名是自己搞签名还是官方签名代码复制过来 解决方案 每个应用都有,不用你自己去写 解决方案二: 就是应用的签名,可以用微信提供的软件获取手机上应用的签名 解决方案三: 微信支付---签名

android微信支付源码分享_Android

本文为大家分享了android微信支付源码,供大家参考,具体内容如下 参数配置 public static final String APP_ID ; /** 在微信开放平台注册app,微信给分配的id **/ public static final String MCH_ID; /** 申请开通微信支付,成功后微信会给你发一封邮件,给你分配一个商户平台账号,在资料里有商户ID **/ public static final String API_KEY; /** 在微信发给你的那封邮件里,给你

android微信支付总是返回-1的问题

问题描述 android微信支付总是返回-1的问题 目前问题是清空微信数据和再次签名是可以支付的,但后面就不可以支付了,这是什么原因呢? sign的值是我自己拼接的,我后台log打印的看到每次支付的sign也是不一样的. 支付返回-1是什么原因呢? 官方说错误返回码有4开头的四位数字 ,我怎么没看见? 解决方案 每次支付的sign也是不一样的 是的,sign是根据你其它参数算出来的,你的sign错了,当然返回错误. 官方文档列出的可能错误原因:签名错误.未注册APPID.项目设置APPID不正确