社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
本人用的刷卡支付( 之前看错了,一直在看扫码支付,心塞 ),如图
首先,做一系列准备,获取appid等等,可以写在一个配置文件里面,如图
获取配置文件的信息,可以写一个util,从类路径下读取属性文件,如下
import java.io.IOException;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class WxpayConfigUtil {
private static final Log LOG = LogFactory.getLog(WxpayConfigUtil.class);
private static Properties properties = new Properties();
static {
try {
// 从类路径下读取属性文件
properties.load(WxpayConfigUtil.class.getClassLoader()
.getResourceAsStream("WxpayConfig.properties"));
} catch (IOException e) {
LOG.error(e);
}
}
public static String readConfig(String key) {
return (String) properties.get(key);
}
}
其中支付、查询、退款、退款查询等需要用到WxPayConfig对应的方法,所以需要写一个实现WxPayConfig接口的配置文件,重写方法即可,如下
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import com.github.wxpay.sdk.WXPayConfig;
public class WxConfig implements WXPayConfig{
private boolean isSub = true;
public Map<String, String> getMap(){
Map<String, String> map = new HashMap<String, String>();
if(isSub){
map.put("sub_mch_id", this.getSubMchID());
}
return map;
}
public WxConfig() {
}
public WxConfig(boolean isSub) {
this.isSub = isSub;
}
@Override
public String getAppID() {
return WxpayConfigUtil.readConfig("APPID");
}
@Override
public String getMchID() {
return WxpayConfigUtil.readConfig("MCHID");
}
public String getSubAppID(){
return WxpayConfigUtil.readConfig("SUB_APPID");
}
public String getSubMchID(){
return WxpayConfigUtil.readConfig("SUB_MCHID");
}
@Override
public String getKey() {
return WxpayConfigUtil.readConfig("KEY");
}
@Override
public InputStream getCertStream() {
FileInputStream fis = null;
try {
fis = new FileInputStream(new File(this.getClass().getClassLoader().getResource("XX.xx").getPath()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return fis;
}
@Override
public int getHttpConnectTimeoutMs() {
return 0;
}
@Override
public int getHttpReadTimeoutMs() {
return 0;
}
}
准备工作算是好了,下面写第一个方法,刷卡支付
注意需要先定义一些属性,也可以不定义,之后每个方法都需要新创建对象
比如:
刷卡的方法,参数可以不用传这么多,传必要的就可以
注意,其中有数据可以乱写,但是要注意字数,ip地址是测试支付的手机ip等
然后,主函数内调用即可:
控制台就会返回相应的数据,然后微信就会弹出支付的窗口,支付即可。
根据刚才支付的结果可以查询订单,如下:
控制台会打印相应的数据(部分id没展示):
----------查询----------
{transaction_id=4200000186201808068346690710, trade_state=SUCCESS, bank_type=CFT, return_msg=OK, fee_type=CNY, cash_fee=1, out_trade_no=201808007496748980290321, total_fee=1, trade_state_desc=支付成功, trade_type=MICROPAY, result_code=SUCCESS, attach=, time_end=20180806172129, is_subscribe=N, return_code=SUCCESS}
同理,主函数进行测试即可,注意传入什么参数,怎么调用,最后得到什么结果(最近师傅给我说的)。
本人写给自己看的随笔,欢迎指出问题
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!