微信小程序微信小程序-微信支付和微信退款(微信支付和微信退款(Java后台)后台)
微信支付流程微信支付流程
都是我自己工作中开发的,亲测可用,不喜勿喷。都是我自己工作中开发的,亲测可用,不喜勿喷。
controller中我是这么写的,你们需要根据自己的业务需求改动。ResponseBean是我自己封装的,你们可以改成你们想要的形
式。`
/**
* 微信统一下单接口
* @return
*/
@RequestMapping(value = "/doUnifiedOrder", method = RequestMethod.POST)
public ResponseBean doUnifiedOrder(@RequestBody Map req) {
Map resultMap=new HashMap();
String openid = (String) req.get("openId");
WXPay wxpay =null;
try {
//初始化证书
myConfig.initCert();
wxpay= new WXPay(myConfig);
} catch (Exception e) {
e.printStackTrace();
}
//生成的随机字符串
String nonce_str = WXPayUtil.generateNonceStr();
//获取客户端的ip地址
//获取本机的ip地址
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
//支付金额,需要转成字符串类型,否则后面的签名会失败
String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get("money")));
String tradeName = (String) req.get("tradeName");
if(tradeName!=null&&tradeName.length()>0){
}else{
tradeName = "课程支付";
}
String body = tradeName;
//商户订单号
String out_trade_no= WXPayUtil.generateNonceStr();
//统一下单接口参数
HashMap data = new HashMap();
data.put("appid", 你的appid);
data.put("mch_id", 商户id);
data.put("nonce_str", nonce_str);
data.put("body", body);
data.put("out_trade_no",out_trade_no);
data.put("total_fee", payOutMoney);
data.put("spbill_create_ip", "127.0.0.1");
data.put("notify_url", 回调地址);
data.put("trade_type","JSAPI");
data.put("openid", openid);
try {
Map rMap = wxpay.unifiedOrder(data);
String return_code = (String) rMap.get("return_code");
String result_code = (String) rMap.get("result_code");
String nonceStr = WXPayUtil.generateNonceStr();
resultMap.put("nonceStr", nonceStr);
Long timeStamp = System.currentTimeMillis() / 1000;
if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
String prepayid = rMap.get("prepay_id");
resultMap.put("package", "prepay_id="+prepayid);