1、注册微信支付商户号
https://pay.weixin.qq.com/static/product/product_index.shtml#payment_product
点击链接,在平台上进行注册。不过注册需要的资料还挺多的,需要有营业执照或者证明。要是提供不了这些信息的开发者可以网上找一下别人用于开发测试的商户号使用一下,或者找熟人要。
2、下载微信支付SDK
https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=11_1
点击链接,在里面下载JAVA SDK
3、修改SDK内容
1)导入SDK需要的包
把下载好的SDK进行解压,然后在IDEA中打开,在进行包下载后,还是有一些没包没有下载下来
这时候得自己动手在Modules settings中下载,在IDEA中右键点击文件夹WxPayAPI_JAVA选择Open Modules settings,然后在点击Libraries,在点击+号,选择from Moven Repository输入想要下载的包名就可以了
下载完包后,就没有报错了
2)创建一个类用于继承WXPayConfig类
package com.github.wxpay.sdk;
import java.io.InputStream;
public class MyWXPayConfig extends WXPayConfig{
String getAppID() {
return ""; //返回APPID,填写自己的APPID
}
String getMchID() {
return ""; //返回商户号,填写自己的商户号
}
String getKey() {
return ""; //返回key,填写自己的key
}
InputStream getCertStream() {
return null;
}
IWXPayDomain getWXPayDomain() {
//这个得自己去创建这个类并实现IWXPayDomain接口,实例化MyWXPayDomain
MyWXPayDomain myWXPayDomain=new MyWXPayDomain();
return myWXPayDomain;
}
}
3)创建一个类用于实现IWXPayDomain接口
package com.github.wxpay.sdk;
public class MyWXPayDomain implements IWXPayDomain{
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
public DomainInfo getDomain(WXPayConfig config) {
//创建域名信息类,并填写域名
DomainInfo domainInfo=new DomainInfo("api.mch.weixin.qq.com",true);
return domainInfo;
}
}
4)创建一个包用于实现微信支付生成
package com.zwy;
import com.github.wxpay.sdk.MyWXPayConfig;
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
public class WXDemo {
public static void main(String[] args) throws Exception {
//创建配置对象
MyWXPayConfig config=new MyWXPayConfig();
WXPay wxPay=new WXPay(config);
//创建支付信息集合
Map<String,String> data=new HashMap<String, String>();
data.put("body","充值中心");//商品描述
data.put("out_trade_no","2021062501201407033233368018");//商户订单号,一般按时间生成唯一的订单号
data.put("device_info","");//设备号
data.put("fee_type","CNY");//货币类型,CNY是分
data.put("total_fee","1");//总金额,1代表支付一分钱
data.put("spbill_create_ip","123.12.12.123");//终端IP
data.put("notify_url","https://www.weixin.qq.com/wxpay/pay.php");//通知地址,用户支付成功,会按照这个地址通知商户
data.put("trade_type","NATIVE");//交易类型,NATIVE是Native支付
data.put("product_id","13");//商品ID,trade_type=NATIVE时,此参数必传。
Map<String,String> resp=wxPay.unifiedOrder(data);
for(Map.Entry<String,String> entry:resp.entrySet()){ //遍历返回的信息,按行打印出来
String key=entry.getKey();
String value=entry.getValue();
System.out.println(key+":"+value);
}
}
}
4、结果显示
想要显示支付的二维码,可以把code_url的内容复制到二维码生成器中就可以显示支付的二维码了,现在这个二维码可能是没有效果的,因为这个二维码是有时间限制的。