微信支付 java 截取主要方法

本文介绍了一个使用Java实现的微信支付接口调用示例,包括如何设置必要的配置参数如appid、mch_id等,如何生成随机字符串nonce_str,如何获取发起请求的IP地址,如何构造统一下单所需参数并生成签名,以及如何发送请求到微信服务器并解析返回结果。
public static Object weixin_pay(String subject,String totalAmount,MetroMainModel metroMainModel,String strType,String code) throws Exception {
            // 账号信息
            String appid = SysConfig.APP_ID;  // appid
            System.out.println(appid+"ddddddddddddddddddddd");
            String mch_id = SysConfig.MCH_ID; // 商业号
            System.out.println(mch_id+"gggggggggggggg");

            String key = SysConfig.API_KEY; // key
           /* totalAmount     subject    subject   metroMainModel.getOrderID()   strType*/
            System.out.println(key+"hhhhhhhhhhhhhhhhh");

            String currTime = PayToolUtil.getCurrTime();
            String strTime = currTime.substring(8, currTime.length());
            String strRandom = PayToolUtil.buildRandom(4) + "";
            String nonce_str = strTime + strRandom;

            String order_price = totalAmount   ; // 价格   注意:价格的单位是分
            String body = URLDecoder.decode(subject,"UTF-8");;   // 商品名称

            // 获取发起电脑 ip
            String spbill_create_ip = SysConfig.CREATE_IP;

            System.out.println(spbill_create_ip+"bbbbbbbbbbbbbb");
            // 回调接口 
            String notify_url = SysConfig.NOTIFY_URL;

            System.out.println(notify_url+"bbbbbbbfffffffffbbbbbbb");

            String trade_type = strType;
    //      String trade_type = "JSAPI";

            SortedMap<Object,Object> packageParams = new TreeMap<Object,Object>();
            packageParams.put("appid", appid);
            packageParams.put("mch_id", mch_id);
            packageParams.put("nonce_str", nonce_str);
            packageParams.put("body", body);
            packageParams.put("out_trade_no", metroMainModel.getOrderID());
            packageParams.put("total_fee", order_price);
            packageParams.put("spbill_create_ip", spbill_create_ip);
            packageParams.put("notify_url", notify_url);
            packageParams.put("trade_type", trade_type);
            packageParams.put("device_info", metroMainModel.getDevID());
            if ("JSAPI".equals(strType)) {
                String openid = getWeiXinOpenID(code);
                packageParams.put("openid", openid);
            }


            String sign = PayToolUtil.createSign("UTF-8", packageParams,key);
            packageParams.put("sign", sign);

            String requestXML = PayToolUtil.getRequestXml(packageParams);
            LogUtil.writeLog("[MCPP >> Weixin] orderId="+metroMainModel.getOrderID()+"微信预下单请求"+requestXML);
            String resXml = HttpUtil.postData(SysConfig.UFDODER_URL, requestXML);
            System.out.println(resXml+"KKKKKKKKKKKKKKKKKKKKKK");
            LogUtil.writeLog("[MCPP << Weixin] orderId="+metroMainModel.getOrderID()+"微信预下单结果"+resXml);
            Map map = XMLUtil4jdom.doXMLParse(resXml);
            if ("JSAPI".equals(strType)) {
                Map returnMap = new HashMap();
                returnMap.put("prepay_id", 1);
                returnMap.put("sign", sign);
                return returnMap;
            }else {
                String urlCode = (String) map.get("code_url");
                String return_code = (String) map.get("return_code");
                if ("SUCCESS".equals(return_code)) {
                    metroMainModel.setPayType(2);
                    metroMainModel.setOrderTime(DateUtil.getNowDateByFormat(""));
                    /*MeTroUtil.insertMetro(metroMainModel);*/
                }
                return urlCode;
            }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值