微信支付--预支付(统一下单)

微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1

1.按照微信官方文档统一下单接口的描述,将请求参数放入Map

protected Map<String, Object>  processPost(HttpServletRequest request, HttpServletResponse response) throws BaseException {

        String attach = ConvertUtil.getTrimStringFromRequestParam(request, "attach", "");
        String device_info = ConvertUtil.getTrimStringFromRequestParam(request, "device_info", WXPayConstants.DEVICE_INFO_DEFAULT.WEB.toString());
        String body = ConvertUtil.getNonEmptyStringFromRequestParam(request, "body");
        String detail = ConvertUtil.getTrimStringFromRequestParam(request, "detail", "");
        String out_trade_no = ConvertUtil.getNonEmptyStringFromRequestParam(request, "out_trade_no");
        String total_fee = ConvertUtil.getNonEmptyStringFromRequestParam(request, "total_fee");
        String trade_type = ConvertUtil.getTrimStringFromRequestParam(request, "trade_type", WXPayConstants.TRADE_TYPE.JSAPI.toString());
        String product_id = ConvertUtil.getNonEmptyStringFromRequestParam(request, "product_id");
        String openid = ConvertUtil.getNonEmptyStringFromRequestParam(request, "openid");

        Map<String, Object> parametersMap = CommonUtils.createMap("appid", WXPayConstants.APP_ID);//appid
        CommonUtils.generateMap(parametersMap, "attach", attach);//附加数据
        CommonUtils.generateMap(parametersMap, "mch_id", WXPayConstants.PAY_STORE_ID);//商户号
        CommonUtils.generateMap(parametersMap, "device_info", device_info);//设备号 自定义参数,可以为终端设备号(门店号或收银设备ID),PC网页或公众号内支付可以传"WEB"
        CommonUtils.generateMap(parametersMap, "nonce_str", WXPayUtil.generateNonceStr());
        CommonUtils.generateMap(parametersMap, "sign_type", WXPayConstants.SignType.MD5);
        CommonUtils.generateMap(parametersMap, "body", body);//商品描述
        CommonUtils.generateMap(parametersMap, "detail", detail);//商品详情
        CommonUtils.generateMap(parametersMap, "out_trade_no", out_trade_no);//自己系统的订单号
        CommonUtils.generateMap(parametersMap, "fee_type", WXPayConstants.FEE_TYPE.CNY);
        CommonUtils.generateMap(parametersMap, "total_fee", total_fee);//单位位分
        CommonUtils.generateMap(parametersMap, "spbill_create_ip", CommonUtils.getIpAddr(request));
        CommonUtils.generateMap(parametersMap, "notify_url", WXPayConstants.NOTIFY_URL);
        CommonUtils.generateMap(parametersMap, "trade_type", trade_type);
        CommonUtils.generateMap(parametersMap, "product_id", product_id);//商品id
        CommonUtils.generateMap(parametersMap, "openid", openid);//open id

        return WechatService.prepayId(parametersMap);
    }

2.用微信自带的工具类对map进行加密并获取签名

/**
     * 统一支付(获取预支付id)
     * @param
     * @return
     * @author lichenyi
     * @date 2017-8-25 0025 10:44
     */
    public static Map<String, Object>  prepayId(Map<String, Object> parametersMap) throws HttpRequestFailedException, MD5Exception {

        String resultString = null;
        try {
            String parameterXML = WXPayUtil.generateSignedXml(parametersMap);
            //wechat origin code
            WXPayRequest wxPayRequest = new WXPayRequest(new WXPayConfigBean());
            resultString = wxPayRequest.requestWithoutCert(WXPayConstants.UNIFIEDORDER_URL_SUFFIX, WXPayUtil.generateNonceStr(), parameterXML, false);
            logger.info("【预支付订单信息】 --> "+WXPayUtil.xmlToMap(resultString));
            return WXPayUtil.xmlToMap(resultString);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

写的粗糙,有疑问,可以留言。

如果觉得文章真心好, 请打赏下我吧http://blog.csdn.net/assassinsshadow/article/details/76086401

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值