微信支付一 :公众号支付3 申请退款

来源:互联网 发布:溪谷h5游戏平台源码 编辑:程序博客网 时间:2024/04/27 17:44
 /**     * 验证签名     *      * @param map     * @return     */    public boolean verifyWeixinNotify(Map<Object, Object> map) {        SortedMap<String, String> parameterMap = new TreeMap<String, String>();        String sign = (String) map.get("sign");        for (Object keyValue : map.keySet()) {            if (!keyValue.toString().equals("sign")) {                parameterMap.put(keyValue.toString(), map.get(keyValue).toString());            }        }        String createSign = pay.getSign(parameterMap);        if (createSign.equals(sign)) {            return true;        } else {            logger.error("微信支付  ~~~~~~~~~~~~~~~~验证签名失败");            return false;        }    }    /**     * 申请退款     *      * @param out_trade_no     *            订单号     * @param total_fee     *            总金额(元)     * @param refund_fee     *            退款金额(元)     * @return     * @throws Exception     */    public JsonView Refund(String out_trade_no, String total_fee, String refund_fee) throws Exception {        Map<String, Object> result = new HashMap<String, Object>();        // 元转分        total_fee = AmountUtils.changeY2F(total_fee);        refund_fee = AmountUtils.changeY2F(refund_fee);        String out_refund_no = "";// 退款单号        logger.error("微信退款 ----WECHAT_APPID=" + pay.WECHAT_APPID);        SortedMap<String, String> packageParams = new TreeMap<String, String>();        packageParams.put("appid", pay.WECHAT_APPID);// 微信公众号apid        packageParams.put("mch_id", pay.MCH_ID);// 微信商户id        packageParams.put("nonce_str", pay.create_nonce_str(16));// 随机字符串        packageParams.put("out_trade_no", out_trade_no);// 订单号        packageParams.put("out_refund_no", out_trade_no);        packageParams.put("total_fee", total_fee);// 总金额 单位为分,只能为整数        packageParams.put("refund_fee", refund_fee);// 退款金额 单位为分,只能为整数        packageParams.put("op_user_id", pay.MCH_ID);// 操作员帐号, 默认为商户号        String sign = pay.getSign(packageParams);        packageParams.put("sign", sign);        String xml = pay.ArrayToXml(packageParams);        logger.error("微信退款 ----请求的POST XML数据 我要疯了=" + xml);        String createOrderURL = "https://api.mch.weixin.qq.com/secapi/pay/refund";        String backxml = "";        try {            backxml = ClientCustomSSL.doRefund(createOrderURL, xml);        } catch (Exception e) {            // TODO Auto-generated catch block            logger.error("微信退款 ----请求异常" + e);            e.printStackTrace();        }        logger.error("微信退款 ----收到的xml=" + backxml);        Map<Object, Object> map = Xmlunit.xml2map(backxml, false);        if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {            if (verifyWeixinNotify(map)) {                logger.error("微信退款 ----验证签名成功");                // 退款成功操作                int editres = Wechat_Order.execute("UPDATE wechat_order SET orderstatus =? WHERE orderno=?",                        new Object[] { EnumOrderStatus.refund.getValue(), map.get("out_trade_no") });                result.put("result", editres);            } else {                result.put("result", "微信退款成功,验证签名失败,未修改订单状态");                logger.error("[" + out_trade_no + "]微信退款成功,验证签名失败,未修改订单状态=" + backxml);            }        } else {            result.put("result", "微信退款失败");            logger.error("[" + out_trade_no + "]微信退款失败=" + backxml);        }        logger.error("微信退款 ----最后的结果=" + backxml);        return new JsonView(result);    }


                                             
0 0
原创粉丝点击