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

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>";

}

}

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

时间: 2024-10-03 23:02:28

微信支付--异步处理支付结果的相关文章

微信公众号JSAPI支付

微信公众号JSAPI支付 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.config.php中填入配置账户信息; 二:设置授权 开发者中心->网页服务->网页授权获取用户基本信息->修改; “授权回调页面域名修改成你的域名地址即可,须保证网页授权已获得,不然会报redirect_uri 参数错误; 三:网页授权获取用户openid js_api_call.php 请求文件中改动(所有传给微信的参数都在入口文件中接收) $out_tr

微信支付,支付宝支付,银联支付——三大支付总结

转载:  https://juejin.im/post/596d97576fb9a06bb874a812 银联支付,支付宝支付,微信支付的三大总结,之前也有写过两篇. 微信支付,支付宝支付,银联支付--三大支付总结: http://blog.csdn.net/androidstarjack/article/details/72669394 支付宝植入总结: android 支付宝的植入 <曾经踩过的坑> 微信支付总结: Android 微信支付总结 备注:出于安全考虑,验签我们都是放到后台进行

如何可靠的对接微信、支付宝条码支付

场景 餐厅提供了网络点餐服务,用户通过微信能很方便的进行点餐并支付,享受餐厅提供的各种餐饮服务.其中可靠的支付服务是其中的核心环节之一,如果支付出了问题,对餐厅或用户都是一个损失,甚至会引起纠纷.如何避免发生这样的问题或者是把发生这样问题的概率降到最低,那就需要结合业务特点和使用场景来仔细分析隐藏的问题. 下面以微信支付中的2种支付场景来解析一下对接过程中遇到的问题以及如何解决 条码支付 对于支付宝和微信的条码支付,都是没有支付成功回调的.这点必须注意,那么基于这个特点,服务器对接了条码支付,就

iOS----支付(微信支付、支付宝支付、银联支付控件集成支付)(转)

资料 支付宝 //文档idk都包含了安卓.iOS版 银 联 银联官网资料 Demo Demo给了一个订单号,做测试使用,若出现支付失败什么的,可能是已经被别人给支付了,或者是服务器订单过期了 ~ 一.支付宝 1.1 请阅读支付宝文档和Demo 1.2 导入对应的库 将支付宝Demo中得这些东西全拷贝过来 1 2 3 4 5 localhost:alipay mac$ ls APAuthV2Info.h        Order.h            libssl.a APAuthV2Info

微信二维码支付native原生支付开发模式二

模式一相比,流程更为简单,不依赖设置的回调支付URL.商户后台系统先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付.注意:code_url有效期为2小时,过期后扫码不能再发起支付. 1.业务流程时序图 图6.9原生支付模式二时序图 业务流程说明: 1)商户后台系统根据用户选购的商品生成订单. 2)用户确认支付后调用微信支付[统一下单API]生成预支付交易: 3)微信支付系统收到请求后生成预支付

8. PHP接入微信的三种支付:APP支付、公众号支付、扫码支付

微信的支付逻辑与支付宝的支付有一些差别.为了让客户端忽略这些差别,统一调用.本sdk做了对应处理. # SDK调用 微信支付不同接口需要的参数会有差别.请大家在使用接口时,仔细查看文档. use Payment\ChargeContext; use Payment\Config; use Payment\Common\PayException; // 微信支付,必须设置时区,否则发生错误 date_default_timezone_set('Asia/Shanghai'); // 生成订单号 便

***单文件搞定微信支付和支付宝支付

这段时间做微信支付和支付宝支付集成,发现了一个不错的开源代码 简单快捷,单文件即可搞定微信支付和支付宝支付. 单文件搞定微信支付系列: https://github.com/dedemao/weixinPay weixinPay 一个PHP文件搞定微信支付系列 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入微信支付的带来些许帮助和借鉴意义. 一个PHP文件搞定支付宝系列请移步:https://github.com/d

asp.net core 微信支付工具类(H5支付,扫码支付,公众号支付,app支付)之2-H5支付

上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理.申请开通微信H5支付工作不多做介绍,直接上代码. 首先是微信支付业务类(WxPayService)中的方法,传上必要的参数,该方法将会构造请求XML字符串到微信api接口,H5支付用到的是返回XML参数的mweb_url的值,控制器中的Aciton方法调用该业务层方法得到mweb_url的值,此时,前端ajax调用控制器返回mweb_url值,直接将window.localtion

java实现沙箱测试环境支付宝支付(demo)和整合微信支付和支付宝支付到springmvc+spring+mybatis环境全过程(支付宝和微信支付、附源码)

一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse readme.txt请好好看一下. 只有一个Java配置类,其余都是JSP. 3.配置AlipayConfig (1).注册蚂蚁金服开发者账号(免费,不像苹果会收取费用) 注册地址:https://open.alipay.com ,用你的支付宝账号扫码登录,完善个人信息,选择服务类型(我选的是自研). (2).设