只需你按提示填空即可
1.小程序支付配置类
package com.jcloud.pay.log.payutil;
import com.github.wxpay.sdk.WXPayConfig;
import java.io.*;
/*
*我的小程序配置
*/
public class MyConfig implements WXPayConfig{
//小程序appid
private static final String APP_ID = "请填入你的小程序appid";
//商户号
private static final String MCH_ID = "请填入你的商户mchid";
//商户key
private static final String KEY= "请填入你的商户key";
private byte[] certData;
public MyConfig() throws Exception {
//自己建立一个存放证书路径把获取的证书解压到该文件下
String certPath = "/home/wx/cert/apiclient_cert.p12";
File file = new File(certPath);
InputStream certStream = new FileInputStream(file);
this.certData = new byte[(int) file.length()];
certStream.read(this.certData);
certStream.close();
}
public String getAppID() {
return APP_ID;
}
public String getMchID() {
return MCH_ID;
}
public String getKey() {
return KEY;
}
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
public int getHttpConnectTimeoutMs() {
return 10000;
}
public int getHttpReadTimeoutMs() {
return 1000;
}
}
2.maven下配置
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.3.87.ALL</version> </dependency>
3.通过code获取openid
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map<String, String> reqData= new HashMap<String, String>();
reqData.put("code", "小程序前段获取的code");
//调用微信api
Map<String, String> resultMap= WXPayUtil.authCodeToOpenid(reqData);
4.下单接口
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map<String, String> reqData= new HashMap<String, String>();
reqData.put("body", "商品名称");
reqData.put("out_trade_no", "你的订单");
reqData.put("total_fee", "付款金额(以分为单位)");
reqData.put("spbill_create_ip", "获取客户ip地址");
reqData.put("notify_url", "你的异步回调地址");
reqData.put("trade_type", "JSAPI");
reqData.put("product_id", "12");
reqData.put("openid", "用小程序前段获取的code得到openid");
Map<String, String> resultMap= null;
try {
//获取微信响应的信息
resultMap = wxpay.unifiedOrder(data);
//小程序二次签名
String timeStamp = System.currentTimeMillis()/1000 + "";
Map<String, String> signMap = new HashMap<String, String>();
signMap.put("appId", AppId);
signMap.put("timeStamp", timeStamp);
signMap.put("nonceStr", resultMap.get("nonce_str"));
signMap.put("package", "prepay_id="+resultMap.get("prepay_id"));
signMap.put("signType", "MD5");
String paySign = WXPayUtil.generateSignature(signMap,config.getKey,
WXPayConstants.SignType.MD5);
resultMap.put("timeStamp",timeStamp);
resultMap.put("paySign",paySign);
//把resultMap全部发给前段,前段所需要的字段全部都有了
} catch (Exception e) {
e.printStackTrace();
}