网站下载Java demo
|方法名 | 说明 |
|--------|--------|
|microPay| 刷卡支付 |
|unifiedOrder | 统一下单|
|orderQuery | 查询订单 |
|reverse | 撤销订单 |
|closeOrder|关闭订单|
|refund|申请退款|
|refundQuery|查询退款|
|downloadBill|下载对账单|
|report|交易保障|
|shortUrl|转换短链接|
|authCodeToOpenid|授权码查询openid|
* 注意:
* 证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载
* 建议将证书文件名改为复杂且不容易猜测的文件名
* 商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件
* 请妥善保管商户支付密钥、公众帐号SECRET,避免密钥泄露
* 参数为`Map<String, String>`对象,返回类型也是`Map<String, String>`
* 方法内部会将参数会转换成含有`appid`、`mch_id`、`nonce_str`、`sign\_type`和`sign`的XML
* 可选HMAC-SHA256算法和MD5算法签名
* 通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)
* 对于downloadBill,无论是否成功都返回Map,且都含有`return_code`和`return_msg`,若成功,其中`return_code`为`SUCCESS`,另外`data`对应对账单数据
创建类继承WXPayConfig
public class MyWXConfig extends WXPayConfig {
private byte[] certData;
public MyWXConfig() throws Exception {
String certPath = "src/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();
}
@Override
public String getAppID() {
return "";
}
@Override
public String getMchID() {
return "";
}
@Override
public String getKey() {
return "";
}
@Override
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
@Override
public IWXPayDomain getWXPayDomain() { // 这个方法需要这样实现, 否则无法正常初始化WXPay
IWXPayDomain iwxPayDomain = new IWXPayDomain() {
@Override
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
@Override
public DomainInfo getDomain(WXPayConfig config) {
return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true);
}
};
return iwxPayDomain;
}
}
main方法直接调用测试
public class WXTest {
public static void main(String[] args) throws Exception {
MyWXConfig config = new MyWXConfig();
WXPay wxpay = new WXPay(config);
SortedMap<String, String> packageParams = new TreeMap<String, String>();
packageParams.put("appid", config.getAppID());
packageParams.put("mch_id", config.getMchID());
packageParams.put("fee_type", "CNY");
packageParams.put("auth_code", "");
packageParams.put("nonce_str", WXPayUtil.generateNonceStr());
packageParams.put("body", "缴费");
packageParams.put("out_trade_no", "");
packageParams.put("total_fee", "1");
packageParams.put("spbill_create_ip", "");
//packageParams.put("notify_url", notify_url);
//packageParams.put("trade_type", trade_type);
// 根据package数据生成预支付订单号的签名sign
String sign = WXPayUtil.generateSignature(packageParams, config.getKey());
// 生成需要提交给统一支付接口https://api.mch.weixin.qq.com/pay/unifiedorder 的xml数据
packageParams.put("sign", sign);
try {
Map<String, String> resp = wxpay.microPay(packageParams);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}