这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始。

整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数到支付宝,支付宝直接返回一个表单,我们只需要将表单输出到页面上,后续支付宝异步通知,比较重要是验签,支付宝也提供的工具,比较方便。微信支付java开发详细

(jar包或maven的引入这里省略)

1、申请支付宝支付,这里大家自己研究,网上很多教程。

2、创建支付

/**

* 调用支付宝支付alipay.trade.page.pay

* 商户系统请求支付宝接口alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重定向至用户登录页面。

*

* @param model

* @return

* @throws Exception

*/

public String createAlipay(Model model, String order_no, BigDecimal amount, Integer resource_trad_id, String trad_type, HttpServletResponse response) throws Exception {

String form = "";

User user = (User) model.asMap().get("user");

//生成一笔预付订单流水

String trad_no = "PC_ALIPAY" + OrderNoUtil.leadsNo();//订单流水号

ShareUserTrad trad = new ShareUserTrad();

trad.setResourceTradId(resource_trad_id);

trad.setUserId(user.getId());

trad.setCreatedBy(user.getId());

trad.setLastUpdBy(user.getId());

trad.setOnlineOfflineFlag("0");//线上

trad.setOrderNo(order_no);

trad.setUserTradAmount(amount);

trad.setTradMethod("3");//支付宝

trad.setPayReceiveFlag("2");//支出

trad.setSuccessFlag("0");//交易进行中

trad.setTradType("1");//订单支付

trad.setTradNo(trad_no);

trad.setModifyNum(0);

shareUserTradMapper.insertSelective(trad);

try {

//初始化客户端

AlipayClient alipayClient = new DefaultAlipayClient(Config.alipay_url, Config.alipay_appid, Config.alipay_app_private_key, Config.alipay_format, Config.alipay_charset, Config.alipay_app_public_key, Config.alipay_sign_type);

//创建API对应的request

AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();

alipayRequest.setReturnUrl("");//回退到订单列表页面

alipayRequest.setNotifyUrl("");//在公共参数中设置回跳和通知地址

alipayRequest.setBizContent("{" +

" \"out_trade_no\":\"" + trad_no + "\"," +

" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +

//" \"total_amount\":" + amount.toString() + "," +

"\"total_amount\":\"0.01\"," +

" \"subject\":\"订单支付\"," +

" \"body\":\"订单:" + order_no + "支付\"," +

" \"passback_params\":\"" + order_no + "\"" +

" }");//填充业务参数

form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单

} catch (Exception e) {

e.printStackTrace();

String sOut = "";

StackTraceElement[] trace = e.getStackTrace();

for (StackTraceElement s : trace) {

sOut += "\tat " + s + "\r\n";

}

model.addAttribute("failMsg", sOut + "alipay_url:" + Config.alipay_url);

return "/pay/payFail";

}

response.setContentType("text/html;charset=" + Config.alipay_charset);

response.getWriter().write(form);//直接将完整的表单html输出到页面

response.getWriter().flush();

response.getWriter().close();

return null;

}

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/sanxing/article-70423-1.html

java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...相关推荐

  1. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

  2. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍         微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...

  3. 微信链接修改图片_微信链接修改图标

    自定义链接是什么?微信链接修改图片_微信链接修改图标 自定义微信分享链接是指将一条网页链接通过微信接口生成一张卡片,并且该卡片的标题,内容和图片都可以自己编辑.如下图效果 ● 未自定义的网页链接 ● ...

  4. 第三方支付现在处于什么阶段?如何衍生第三方支付的产业链?

    回答第一个问题我们不如先研究三方支付的产业阶段,研究产业的过去,现在以及未来的价值走向去看看在这个产业链上还有多少空间是尚待开发的,目前又到达了什么阶段. 首先我们先看看三方支付究竟帮助我们解决了什么 ...

  5. 四种电子商务支付模式:支付网关模式、网上银行模式、第三方支付模式和手机支付模式。

    网站浏览 分为 游客浏览模式(即无用户登录)四种电子商务支付模式:支付网关模式.网上银行模式.第三方支付模式和手机支付模式. 四种电子商务支付模式:支付网关模式.网上银行模式.第三方支付模式和手机支付 ...

  6. uni-app开发:tabar组件与顶部导航栏(功能开发篇)

    uni-app开发:tabar组件与顶部导航栏(含右侧icon点击功能)[结合:案例Demo截图] 一.效果图 · 截图: 二. tabar组件 + 顶部导航栏(含右侧icon点击功能) 组件的代码调 ...

  7. 【GD32F427开发板试用】三、USB转CAN功能开发与试用总结

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:chenjie [GD32F427开发板试用]一.环境搭建与freertos移植 [GD ...

  8. java微信红包开发_微信现金红包开发1(JAVA)

    参数3 : 商户订单号  mch_billno String mch_billno = mch_id + GenerateSequenceUtil.generateSequenceNo(); 些一个G ...

  9. 现金红包 java开发_微信现金红包开发1(JAVA)

    参数3 : 商户订单号  mch_billno String mch_billno = mch_id + GenerateSequenceUtil.generateSequenceNo(); 些一个G ...

  10. php 工商银行公众号支付代码_微信支付PHP SDK —— 公众号支付代码详解

    在微信支付 开发者文档页面 下载最新的 php SDK 这里假设你已经申请完微信支付 1. 微信后台配置  如图 我们先进行测试,所以先把测试授权目录和 测试白名单添加上.测试授权目录是你要发起微信请 ...

最新文章

  1. 十二张图详解Redis的数据结构和对象系统
  2. nginx 日志配置log_format用法
  3. Redis学习笔记之入门基础知识——简介
  4. 智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-汇总
  5. MySQL InnoDB Memcached Plugin在Oray公司的实践
  6. mycat 不得不说的缘分
  7. 电影AI修复,让重温经典有了新的可能
  8. 为什么不能用速度与时间的关系去实现动画
  9. 简述计算机绘图的应用领域试卷,计算机绘图试卷A(标准答案)
  10. Git(5)-- 获取 Git 仓库(git init 和 git clone命令)
  11. 细嚼浏览器兼容----条件注释判断浏览器版本
  12. python:TKinter获取Text文本框的输入内容(python图形化界面)
  13. JxBrowser 7.15 for java Crack
  14. ios 版手机迅雷的安装方法
  15. 数独游戏技巧从入门到精通_免费教学视频数独阶梯训练让孩子从入门到精通,数学思维直线上升!...
  16. 极限中0除以常数_第七讲 极限存在准则和两个重要极限
  17. 企业邮箱怎么收发邮件,怎么保护公司邮件安全?
  18. css hack *html,css hack 大全 各个浏览器的css
  19. 智慧实验室综合安全管理系统(高校版)、危化品管理、设备预约等
  20. Java EE系列(九)——Java EE连接Mysql数据库(JDBC保姆级教学)

热门文章

  1. 关于虚拟机第二块网卡eth1(仅主机模式)的配置问题
  2. git如何解决冲突(代码托管在coding)
  3. TinyXML学习记录及整理
  4. ASP.NETLinkButton的Click事件中获取CommandArgument的值
  5. 高效便捷地创建单元格数据图表
  6. 根据IP地址获取主机名称
  7. blockUI应用到Asp.Net页面时服务器控件(Button等)失效的问题
  8. kafka集群搭建(消息)
  9. vue如何实现单页缓存方案分析
  10. 使用Jmeter对mysql进行性能测试入门