• 支付宝接口DEMO文档下载

https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.qAEbso&treeId=62&articleId=103566&docType=1

  • 创建 反馈信息表
  • 支付业务逻辑处理

1、支付接口的“合作身份者ID”和“密匙”就要自己申请,这里跳过

下载完demo文档后,选择适合自己项目的语言和编码格式,这里用的是JAVA - UTF-8
然后导入到自己的项目中(目录结构自己自由排版,我采用文档提供的格式)

然后到 AlipayConfig 中填写申请到的合作者ID和 密匙!

2、反馈信息表 Alipayparams 的创建
(该表也可不创建,主要是为了能够记录每一笔交易的信息记录信息详情)
参考 “即时到账交易接口” 的文档内容 - 》“服务器异步通知参数说明”
创建 alipayparams 表


DROP TABLE IF EXISTS m_alipayparams;
CREATE TABLE m_alipayparams(payId INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,payType INT(11) DEFAULT 0 COMMENT '订单方式:0-支付,1-退款,2-提现,3-充值', sign VARCHAR(100) DEFAULT NULL COMMENT '签名',sign_type VARCHAR(50) DEFAULT NULL COMMENT '签名方式',paymethod VARCHAR(100) DEFAULT NULL COMMENT '支付方式:directPay(余额支付)', notify_id VARCHAR(100) DEFAULT NULL COMMENT '通知校验ID', notify_type VARCHAR(50) DEFAULT NULL COMMENT '通知类型 DSA/RSA/MD5',notify_time DATETIME DEFAULT NULL COMMENT '通知时间',trade_no VARCHAR(100) DEFAULT NULL COMMENT '支付宝交易号',out_trade_no VARCHAR(100) DEFAULT NULL COMMENT '商户网站唯一订单号',subject VARCHAR(257) DEFAULT NULL COMMENT '商品名称',payment_type VARCHAR(11) DEFAULT NULL COMMENT '支付类型 1:商品购买',trade_status VARCHAR(100) DEFAULT NULL COMMENT '交易状态',gmt_create DATETIME DEFAULT NULL COMMENT '交易创建时间',gmt_payment DATETIME DEFAULT NULL COMMENT '交易付款时间',gmt_close DATETIME DEFAULT NULL COMMENT '交易关闭时间',gmt_refund DATETIME DEFAULT NULL COMMENT '退款时间',refund_status VARCHAR(50)  DEFAULT NULL COMMENT '退款状态',seller_id VARCHAR(50)  DEFAULT NULL COMMENT '卖家支付宝用户号',seller_email VARCHAR(100)  DEFAULT NULL COMMENT '卖家支付宝账号',buyer_id VARCHAR(50)  DEFAULT NULL COMMENT '买家支付宝用户号',buyer_email VARCHAR(100)  DEFAULT NULL COMMENT '买家支付宝账号',price DOUBLE DEFAULT 0 COMMENT '商品单价',priceUnit INT(11) DEFAULT 0 COMMENT '单价单位',quantity INT(11) DEFAULT 0 COMMENT '购买数量',total_fee DOUBLE DEFAULT 0 COMMENT '交易金额',body VARCHAR(100) DEFAULT NULL COMMENT '商品描述',discount VARCHAR(100) DEFAULT NULL COMMENT '折扣',is_total_fee_adjust VARCHAR(10) DEFAULT NULL COMMENT '是否调整总价',use_coupon VARCHAR(10) DEFAULT NULL COMMENT '是否使用红包买家',  extra_common_param VARCHAR(100) DEFAULT NULL COMMENT '公用回传参数',business_scene VARCHAR(100) DEFAULT NULL COMMENT '是否扫码支付',createTime DATETIME COMMENT '创建时间'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='支付宝信息记录表';

接下来开始整合实现的方法
在下载的支付宝demo文档中,可以看到 alipayapi.jsp 和 notify_url.jsp

将这两个页面中的代码 转化成 JAVA形式 写入 AlipayAction.java

/*** 支付宝服务器异步通知页面* @param req* @param res*/@RequestMapping(value="/alipayNotify")public void alipayNotify(HttpServletRequest req,HttpServletResponse res){//获取支付宝POST过来反馈信息Map<String,String> params = new HashMap<String,String>();Map requestParams = request.getParameterMap();for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");params.put(name, valueStr);}//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)///**商户订单号*///String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");/**支付宝交易号*///String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");/**交易状态*/String trade_status = "";try {trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//if(AlipayNotify.verify(params)){//验证成功↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//请在这里加上商户的业务逻辑程序代码//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——/***  TRADE_FINISHED(表示交易已经成功结束,并不能再对该交易做后续操作);TRADE_SUCCESS(表示交易已经成功结束,可以对该交易做后续操作,如:分润、退款等);*/if(trade_status.equals("TRADE_FINISHED")){//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的//如果有做过处理,不执行商户的业务程序//注意://退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知} else if (trade_status.equals("TRADE_SUCCESS")){//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的//如果有做过处理,不执行商户的业务程序//注意://付款完成后,支付宝系统发送该交易状态通知}//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——out("success",res); //请不要修改或删除/↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/}else{//验证失败out("fail",res);}}/*** 向支付宝发送请求* @param req* @param res* @param alipayConfig*/@RequestMapping(value="/alipayApi")public void alipayApi(HttpServletRequest req,HttpServletResponse res,AlipayConfig alipayConfig){/**商户订单号,商户网站订单系统中唯一订单号,必填*/String out_trade_no = "";/**订单名称,必填*/String subject = "";/**付款金额,必填*/String total_fee = "";/**商品描述,可空*/String body = "";try {out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"),"UTF-8");body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}///**把请求参数打包成数组*/Map<String, String> sParaTemp = new HashMap<String, String>();sParaTemp.put("service", AlipayConfig.service);//sParaTemp.put("partner", AlipayConfig.partner);sParaTemp.put("seller_id", AlipayConfig.seller_id);sParaTemp.put("_input_charset", AlipayConfig.input_charset);//sParaTemp.put("payment_type", AlipayConfig.payment_type);//sParaTemp.put("notify_url", AlipayConfig.notify_url);sParaTemp.put("return_url", AlipayConfig.return_url);sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);//sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);//sParaTemp.put("out_trade_no", out_trade_no);sParaTemp.put("subject", subject);sParaTemp.put("total_fee", total_fee);sParaTemp.put("body", body);//其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1//如sParaTemp.put("参数名","参数值");/**建立请求*/String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"get","确认");out(sHtmlText,res);}

之后在 alipayNotify 方法内编写自己的业务逻辑即可。。。。

支付宝:即时到账接口对接相关推荐

  1. 支付宝即时到账接口开发 - DEMO讲解

    支付宝即时到账接口开发 - DEMO讲解 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail? ...

  2. 支付宝即时到账接口使用历险记

    闲来无事,找来支付宝即时到账接口用了下.遇到一些事情,现在想回放下,看遍电影. 如上图所示,支付宝官方给的使用流程,前3步客户做好自不必说,在第4.5步遇到一些问题: 1.支付宝跳转页面同步通知(re ...

  3. Payment:支付宝即时到账接口接入教程

    记住,如果觉得文档写得不清楚,一定要告诉我.励志写好文档为大家服务! Payment 3.0 支付宝的配置设置文档请 点击这里 项目GitHub地址:https://github.com/helei1 ...

  4. java支付宝即时到账api_集成支付宝即时到账接口

    签约授权 即时到账接口需要商家签约后才有使用的权限. 商家签约后拥有 即时到账交易接口(create_direct_pay_by_user) 即时到账批量退款有密接口(refund_fastpay_b ...

  5. ThinkPHP 3.2 支付宝即时到账接口开发

    前言: 一.支付流程 构造请求参数 向支付宝网关发送请求 生成支付宝页面 支付宝交易结果 二.构建支付类 1.官方即时到账文档地址: https://doc.open.alipay.com/doc2/ ...

  6. 支付宝 java 乱码_支付宝即时到账接口中文乱码问题

    遇见乱码的情况一般都是粗心大意造成的,就像我今天对接支付宝支付接口碰到的中文商品名称在支付宝收银台乱码了,找了半天问题原来是控制层没有设置响应编码造成的. //设置返回字符编码,设置返回内容类型防止中 ...

  7. 支付宝手机网页支付即时到账接口

    mycncart的前后台均为移动设备方便访问,支付宝方面单独针对移动设备访问网站设立了支付接口,普通的支付宝即时到账接口无法在手机网页上正常支付 本支付插件是支付宝手机网页即时到账接口. 本插件需要解 ...

  8. 搞定支付接口(一) 支付宝即时到账支付接口详细流程和代码

    搞定支付接口(一) 支付宝即时到账支付接口详细流程和java代码 为避免你们和我一样被支付接口搞得焦头烂额,写一个从申请开始到能收到钱为止的详细教程,实际上各个语言都可以用来集成支付接口,我用java ...

  9. 支付宝手机网页即时到账接口(3)之交易接口请求

    前言 这篇文章主要讲诉系统调用支付宝手机网页即时到账交易接口跳转到支付宝收银台. 上篇文章地址:支付宝手机网页即时到账接口(2)之授权接口请求. 这是第一篇文章结尾调用交易接口的图解. 交易接口请求参 ...

最新文章

  1. 【Python初级】009-错误与异常
  2. PCB Editor 布线后操作
  3. oracle登录错误:ORA-28000: the account is locked 解决方法
  4. “问答官”活动SQL专场来啦!小米行李箱、无线鼠标等你拿!
  5. 【spider】多线程爬虫
  6. 打印三角形之细节讲解
  7. linux6.0 SVN 服务搭建
  8. c语言数字和字母排序,C# 数字和字母的混合排序
  9. jTip定制实现博客日历
  10. 关于类类型的隐式类型转换
  11. python入门教程pdf-《python基础教程第三版》高清版PDF免费下载
  12. IEEE Access 模板 图片编辑
  13. jdbc连接数据库步骤oracle,jdbc连接oracle数据库的步骤
  14. win10系统禁用音频服务器,win10未安装音频设备怎么办|win10声音找不到音频设备解决方法...
  15. java 读取文件 效率_JAVA读写文本文件的效率
  16. 阿铭linux苹果客户端,2018年5月 – 阿铭Linux
  17. 租房申请html模板,实用的租房房源标题模板
  18. clickHouse 使用常见问题踩坑
  19. Linux命令行配置无线,Linux_CentOS-6.4无线上网命令行配置介绍,待连接的WIFI的ssid为“thmrdq - phpStudy...
  20. 不义联盟2显示服务器,打开不义联盟2提示网络异常或者连接不上

热门文章

  1. 重置数据this.$options.data()
  2. 20230329英语学习
  3. vue引入echarts中国地图
  4. 移动浏览器的内核WebKit介绍
  5. Creator+微信小游戏(2):服务器远程加载资源(4M限制、socketio问题)
  6. python画二维图像
  7. VMware 软件改变软件颜色
  8. PointNet: PointNet+WIN10+训练与测试
  9. 串口烧录android板子,【嵌入式学习笔记二】烧录制作好的镜像到4412开发板中
  10. android native 相册,React Native手动实现调用原生相机相册(Android端)