微信支付 签名 java_关于微信支付参数[签名]字段-Java代码片段

最近在开发过程中发遇到了对于微信下单的功能,签名不正确特意留下了目前可行的签名方法代码,记录一下对应的代码,学习和备用。

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.SortedMap;

import java.util.TreeMap;

//在线验证网址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1 请在非IE浏览器下打开

public class TestSign {

private static String Key = "15246652111";

/**

* @param args

*/

public static void main(String[] args) {

System.out.println("==========》微信签名开始");

//微信api提供的参数

SortedMap parameters = new TreeMap();

parameters.put("appid", "wx1236544788");

parameters.put("attach", "铃铛");

parameters.put("body", "铃铛购买");

parameters.put("mch_id", "15246652111");

parameters.put("nonce_str", "bkvYgKB14He08vWx");

parameters.put("notify_url", "http://www.lvnnet.com/lincombPay/wcpay/wechatPayNotify");

parameters.put("openid", "oPYQ-v-QWERTYUIhddryuiHKlsmMM");

parameters.put("out_trade_no", "032018032916420100479947");

parameters.put("spbill_create_ip", "172.16.107.206");

parameters.put("total_fee", "1");

parameters.put("trade_type", "JSAPI");

String signStr = createSign("UTF-8", parameters);

System.out.println("生成微信签名==========》" + signStr);

System.out.println("==========》微信签名结束");

}

/**

* 微信支付签名算法sign

* @param characterEncoding

* @param parameters

* @return

*/

@SuppressWarnings({"rawtypes" })

public static String createSign(String characterEncoding,SortedMap parameters){

StringBuffer sb = new StringBuffer();

//所有参与传参的参数按照accsii排序(升序)

Set> es = parameters.entrySet();

Iterator> it = es.iterator();

while(it.hasNext()) {

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 + "&");

}

}

//重点说明:这个Key是对应的商户编码 是针对于支付发起的是有有个商户编号

sb.append("key=" + Key);

System.out.println("加密前封装的字符串:"+sb.toString());

String sign = Md5.MD5Encode(sb.toString(), characterEncoding).toUpperCase();

return sign;

}

}

执行结果:

==========》微信签名开始

加密前封装的字符串:appid=wx1236544788&attach=铃铛&body=铃铛购买&mch_id=15246652111&nonce_str=bkvYgKB14He08vWx&notify_url=http://www.lvnnet.com/lincombPay/wcpay/wechatPayNotify&openid=oPYQ-v-QWERTYUIhddryuiHKlsmMM&out_trade_no=032018032916420100479947&spbill_create_ip=172.16.107.206&total_fee=1&trade_type=JSAPI&key=15246652111

生成微信签名==========》673DFF272B6168529BA0830ABF3095C4

==========》微信签名结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值