微信支付-扫码支付(模式二)

接口文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1php

【模式二】:商户后台系统调用微信支付【统一下单API】生成预付交易,将接口返回的连接生成二维码,用户扫码后输入密码完成支付交易。注意:该模式的预付单有效期为2小时,过时后没法支付。java

前期准备

设置支付目录api

主要填写好支付回调URL微信

统一下单接口

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorderapp

/**
     * 扫码支付 统一下单 模式二
     * @param body 商品简单描述
     * @param outTradeNo 订单号
     * @param totalFee 总金额 分
     * @param spbillCreateIp 下单人ip
     * @param productId 商品 id
     * @return 微信返回的xml
     */
    public static Map<String, String> unifiedorderOfScan(String body, String outTradeNo, Integer totalFee, String spbillCreateIp, String productId, SetBean setBean){
        Map<String, String> params = new HashMap<String, String>();
        params.put("appid", setBean.getAppId());
        params.put("mch_id", setBean.getMchId());
        params.put("body", body);

        // 商品ID trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。
        params.put("product_id", productId);
        // 商户订单号 商户系统内部的订单号,32个字符内、可包含字母, 其余说明见商户订单号
        params.put("out_trade_no",outTradeNo);
        params.put("total_fee", String.valueOf(totalFee));//支付总金额 单位 分
        params.put("spbill_create_ip", spbillCreateIp);//下单用户的客户端ip
        params.put("trade_type","NATIVE");
        params.put("nonce_str", nonceStr());//随机字符串
        params.put("notify_url", setBean.getNotifyUrl());//支付成功后的通知地址
        String sign=createSign(params,setBean.getPayKey());//生成请求签名
        params.put("sign",sign);
        String xmlResult= HttpKit.post(unifiedOrderUrl,toXml(params));//统一下单返回的结果
        Map<String, String> result = xmlToMap(xmlResult);
        return result;
        //返回的map
//        nonce_str    YhXsQPviD5PCbivy
//        code_url    weixin://wxpay/bizpayurl?pr=Xeb9VH5 将此连接生成二维码 用户扫码便可支付
//        appid    wxbXXXXXXXXXXXX
//        sign    C89118E990BE0A3132670CB269E33937
//        trade_type    NATIVE
//        return_msg    OK
//        result_code    SUCCESS
//        mch_id    12345678914
//        return_code    SUCCESS
//        prepay_id    wx201704281819305c471c92810030210111
    }
相关文章
相关标签/搜索