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

简介: 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

 }

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


目录
相关文章
|
4月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
87 2
基于Android P,自定义Android开机动画的方法
|
4月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
206 2
|
2月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
74 15
Android 系统缓存扫描与清理方法分析
|
3月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
50 2
|
4月前
|
安全 Java Android开发
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
如何解压OTA升级包、编辑升级包内容(例如移除不需要更新的分区)、重新打包、签名以及验证OTA文件的过程。
354 2
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
|
4月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
233 1
|
4月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
559 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
4月前
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
409 0
使用keytool查看Android APK签名
|
4月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
41 0
|
12天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
38 19