最近公司接的项目到了后期,我负责结算这块对接了支付宝和微信的支付通道,支付宝接口比微信调起来舒服的多

首先商户在蚂蚁金服开发平台申请开发权限,配好密钥下载支付宝工具jar包,然后对接相应的接口

这几个都是固定的

//请求地址
private static String URL = “https://openapi.alipay.com/gateway.do”;

//支付宝分配给开发者的应用ID
private static String APP_ID = “”;

//编码格式
private static String CHARSET = “utf-8”;

//私钥
private static String APP_PRIVATE_KEY ="";

//支付宝公钥
private static String ALIPAY_PUBLIC_KEY ="";

static AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,“json”,CHARSET,ALIPAY_PUBLIC_KEY,“RSA2”);

电脑网站支付接口 传入订单号和金额就行

public void transferpay(HttpServletRequest httpRequest,
HttpServletResponse httpResponse) throws ServletException, IOException {
String out_trade_no = httpRequest.getParameter(“out_trade_no”);//订单编号
String total_amount = httpRequest.getParameter(“total_amount”);//订单金额
String return_url = “”;//成功页面
return_url = “http://testwww”;
Map<String, String> map1 = new LinkedHashMap<String, String>();
//商户订单号,64个字符以内、可包含字母、数字、下划线
map1.put(“out_trade_no”, out_trade_no);
//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
map1.put(“product_code”, “FAST_INSTANT_TRADE_PAY”);
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
map1.put(“total_amount”, total_amount);
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
map1.put(“subject”, “商品订单”);
//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。
map1.put(“timeout_express”, “5m”);
//编码格式gbk,RSA2签名算法
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
String json = JsonUtil.map2Json(map1);
alipayRequest.setReturnUrl(return_url);
//回调地址 支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
alipayRequest.setNotifyUrl(“http://testwww”);//在公共参数中设置回跳和通知地址
alipayRequest.setBizContent(json);
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
httpRequest.setAttribute(“result”,form);
httpRequest.setAttribute(“retCode”,0000);
httpRequest.setAttribute(“msg”,“订单生成成功”);
} catch (AlipayApiException e) {
httpRequest.setAttribute(“retCcode”,0001);
httpRequest.setAttribute(“retMsg”,“订单生成失败”);
e.printStackTrace();
}
System.out.println(“form:”+form);
httpResponse.setContentType(“text/html;charset=” + CHARSET);
httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
APP支付接口

public @ResponseBody String apppay(HttpServletRequest httpRequest,
HttpServletResponse httpResponse) throws ServletException, IOException {
Map<String, String> map = new HashMap<String, String>();
String out_trade_no = httpRequest.getParameter(“out_trade_no”);
String total_amount = httpRequest.getParameter(“total_amount”);

if(StringUtils.isEmpty(out_trade_no)) {return "请选择订单号";
}
if(StringUtils.isEmpty(total_amount)) {return "请选择订单金额";
}else{total_amount = StringUtil.parseAmountLong2Str(Long.parseLong(total_amount));
}
//编码格式gbk,RSA2签名算法
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();//创建API对应的request
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
// 订单标题
model.setSubject("app订单");
//商户订单号,64个字符以内、可包含字母、数字、下划线
model.setOutTradeNo(out_trade_no);
//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
//model.setTimeoutExpress("5m");
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
model.setTotalAmount(total_amount);
//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("http://testwww");
String orderString="";try {// 这里和普通的接口调用不同,使用的是sdkExecuteAlipayTradeAppPayResponse response  = alipayClient.sdkExecute(request); //返回支付宝订单信息(预处理)orderString = response.getBody();//就是orderString 可以直接给APP请求,无需再做处理。map.put("retCode","0000");map.put("retMsg","订单生成成功");map.put("state",orderString);} catch (AlipayApiException e) {map.put("retCode","0001");map.put("retMsg","订单生成失败");e.printStackTrace();
}
String json = JsonUtil.map2Json(map);
logger.info("orderString:"+orderString);
return json;

支付异步回调接口

public Map<String, String> paymentNotify(HttpServletRequest httpRequest) throws ServletException, IOException {
logger.info(“支付宝订单支付异步回调”);
Map<String, String> map = new LinkedHashMap<String, String>();
Map<String, String> params = convertRequestParamsToMap(httpRequest); // 将异步通知中收到的待验证所有参数都存放到map中
logger.info(“订单信息:”+params.toString());
String out_trade_no = httpRequest.getParameter(“out_trade_no”);//商户订单号
String trade_no = httpRequest.getParameter(“trade_no”);//支付宝流水号
String seller_id = httpRequest.getParameter(“seller_id”);//支付宝唯一用户号
String timestamp = httpRequest.getParameter(“timestamp”);//时间
String code = httpRequest.getParameter(“code”);//返回码
String msg = httpRequest.getParameter(“msg”);//处理结果的描述,信息来自于code返回结果的描述
String trade_status = httpRequest.getParameter(“trade_status”);//TRADE_SUCCESS成功支付
map.put(“out_trade_no”, out_trade_no);
map.put(“trade_no”, trade_no);
map.put(“seller_id”, seller_id);
map.put(“timestamp”, timestamp);
map.put(“code”, code);
map.put(“msg”, msg);
if(trade_status.equals(“TRADE_SUCCESS”)){//支付成功
//修改支付记录支付状态
}
logger.info(“订单信息:”+map.toString());
return map;

对接支付宝支付通道接口相关推荐

  1. java 对接支付宝支付

    2019独角兽企业重金招聘Python工程师标准>>> 对接支付宝支付的前提: 1,商户开通支付能力 登录蚂蚁金服 开放平台:https://open.alipay.com/plat ...

  2. JAVA对接支付宝支付(超详细,一看就懂)

    Java对接支付宝支付 更多内容 冷文博客: 传送门 引入 为什么要发这篇帖子呢?原因很简单,就是因为在一个稍稍正规一点的应用上都会有支付这个环节,我们日常的在线支付如今包括支付宝,微信钱包,QQ钱包 ...

  3. java对接支付宝支付

    java对接支付宝支付演示 现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付 废话不多说 上代码 引入支付宝官方的sdk <!-- https://mvnrepository ...

  4. java对接支付宝支付(手机网站支付)

    记录一下对接支付宝支付的过程,既是对这段时间工作的总结,也希望能对之后需要对接支付宝手机网站支付的小伙伴一点帮助. 1.查看官方文档,具体对接流程(https://docs.open.alipay.c ...

  5. SpringBoot+vue3对接支付宝支付详细教程

    SpringBoot+vue3对接支付宝支付详细教程 本人也是第一次做这个,是一个刚刚学习自学支付的萌新,目的是在于学习,只是为了记录自己的学习过程,怕以后会忘记,因为我没有企业账号,所以用的是自己的 ...

  6. 项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案: 关闭所有窗口,只打开那个支付页面窗口就可以 转载h ...

  7. 对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案:   关闭所有窗口,只打开那个支付页面窗口就可以

  8. PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

    PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,接下来跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试 ...

  9. android支付功能开发,对接支付宝支付接口开发详细步骤

    对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧. 第一步:(先要在支付宝进行操做 ...

最新文章

  1. nodejs async
  2. porphet论文_时间序列模型Prophet使用详细讲解
  3. string的find函数
  4. 数据库索引为什么使用B+树?
  5. torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)
  6. python中的matplotlib.pyplot_python matplotlib中axes与axis的区别?
  7. complete checkbox in Fiori
  8. 前端学习(2743):重读vue电商网站53之项目上线
  9. java二期_JAVA基础之多线程二期
  10. 我用Python帮学校写了一款图书管理系统!教导员居然请我吃饭
  11. MYSQL 【汇总数据】 【分组数据】 学习记录
  12. 手机所有录音功能失效_疯狂打CALL!小米手机自带扫描文字功能,一秒识别所有文字信息!...
  13. 有的时候print函数不会立即打印的解决办法(flush=True)
  14. Ubuntu 11.04 安装后要做的20件事
  15. python检查超过两个条件_python-基于多个条件检查,将值从另一个数据...
  16. VB2010(18)_各种对话框的使用
  17. 机器视觉知识汇总(持续更新)
  18. 记录工作时,优化程序代码二
  19. Android开发——GPS定位
  20. freertos demo2: LED blinky queue 发送消息

热门文章

  1. 23王道数据结构代码题全解(一)
  2. OkHttp 内存溢出问题 A connection to xxxxxx was leaked.
  3. 英国招募***建网络部队防控网络冷战到来
  4. Unity使用材质球使图片发光
  5. wordpress移动_如何在移动设备上隐藏WordPress小部件(易于初学者使用)
  6. 2021中国胡润百富榜揭晓:中国首富竟是他......
  7. 用R语言建立VAR模型预测中国移动美国股价
  8. DNSPod十问刘水音:90后女CEO的“学历内卷”破局宝典
  9. 1089A--Lazyland
  10. java poi getcelltype_java – 替代已弃用的getCellType