微信支付---签名

/**

* 微信支付jaspi签名

* @param characterEncoding

* @param parameters

* @return

*/

public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){

String API_KEY = PropUtil.getPropertyValue("wx.sz.api.key", "").replace("\"","");

StringBuffer sb = new StringBuffer();

Set es = parameters.entrySet();//所有参与传参的参数按照ASCII码从小到大排序(字典序)

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

}

}

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

System.out.println("======================待签名的字符串文=============:"+sb.toString());

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

System.out.println("==========返回的签名为=========:"+sign);

return sign;

}

/**

* 将请求参数转换为xml格式的string

* @param parameters

* @return

*/

public static String getRequestXml(SortedMap<Object,Object> parameters){

StringBuffer sb = new StringBuffer();

sb.append("<xml>");

Set es = parameters.entrySet();

Iterator it = es.iterator();

while(it.hasNext()) {

Map.Entry entry = (Map.Entry)it.next();

String k = (String)entry.getKey();

String v = (String)entry.getValue();

if ("attach".equalsIgnoreCase(k)||"body".equalsIgnoreCase(k)||"sign".equalsIgnoreCase(k)) {

sb.append("<"+k+">"+"<![CDATA["+v+"]]></"+k+">");

}else {

sb.append("<"+k+">"+v+"</"+k+">");

}

}

sb.append("</xml>");

return sb.toString();

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 22:00:25

微信支付---签名的相关文章

微信支付--签名错误问题

最近在做微信支付,调用微信的统一下单支付接口http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1时,老是返回"签名错误",偶尔可以成功,不知道是怎么回事.我在日志中打印出生成的字符串和签名,然后用相同的数据在微信支付提供的在线支付调试工具生成签名,发现生成的签名结果一样!生成的最终xml也一样,但接口就是返回 <xml><return_code><![CDATA[FAIL]]><

微信支付签名错误

第一步:检查本地签名程序是否正确 使用签名检查工具,检查签名本地签名程序是否有错误 如果无误,表示程序没有问题,进行下一步API秘钥设置,否则请先修改程序 第二步:API密钥设置 在使用签名检查工具检查没有错误的情况下, 可以确定是API密钥设置出错.微信支付必须保证本地签名使用的key值和在商户平台设置的API密钥一致,请去商户平台 设置API密钥. 设置位置:账户设置-安全设置-API安全

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam

[转载]微信支付

公众号支付有2种支付方式: JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付.商户网页前端通过使用微信提供的 JS API,调用微信支付模块.这种方式,适合需要在商户网页进行选购下单的购买流程.Native(原生)支付:是指商户组成符合 Native(原生)支付规则的 URL 链接,用户可通过点击该链接或者扫描对应的二维码直接进入微信支付模块(微信客户端界面),即可进行支付.这种方式,适合无需选购直接支付的购买流程. 以上两种方式最大的区别是:是否需要经

微信支付--入门篇

公众号支付有2种支付方式: JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付.商户网页前端通过使用微信提供的 JS API,调用微信支付模块.这种方式,适合需要在商户网页进行选购下单的购买流程.  Native(原生)支付:是指商户组成符合 Native(原生)支付规则的 URL 链接,用户可通过点击该链接或者扫描对应的二维码直接进入微信支付模块(微信客户端界面),即可进行支付.这种方式,适合无需选购直接支付的购买流程. 以上两种方式最大的区别是:是否需

关于微信开发与微信支付更新

1.)微信开发一般就是看文档,按部就班调用API就行,这里推荐一些SDK .NET https://github.com/JeffreySu/WeiXinMPSDK JAVA http://git.oschina.net/pyinjava/fastweixin NodeJS https://github.com/node-weixin/node-weixin-api Python http://git.oschina.net/jeffkit/wechat 2.)在之前的文章微信支付[v3]中,说

微信支付-----统一下单action

public class PayAction extends BaseAction { public String JsapiPay(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception { PrintWriter out = response.getWriter(); //商品描述  商品或支付单简要描述 String bo

asp.net微信支付发起页面jsapi.aspx

jsapi.aspx 后台核心代码 //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(Context); //初始化 packageReqHandler.init(); packageReqHandler.setKey(TenpayUtil.key); //设置package订单参数 packageReqHandler.setParameter("partner", TenpayUtil.partner);

微信支付--入门篇(转掌眼)

公众号支付有2种支付方式: JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付.商户网页前端通过使用微信提供的 JS API,调用微信支付模块.这种方式,适合需要在商户网页进行选购下单的购买流程.  Native(原生)支付:是指商户组成符合 Native(原生)支付规则的 URL 链接,用户可通过点击该链接或者扫描对应的二维码直接进入微信支付模块(微信客户端界面),即可进行支付.这种方式,适合无需选购直接支付的购买流程. 以上两种方式最大的区别是:是否需