微信扫码支付Native模式

一、Native模式

Native支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。
微信扫码支付开发者文档

二、统一下单

1、下载demo与SDK

sdk与demo中解压后有接口可以直接用。
WXPay中包括了基本用到的接口,注释也很清楚。直接使用就可以。
我调用的代码:

        WXPayConfig wxPayConfig = new WxConfig();
        WXPay wxPay = null;
        Map map = null;
        try {
            wxPay = new WXPay(wxPayConfig, WxConfig.notifyUrl);
            Map param = putParam(request);
            // 标价金额
            param.put("total_fee", orderInfoBean.getOrderMoney());
            // 商户订单号
            param.put("out_trade_no", orderNo);
            map = wxPay.unifiedOrder(param);
            if (map == null) {
                return ReturnMessage.fail(0, "程序错误");
            }
            // 添加sign信息和微信订单号
            orderInfoBean.setSign(map.get("sign"));
            int generatorOrder = iOrderDao.generatorOrder(orderInfoBean);
            logger.info("插入订单返回结果:{}", 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 = "自己配置";
    // 公众账号ID
    public static final String APPID = "自己的";
    // 商户号
    public static final String mchId = "自己的";
    // 设备号
    public static final String deviceInfo = "WEB";
    // 商品描述
    public static final String body = "起个名,给用户扫码看的";
    // 商品详情
    public static final String detail = "";
    // 签名类型
    public static final String signType = "MD5";
    // 通知地址
    public static final String notifyUrl = "外网可以访问的地址";
    // 交易类型
    public static final String tradeType = "NATIVE";

    // 当前时间
    private static Date localTime = new Date();

    // 交易起始时间  订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010
    public static String getTimeStart() {
        return DateUtil.parseDateToString(localTime, DateUtil.DATE_FORMAT_COMPACTFULL);
    }

    // 交易结束时间  现在时间加上1小时
    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;
            }
        };
    }
}

你可能感兴趣的:(微信扫码支付Native模式)