微信支付--异步处理支付结果

package com.ods.wx.web;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.eredlab.g4.rif.web.BaseAction;

import com.ods.wx.util.MessageUtil;
import com.ods.wx.wxpay.ReturnOrders;

public class PayLoginAction extends  BaseAction {
    @SuppressWarnings("static-access")
    public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        
        Map<String, String> map =MessageUtil.parseXml(request);
        String jsonObject = JSONObject.fromObject(map).toString();
        System.out.println("支付成功后异步返回数据为:"+jsonObject);
        if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {
            /**
             * 根据自己的需要并不是所有的字段都要保存,请结合实际情况
             */
            ReturnOrders retOrd = new ReturnOrders();
            retOrd.setAppid(map.get("appid"));//商户appid
            retOrd.setBank_type(map.get("bank_type"));//银行类型
            retOrd.setFee_type(map.get("fee_type"));//货币种类 CNY是人民币
            retOrd.setIs_subscribe(map.get("is_subscribe"));//是否关注公众账号
            retOrd.setMch_id(map.get("mch_id"));//商户号
            retOrd.setNonce_str(map.get("nonce_str"));//随机字符串
            retOrd.setOpenid(map.get("openid"));//用户openid
            retOrd.setOut_trade_no(map.get("out_trade_no"));//商户订单号
            retOrd.setResult_code(map.get("result_code"));//业务结果
            retOrd.setReturn_code(map.get("return_code"));//返回状态码
            retOrd.setSign(map.get("sign"));//签名
            retOrd.setSub_mch_id(map.get("sub_mch_id"));//子商户号  
            retOrd.setTime_end(map.get("time_end"));//支付完成时间
            retOrd.setTotal_fee(map.get("total_fee"));//总金额
            retOrd.setTrade_type(map.get("trade_type"));//交易类型
            retOrd.setTransaction_id(map.get("transaction_id"));//微信支付订单号
            //TODO 对数据库的操作
            System.out.println("==============支付异步处理==========");
            response.getWriter().write(setXML("SUCCESS", ""));   //告诉微信服务器,我收到信息了,不要在调用回调action了
            System.out.println("-------------"+setXML("SUCCESS", ""));
        }
        return mapping.findForward(null);
    }
    public static String setXML(String return_code, String return_msg) {
        return "<xml><return_code><![CDATA[" + return_code
                + "]]></return_code><return_msg><![CDATA[" + return_msg
                + "]]></return_msg></xml>";
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

微信支付--异步处理支付结果

上一篇:微信支付-----统一下单action


下一篇:微信支付---签名