刚刚接触app支付宝支付的时候还是走了很多弯路的,希望看到的小伙伴们别要走那么多弯路。
最好以支付宝(蚂蚁金服)提供的文档和API去开发,网上别人写的一些加签方式,可能并不好用。
下面这个地址为App支付请求参数说明:
https://docs.open.alipay.com/204/105465/
还有支付宝的SDK下载地址:
https://docs.open.alipay.com/54/103419
把压缩包解压,之后就是这样:
打开readme.txt

把这两个jar包导入你们自己的项目里面,就可以直接用支付宝的加签方式了,根本就不需要你们自己写的,我就是这个走了不少弯路。
下面就上代码了:

public class AlipayConfig  {// 合作身份者ID,以2088开头由16位纯数字组成的字符串public static String partner = "2088*********4";// 6.请求网关地址public static String URL = "https://openapi.alipay.com/gateway.do";    public static String service = "mobile.securitypay.pay";//固定值public static String seller_id = "*******@163.com";//私钥public static String private_key = "";// 商户的公钥钥public static String public_key ="";// 支付宝的公钥,无需修改该值(不要删除也不要修改,在接收通知的时候需要进行签名认证)public static String ali_public_key= "";// 字符编码格式 目前支持 gbk 或 utf-8public static String input_charset = "utf-8";// 签名方式 不需修改public static String sign_type = "RSA";//APPIDpublic static String APPID = "****************";    //支付宝回调地址 public static String notify_url = "";// 8.返回格式public static String FORMAT = "json" 

关于支付宝的回调地址提供给你们一个可以穿透内网的工具:
https://natapp.cn/
通过这个网址获得一个地址,来穿透内网,测试一个支付宝支付还是可以的,具体的操作可以自行百度一下,还是比较简单的。

String orderStr="";try {Map<String, String> orderMap = new LinkedHashMap<String, String>(); // 订单实体Map<String, String> bizModel = new LinkedHashMap<String, String>(); // 公共实体/****** 2.商品参数封装开始 *****/ // 手机端用// 商户订单号,商户网站订单系统中唯一订单号,必填orderMap.put("out_trade_no", orderPayRequest.getOrderId());// 订单名称,必填orderMap.put("subject", "***支付");// 付款金额,必填orderMap.put("total_amount", String.valueOf(orderPayRequest.getActualPayMoney()));// 销售产品码 必填orderMap.put("product_code", "QUICK_WAP_PAY");/****** --------------- 3.公共参数封装 开始 ------------------------ *****/ // 支付宝用// 1.商户appidbizModel.put("app_id", AlipayConfig.APPID);// 2.请求网关地址bizModel.put("method", AlipayConfig.URL);// 3.请求格式bizModel.put("format", AlipayConfig.FORMAT);// 4.回调地址bizModel.put("return_url", AlipayConfig.notify_url);// 5.私钥bizModel.put("private_key", AlipayConfig.private_key);// 6.商家idbizModel.put("seller_id", AlipayConfig.partner);// 7.加密格式bizModel.put("sign_type", AlipayConfig.sign_type + "");/****** --------------- 3.公共参数封装 结束 ------------------------ *****/// 实例化客户端AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID,AlipayConfig.private_key, AlipayConfig.FORMAT, AlipayConfig.input_charset,AlipayConfig.ali_public_key, AlipayConfig.sign_type);// 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.payAlipayTradeAppPayRequest ali_request = new AlipayTradeAppPayRequest();// SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();// model.setPassbackParams(URLEncoder.encode((String)orderMap.get("body").toString()));;// //描述信息 添加附加数据// model.setBody(orderMap.get("body")); //商品信息model.setSubject(orderMap.get("subject")); // 商品名称model.setOutTradeNo(orderMap.get("out_trade_no")); // 商户订单号(自动生成)model.setTotalAmount(orderMap.get("total_amount")); // 支付金额model.setProductCode(orderMap.get("product_code")); // 销售产品码model.setSellerId(AlipayConfig.partner); // 商家idali_request.setBizModel(model);ali_request.setNotifyUrl(AlipayConfig.notify_url); // 回调地址AlipayTradeAppPayResponse responses = client.sdkExecute(ali_request);orderStr = responses.getBody();System.err.println(orderStr); // 就是orderString 可以直接给客户端请求,无需再做处理} catch (Exception e) {e.printStackTrace();}return orderStr;

把得到的加了签的字符串给前端就好了,让他们直接去调用支付宝去支付,
还有一个支付宝回调的方法,这个方法并不需要前端访问,而是支付宝回调的:
这个方法的路径,就是支付宝的回调地址,当然了,你得让支付宝能访问你这个方法,内网测试就得用到刚刚用工具得到的地址来测试了:把这个加到刚刚得到的地址后面就好了:比如
http://3gtdkc.natappfree.cc/“项目名字”/order-pay-notify-controller

@RequestMapping(value = "/order-pay-notify-controller", method = {RequestMethod.POST,RequestMethod.GET })public void notify(@RequestBody String body, HttpServletRequest requests, HttpServletResponse httpServletResponse)throws IOException {// 1.从支付宝回调的request域中取值Map<String, String[]> requestParams = requests.getParameterMap();System.out.println("从支付宝回调的request域中取值:requestParams===================================" + requestParams);for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = iter.next();String[] values = 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);}// 2.封装必须参数String out_trade_no = requests.getParameter("out_trade_no"); // 商户订单号System.err.println("out_trade_no==================================" + out_trade_no);String orderType = requests.getParameter("body"); // 订单内容System.out.println("orderType==================================" + orderType);String tradeStatus = requests.getParameter("trade_status"); // 交易状态System.err.println("tradeStatus=================================" + tradeStatus);// 3.签名验证(对支付宝返回的数据验证,确定是支付宝返回的)boolean signVerified = false;try {// 3.1调用SDK验证签名signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ali_public_key, AlipayConfig.input_charset);System.out.println(signVerified);} catch (Exception e) {e.printStackTrace();}}// 4.对验签进行处理
if (signVerified) { // 验签通过
if (tradeStatus.equals("TRADE_SUCCESS")) {// 只处理支付成功的订单:修改交易表状态,支付成功下面的就是你们自己的业务逻辑了 :
成功和失败以后的逻辑了

好了,这就是支付宝app支付逻辑了,加签和验签的方法支付宝都封装好了,不需要我们自己写

java支付宝app支付代码相关推荐

  1. Java支付宝APP支付-验证异步通知消息

    上一章已经讲述了支付宝如何生成支付订单,这一章讲述一下支付宝生成订单之后,异步通知接口的开发. 这里先讲一下啥叫支付宝异步通知:对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址 ...

  2. 支付宝app支付java后台流程、原理分析(含nei wang chuan tou)

    java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写      一.流程步骤          1.执行流程            当手机端app(就是你公司开发的app) ...

  3. java后端实现集成支付宝APP支付(沙箱环境)

    沙箱环境集成支付宝APP支付后端实现 前言 获取支付宝相关信息 整体开发流程 1.获取核心参数 2.将支付宝SDK集成到项目中 3.后台使用支付宝SDK与支付宝进行交互逻辑 1.将支付宝公共信息参数写 ...

  4. 支付宝APP支付Java服务端

    支付宝APP支付Java服务端: 公司项目要求对接支付宝进行支付功能,这边做出整理方便以后使用(支付宝的支付对接还是很简单的). 1):去支付宝开放平台,-1.注册账号,2.创建应用 3.配置应用 4 ...

  5. 支付宝APP支付(java后台版)

    本实例是基于springBoot框架编写 一.流程步骤          1.执行流程            当手机端app在支付页面时,调起服务端创建订单(自己公司业务接口)接口,后台把需要调起支付 ...

  6. java 支付宝服务端,支付宝app支付服务端的实现-Java版

    前言 最近在工作中需要使用支付宝app支付,在初次使用过程中也不可避免的出现了一些问题,那么本次随笔主要是概述支付宝app支付服务端的整个实现过程以及就服务端出现的一些问题做一些总结. 1.准备工作 ...

  7. app支付宝支付java后台_支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

  8. 支付宝app支付java后台流程demo

    支付宝app支付java后台流程demo 使用ssm框架实现支付宝支付功能. 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ss ...

  9. 【支付宝支付】Java实现支付宝APP支付流程

    前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...

  10. java SpringBoot 对接支付宝 APP支付 证书模式及非证书模式

    一. 添加maven依赖 sdk <dependency><groupId>com.alipay.sdk</groupId><artifactId>al ...

最新文章

  1. 计算机视觉基本原理——RANSAC
  2. Linux下解决“shutdown: command not found“问题
  3. ESP32中下载固件时的波特率设置和调试监控时波特率的设置
  4. MS SQL 获取字符串最后出现的字符串及位置
  5. php数据库录入和输出,PHP数据库之CURD操作
  6. Qt Load and Save PCL/PLY 加载和保存点云
  7. Sharepoint学习笔记---如何找到SharePoint List的Template ID
  8. SmartTemplate学习入门一
  9. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
  10. 定制Bootstrap3
  11. 第3个项目实操:用类与对象的方法编程
  12. Tomcat的下载及环境变量配置
  13. 决策树的实现及可视化方法总结
  14. 质心公式_No.217 质心位置的求法(基础篇)
  15. 【U8+】修改或删除凭证提示此分录两清
  16. 开放计算何处觅?JDM安天下
  17. taobao.trades.sold.query( 根据收件人信息查询交易单号 )
  18. 公共自行车点查询_基于预测信息的公共自行车查询系统设计
  19. 计算机一级win10,Win10进入WinRE的四种方法
  20. 课题:shell脚本安装httpd

热门文章

  1. html样式类collapse,[ CSS-CSS3 ] 史上最全CSS样式一览表
  2. 从生活角度学习c++
  3. spanning-tree portfast default
  4. ResponseEntity下载
  5. python处理excel——创建excel工作簿和工作表并录入信息(openpyxl库)
  6. 虚拟化VMware简介5——DRS 与 DPM 详解
  7. PAT A 1034
  8. Mocha.js官方文档翻译 —— 简单、灵活、有趣
  9. 一起来找茬:记一起 clang 开启 -Oz 选项引发的血案
  10. android语音识别sdk接入收费吗,百度语音识别开放平台SDK使用方法