第一步:更新token到应用中
RequestHandler requestHandler = new RequestHandler(super.getRequest(),super.getResponse());
//获取token //两小时内有效,两小时后重新获取
Token = requestHandler.GetToken()
requestHandler.getTokenReal();
System.out.println("微信支付获取token=======================:" +Token);
第二步:本地系统生成订单
// 设置package订单参数
SortedMap<String, String> packageParams = new TreeMap<String, String>();
packageParams.put("bank_type", "WX"); // 支付类型
packageParams.put("body", "xxxx"); // 商品描述
packageParams.put("fee_type", "1"); // 银行币种
packageParams.put("input_charset", "UTF-8"); // 字符集
packageParams.put("notify_url", "
http://xxxx.com/xxxx/wxcallback"); // 通知地址 这里的通知地址使用外网地址测试,注意80端口是否打开。
packageParams.put("out_trade_no", no); // 商户订单号
packageParams.put("partner", partenerid); // 设置商户号
packageParams.put("spbill_create_ip", super.getRequest().getRemoteHost()); // 订单生成的机器IP,指用户浏览器端IP
packageParams.put("total_fee", String.valueOf(rstotal)); // 商品总金额,以分为单位
第三步:设置支付参数
SortedMap<String, String> signParams = new TreeMap<String, String>();
signParams.put("appid", appid);
signParams.put("noncestr", noncestr);
signParams.put("traceid", PropertiesUtils.getOrderNO());
signParams.put("timestamp", timestamp);
signParams.put("package", packageValue);
signParams.put("appkey", this.appkey);
String sign ="";
try {
sign = Sha1Util.createSHA1Sign(signParams);
} catch (Exception e) {
e.printStackTrace();
}
// 增加非参与签名的额外参数
signParams.put("sign_method", "sha1");
signParams.put("app_signature", sign);
第四步://获取prepayid
String prepayid = requestHandler.sendPrepay(signParams);
System.out.println("prepayid :" + prepayid);