java版微信App支付--下单

 接口:
 /**
  * 统一 下单
  * @param data
  * 必填:
  *  {  商品描述:body  --  终端IP: spbill_create_ip
  *     订单号:out_trade_no -- 金额:total_fee
  *     商品描述   body
  *  }
  *  选填:
  *  {
  *     设备号  device_info --  商品详情  detail
  *     附加数据  attach  --  货币类型  fee_type(默认人民币:CNY)
  *     交易起始时间 time_start--  交易结束时间  time_expire(如2009年12月27日9点10分10秒表示为20091227091010)
  *     商品标记  goods_tag(商品标记,代金券或立减优惠功能的参数)
  *     指定支付方式  limit_pay (no_credit--指定不能使用信用卡支付)
  *  }
  * @param request
  * @return
  */
 public String unifiedOrder(Map<String,String> data,HttpServletRequest request);
 public String unifiedOrder(Map<String, String> data, HttpServletRequest request) {
  HashMap<String, Object> resultMap = new HashMap<String, Object>();
  String message = "SUCCESS";
  String resultcode = "0000";
  SortedMap<Object, Object> result_map = new TreeMap<Object, Object>();
  try {
   // 封装 统一订单 数据
   SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
   // 遍历封装数据
   parameters = (SortedMap<Object, Object>) CommonUtil.traverse(data, parameters);
   parameters.put("appid", ConfigUtil.APP_APPID);
   parameters.put("mch_id", ConfigUtil.APP_MCH_ID);
   parameters.put("nonce_str", PayCommonUtil.createNoncestr());
   parameters.put("notify_url", ConfigUtil.NOTIFY_URL);
   parameters.put("trade_type", ConfigUtil.APP_TRADE_TYPE);
   String sign = PayCommonUtil.createSign("UTF-8", parameters, ConfigUtil.APP_API_KEY);
   parameters.put("sign", sign);
   String requestXML = XMLUtil.getRequestXml(parameters);
   // 统一下单 请求
   String responseXML = HttpUtil.httpsRequest(ConfigUtil.UNIFIED_ORDER_URL, "POST", requestXML);
   // 解析返回数据
   Map<String, String> response_map = XMLUtil.doXMLParse(responseXML);
   String return_code = response_map.get("return_code");
   String result_code = response_map.get("result_code");
   // 遍历封装数据
   result_map = (SortedMap<Object, Object>) CommonUtil.traverse(response_map, result_map);
   if (return_code.equals("SUCCESS") && result_code.equals("SUCCESS")) {
    result_map = new TreeMap<Object, Object>();
    String prepay_id = response_map.get("prepay_id");
    // 统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP
    result_map.put("appid", ConfigUtil.APP_APPID);
    result_map.put("partnerid", ConfigUtil.APP_MCH_ID);
    result_map.put("prepayid", prepay_id);
    result_map.put("noncestr", PayCommonUtil.createNoncestr());
    result_map.put("timestamp", PayCommonUtil.create_timestamp());
    result_map.put("package", "Sign=WXPay");
    sign = PayCommonUtil.createSign("UTF-8", result_map, ConfigUtil.APP_API_KEY);
    result_map.put("sign", sign);
   } else {
    resultcode = "0001";
    message = "系统繁忙,请稍后再试!";
   }
   MDC.put("requestType", "A-001");
   MDC.put("requestXML", requestXML);
   MDC.put("responseXML", responseXML);
   logger.info("==requestXML==" + requestXML + "--responseXML--" + responseXML);
  } catch (Exception e) {
   e.printStackTrace();
   resultcode = "0001";
   message = "系统繁忙,请稍后再试!";
  }
  // 返回固定格式
  resultMap.put("resultcode", resultcode);
  resultMap.put("message", message);
  resultMap.put("response", result_map);
  JSONObject jobj = JSONObject.fromObject(resultMap);
  String result = String.valueOf(jobj);
  return result;
 }

转载于:https://my.oschina.net/FightingBoy/blog/670204

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值