一、Native模式
Native支付是商戶系統(tǒng)按微信支付協(xié)議生成支付二維碼赘方,用戶再用微信“掃一掃”完成支付的模式铛楣。該模式適用于PC網(wǎng)站支付、實(shí)體店單品或訂單支付明肮、媒體廣告支付等場(chǎng)景菱农。
微信掃碼支付開(kāi)發(fā)者文檔
二、統(tǒng)一下單
1柿估、下載demo與SDK
sdk與demo中解壓后有接口可以直接用循未。
WXPay中包括了基本用到的接口,注釋也很清楚秫舌。直接使用就可以的妖。
我調(diào)用的代碼:
WXPayConfig wxPayConfig = new WxConfig();
WXPay wxPay = null;
Map<String, String> map = null;
try {
wxPay = new WXPay(wxPayConfig, WxConfig.notifyUrl);
Map<String, String> param = putParam(request);
// 標(biāo)價(jià)金額
param.put("total_fee", orderInfoBean.getOrderMoney());
// 商戶訂單號(hào)
param.put("out_trade_no", orderNo);
map = wxPay.unifiedOrder(param);
if (map == null) {
return ReturnMessage.fail(0, "程序錯(cuò)誤");
}
// 添加sign信息和微信訂單號(hào)
orderInfoBean.setSign(map.get("sign"));
int generatorOrder = iOrderDao.generatorOrder(orderInfoBean);
logger.info("插入訂單返回結(jié)果:{}", generatorOrder);
if (generatorOrder == 0) {
return ReturnMessage.fail(45, "生成訂單失敗");
}
map.put("orderNo", orderInfoBean.getOrderNo());
} catch (Exception e) {
e.printStackTrace();
}
WxConfig:
public class WxConfig extends WXPayConfig {
// 支付key
public static final String KEY = "自己配置";
// 公眾賬號(hào)ID
public static final String APPID = "自己的";
// 商戶號(hào)
public static final String mchId = "自己的";
// 設(shè)備號(hào)
public static final String deviceInfo = "WEB";
// 商品描述
public static final String body = "起個(gè)名绣檬,給用戶掃碼看的";
// 商品詳情
public static final String detail = "";
// 簽名類型
public static final String signType = "MD5";
// 通知地址
public static final String notifyUrl = "外網(wǎng)可以訪問(wèn)的地址";
// 交易類型
public static final String tradeType = "NATIVE";
// 當(dāng)前時(shí)間
private static Date localTime = new Date();
// 交易起始時(shí)間 訂單生成時(shí)間,格式為yyyyMMddHHmmss嫂粟,如2009年12月25日9點(diǎn)10分10秒表示為20091225091010
public static String getTimeStart() {
return DateUtil.parseDateToString(localTime, DateUtil.DATE_FORMAT_COMPACTFULL);
}
// 交易結(jié)束時(shí)間 現(xiàn)在時(shí)間加上1小時(shí)
public static String getTimeExpire() {
return DateUtil.afterNHoursDate(getTimeStart(), 1, DateUtil.DATE_FORMAT_COMPACTFULL);
}
@Override
String getAppID() {
return this.APPID;
}
@Override
String getMchID() {
return this.mchId;
}
@Override
String getKey() {
return this.KEY;
}
@Override
InputStream getCertStream() {
return null;
}
@Override
IWXPayDomain getWXPayDomain() {
return new IWXPayDomain() {
@Override
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
@Override
public DomainInfo getDomain(WXPayConfig config) {
DomainInfo domainInfo = new DomainInfo("api.mch.weixin.qq.com", true);
return domainInfo;
}
};
}
}