Re: JAVA微信:微信扫码支付、调用统一下单接口、网站支付 + springmvc

添加时间:17-05-21 所属分类:HTML网页,JS语言与代码
  说明:

二维码可以查看zxing实现二维码生成和解析;微信这边也提供了二维码的学习,大家有兴趣可以看看:http://www.thonky.com/qr-code-tutorial/ 和http://coolshell.cn/articles/10590.html

随机字符串:微信对随机字符串的要求是不超过32位。我这边是这样生成的,用时间戳。

[code] /**
* 创建UUID
* @return
*/
public static synchronized String makeUUID() {
Date date = new Date();
StringBuffer s = new StringBuffer(DateUtil.formatYmdhmsm(date));
return s.append((new Random().nextInt(900) + 100)).toString();
}
[/code]


使用Xstream时,由于微信定义的变量名大部分使用了“_”,但是在Xstream中它是关键字,所以会自动变为“__”,引起报错。详情请看:XStream异常:对象转为XML时,会把"_"转成"__";报错:(Lcom/thoughtworks/xstream/io/naming/NameCoder;)V

获取二维码链接时,只有在return_code 和result_code都为SUCCESS的时候有返回;这里我就简单的满足时返回,不满足返回null,您写的时候需要结合业务考虑下,是否需要增加判断,从而满足不同的业务场景。统一下单API

签名在上面一直没有详细说明,首先查看微信的安全规范中签名算法。key值,需要自己填写


[code] /**
* 生成签名
*
* @param appid_value
* @param mch_id_value
* @param productId
* @param nonce_str_value
* @param trade_type
* @param notify_url
* @param spbill_create_ip
* @param total_fee
* @param out_trade_no
* @return
*/
private String createSign(UnifiedOrderRequest unifiedOrderRequest) {
//根据规则创建可排序的map集合
SortedMap<String, String> packageParams = new TreeMap<String, String>();
packageParams.put("appid", unifiedOrderRequest.getAppid());
packageParams.put("body", unifiedOrderRequest.getBody());
packageParams.put("mch_id", unifiedOrderRequest.getMch_id());
packageParams.put("nonce_str", unifiedOrderRequest.getNonce_str());
packageParams.put("notify_url", unifiedOrderRequest.getNotify_url());
packageParams.put("out_trade_no", unifiedOrderRequest.getOut_trade_no());
packageParams.put("spbill_create_ip", unifiedOrderRequest.getSpbill_create_ip());
packageParams.put("trade_type", unifiedOrderRequest.getTrade_type());
packageParams.put("total_fee", unifiedOrderRequest.getTotal_fee());

StringBuffer sb = new StringBuffer();
Set es = packageParams.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 (null != v && !"".equals(v) && !"sign".equals(k)
&& !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
//第二步拼接key,key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
sb.append("key=" +"xxxxxxxxxxxxxxxxx");
String sign = MD5Util.MD5Encode(sb.toString(), "utf-8")
.toUpperCase();//MD5加密
return sign;
} [/code]
  • 1
  • 2
  • 3
  • 4
  • 5

前篇:96岁二战老兵收到迟到72年情书:妻子已去世... 后篇:JAVA支付宝:web页面扫码支付、网站支付、支...
发表我的评论


推荐文章   济南15处免费避暑胜地   安徽29岁偏瘫教师回课堂:感谢母亲,想...   盲女心医:16年免费为2000人做心理援助   漫画《老两口》把日子记在漫画里   他们是青春中国最美的样子!
随机文章   三种方法鼠标经过改变DIV背景颜色   【CSS】三列布局(左右div固定宽度,中...   移动页面自适应手机屏幕宽度   页面鼠标点击特效   飘荡在页面左下角的蒲公英
广告

其他推荐

因为本站所有内容均转载自其它媒体,本意为公众提供免费服务,但并不代表本网赞同其观点,也不能对其真实性验证负责,如稿件版权单位或个人不想在本网发布,请与我联系,本人会立即将其撤除,谢谢.联系方式:atseashawk@163.com QQ:99289555