springboot调用支付宝第三方接口(沙箱环境)

springboot+调用支付宝第三方接口(沙箱环境)

大神勿喷!!

网址:https://developers.alipay.com/platform/developerIndex.htm

沙箱环境中给测试提供了一些必要和非必要的参数,需要自己动手修改的只有RSA密钥,需要通过支付宝提供的开发工具生成RSA密钥,下载链接:https://docs.open.alipay.com/291/105971#LDsXr

下载完成安装之后,可以生成RSA密钥.生成的密钥分为应用公钥,应用私钥.应用私钥自己保存,应用公钥应该到支付宝的开放平台上生成相应的支付宝公钥才可以正常使用.

沙箱工具中点击设置


保存好

上述操作完成后,即可进行代码的编写.

二. 配置一个用于支付宝调用的Config

package com.mr.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
*类名:AlipayConfig
*作者:AAA_有梦想一起实现
*/
public class AlipayConfig{

// ↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "2016101200671304";//例:2016082600317257

//
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdMTRJ3Zb+02z8FB8DlH/alg8+aJmzUrZuEjXX2dLcNa40iceSor6hm797VAtfRNvSNVtWsNGkWm/wrmX3l/gn6/tY1LvLv8B2jl1Lg3lN1KQWsHcJ6GI1HvoWSMdJGj3OeA5UttHheDga/7mjTYIcxoBZs9uBXvFnYDSv+f5v59h9SK5N/+OtIBtCw+YzoJC9U6RkxbrR//F/XgQ76XMtKITzHYLn2cN0eD6XvD8rngC3I/9DX0vVLax1X7JuM00dVUhmJegzFsQv6Z3CfeBZ+euhNPSVgfTCMwzD74qbHz8LR0NviNm7AuAjkqxDUM+HJNW7TQbpbCS/z14nXd7lAgMBAAECggEAcYOL4xB+Kh6UwrUMyYiPKL1z60JBBr8+8jQUP8cAqJQ/56SBsCYnEMbeOMuD3ot3CGTrkAzEOcVTxz+pAqyR5OL9JbRfAAxTGEStalB5k1C6OQ6suH/yznIsQ/1rkH+QEoKYUC9WfJB2spxkR4NCb8QLIH3l+3mfB79eqqTwR7rOp8yjG0Yzme96HplP/MjTgS7M5P+K3SVibb+he9DQa1bSB9jDGXJzFJ8AdRHUHg3gucQI4PFxbM25aBvQUC37/FF2riQFD4akJkoIHRjvrRsWW+f07H8Cr+aH6jlj0tMVTxk86GzXF7rME+LTACDsF4vA3gXGOPS7VpK2M19sTQKBgQDu9dxQ+m14cJjeH1bI2KGF7wqnfz1Tw1TNC9O5iZSKWbVpL8yM1qgDgOQ7Dano+uq/3dloeeXTV8J3LcnzfaImqq44nCTVD7gdKF95Ei9s609GbLhDmKrt+8SB/r1WJAqQofzl2OE0hdUqpi4i8s7HUdCyjh/yZnSfIrWm0+XjfwKBgQDs9v3SiahNmI8niUIW8CtU7V5SkP7RHJiHGKZkVisiqFQJArT+LfRMLc5bHhd5GvwDlgHDonKQbSq8i9A63xLGJNnuCOahcKEkWsFsUAb80iLre5OmLvKKeKHcVnffkGXIFW/vrhHqBvgzeKqrlvn5OaVGC/omM/OVojrzML9fmwKBgQDNUwRTsFqPunAfq93uBfYEFzmYYoRXjOc4qIjsS4MOvbZbA29HNMp4+C8jbsIoJjG/WuiMFPGdfzLhJL76MWE6yD2a9s/PIwqYQzCF31JQzH/5i0FpE60Lf+GBsVkOwzkwvX+IH6qibryTQOczsF5sdahVRDm/FrnuYuyixEAsEQKBgQC+goBkULnX0Kxe29IfgO1FdSTc+qdy1SuniWDU0BYT4gLVz7BVnfqHeFgsF1BF1DUCaQp4D1VN2gZ+2WUKv6dnV99BqTRKXLOg97oD638CqarbaVm2RI5IV13COF5dhcjeiKWaq3bJkNrg/sUv+Mx12yuN2jk9l4zhIzGDrRBeuwKBgQDd2Y1BNmL8Q5iTq+q6TyHBVKchJGrkqLQn7S7x9mBEmCFhhWe0+8ZEN+wXw6pMVV5792g8eY8q0QI1TFIPkuJ8PdMTM6OFQxAjvDfO5JrapxfQSa3Jp6gwyokB6AjpKslLdgBJBs55/rtGPj/6YGxWiCvUvEbVgGbIszeJmcMwMA==";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm
// 对应APPID下的支付宝公钥。
public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi6SVG0As6Kak8f5ouIJ6DecmZZfmkk/U8/90SCmUwdGlh66olKWzOF3Sv9S62jOeHQSi6I/NCe4SDB8N92Ocr9cI3aKwmBeqeXVAxD3/HcVTuywBAhymlgAsDVLd/W6nbVPisHcPBX9f+x/5dP9B2ukz531NmGqpbQ3eiziaE26uHhvBIoicjv90nWM9hB8fGCMYooEVxZ+Mh7zVRMlv+r6HJzBpgL4dqEqSGfPdZZJC9yDfxu+D9Q4A7yuT3I75+tu2AiaAM7S+K/MIAvpvPw3wL4C+XEMaPOV3NITxMQAk9Hkvx5AV9W+jpUdhSgJtHIfe/AzD4qu8ADeV3OBk1wIDAQAB";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
/**
 * 返回的时候此页面不会返回到用户页面,只会执行你写到控制器里的地址
 */
public static String notify_url = "http://127.0.0.1:8080/good/notifyUrl";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
/**
 * 此页面是同步返回用户页面,也就是用户支付后看到的页面,上面的notify_url是异步返回商家操作,谢谢
 * 要是看不懂就找度娘,或者多读几遍,或者去看支付宝第三方接口API,不看API直接拿去就用,遇坑不怪别人
 */
public static String return_url = " http://127.0.0.1:8080/good/return1Url";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "gbk";
// 支付宝网关
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
// 日志地址
public static String log_path = "D:/logs/";
// ↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

/**
 * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
 *
 * @param sWord
 *      要写入日志里的文本内容
 */
public static void logResult(String sWord) {
  FileWriter writer = null;
  try {
    writer = new FileWriter(log_path + "alipay_log_"
        + System.currentTimeMillis() + ".txt");
    writer.write(sWord);
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    if (writer != null) {
      try {
        writer.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}
}

如果你是在本地测试,支付完成不会跳转回调页面,那么就需要外网了,推荐一个东西,叫内网穿透,只要你电脑tomcat启动,可以连接外网,可以从127.0.0.1:8080或者其他端口也行进入你的项目,就可以用;

【内网穿透】

某花生qiao,不免费6块大洋---------------------------NATAPP 有免费的(只是域名会强制变),不过测试足够了----------------------ngrok或者frp自行度娘

也有免费开源的,如果不想麻烦就用【NATAPP】吧,网址貌似是:natapp.cn

三.控制器Controller里的代码

pom.xml里的依赖

如果不是maven项目,下载jar包导入

下载地址:http://central.maven.org/maven2/com/pentahohub/nexus/alipay-sdk-java/20150820220052/alipay-sdk-java-20150820220052.jar

Controller代码

/**

快捷支付调用支付宝支付接口

@param model,id,payables,

@throws IOException,AlipayApiException

@return Object

@author AAA_有梦想一起实现

@date 2017年11月29日

payables//获得价格

subject//商品名称

bodyv//商品描述
*/
@RequestMapping(“alipaySum”)
public Object alipayIumpSum(Model model,String ordId, String subject, String body, HttpServletResponse response)
throws Exception {

// 获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, “json”, AlipayConfig.charset,
AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

// 设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url);
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

/* SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMddHHmmssSSS”);
String out_trade_no = sdf.format(new Date());*/
// 商户订单号,商户网站订单系统中唯一订单号,必填
Order order=orderService.getOrderByOrdId(ordId);

// 付款金额,必填
alipayRequest.setBizContent("{\"out_trade_no\":\"" + order.getOrdCode() + "\","
    + "\"total_amount\":\"" + order.getOrdMoney()
    + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + "明瑞教育," + "\","
    + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
// 请求
String result = alipayClient.pageExecute(alipayRequest).getBody();
// System.out.println(result);
AlipayConfig.logResult(result);// 记录支付日志
response.setContentType("text/html; charset=gbk");
PrintWriter out = response.getWriter();
out.print(result);
return null;
}

参数传入是必须有的,不然会报错,说订单信息有误

如果有其他额外参数,请参考支付宝第三方API文档,这里菜鸟能力有限,懒得去查,也懒得写了

支付宝第三方支付API地址:https://docs.open.alipay.com/api_1/alipay.trade.create/

支付完成回调------异步返回商家,也就是notify_url

代码:

/**

正确跳转支付成功页面

@return
*/
@RequestMapping(“return1Url”)
public String return1Url(HttpServletRequest request) throws Exception {
System.out.println(“这是return1Url方法”);

System.out.println("----------------------------notify_url------------------------");
// 商户订单号
String ordCode = new String(request.getParameter(“out_trade_no”).getBytes(“ISO-8859-1”), “GBK”);
//成功后修改支付页面
orderService.updateOrderPayType(ordCode, Constant.ORDER_STATUS_NO_PAY);
//跳转页面
return “redirect:/good/toCreateOrder”;
}

关于代码中用到的Servlet的东西,请自行进行改进吧,还有不要像我一样把业务写在Controller里,要写在service里哦!

我这边就简单的返回了一个页面;

/**

正确跳转支付成功页面

@return
*/
@RequestMapping(“return1Url”)
public String return1Url(HttpServletRequest request) throws Exception {
System.out.println(“这是return1Url方法”);

System.out.println("----------------------------notify_url------------------------");
// 商户订单号
String ordCode = new String(request.getParameter(“out_trade_no”).getBytes(“ISO-8859-1”), “GBK”);
//成功后修改支付页面
orderService.updateOrderPayType(ordCode, Constant.ORDER_STATUS_NO_PAY);
//跳转页面
return “redirect:/good/toCreateOrder”;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot整合支付宝APP支付

    前言 现在是移动端产品疯狂的年代,随之,移动端支付也是热门小技能,最近本公司在做一个移动端,要接入微信支付和支付宝支付,老习惯,功能做完之后做个复盘记录,这边主要讲解支付宝APP支付 所需条件 1.创建蚂蚁金服开放平台公司账号 2.选择开发中心---->移动应用 3.选择支付接入 4.创建应用 5.查看应用appId 6.添加功能 两个功能:支付宝授权功能和APP支付功能 7.功能签约 开发流程 引入支付宝支付SDK <!-- 支付宝支付 SDK --> <dependency&g

  • Spring Boot接口设计防篡改、防重放攻击详解

    本示例主要内容 请求参数防止篡改攻击 基于timestamp方案,防止重放攻击 使用swagger接口文档自动生成 API接口设计 API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数,为了防止被别有用心之人获取到真实请求参数后再次发起请求获取信息,需要采取很多安全机制. 需要采用https方式对第三方提供接口,数据的加密传输会更安全,即便是被破解,也需要耗费更多时间 需要有安全的后台验证机制,达到防参数篡改+防二次请求(本示例内容) 防止重放攻击必须要保证请求

  • spring boot 下支付宝的开箱既用环境

    sdk-alipay spring boot下支付宝的开箱既用环境 使用场景 spring boot应用中需要接入支付宝 开始使用 pom.xml中引入依赖 <dependency> <groupId>net.guerlab</groupId> <artifactId>sdk-alipay-starter</artifactId> <version>1.0.3</version> </dependency> b

  • SpringBoot设置接口超时时间的方法

    SpringBoot设置接口访问超时时间有两种方式 一.在配置文件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为20000ms即20s, 二.还有一种就是在config配置类中加入: public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureAsyncSupport(fin

  • SpringBoot集成支付宝沙箱支付(支付、退款)

    前言 支付宝推出一个沙箱环境,能够很好的模拟支付宝支付,并且还提供了demo,但demo是一个普通web项目,怎么整合到Spring Boot项目呢,其实很简单 简单配置请参照支付宝沙箱支付开发文档 一.支付部分 AlipayConfig配置:我使用的是页面跳转同步通知,返回路径return_url为公网访问地址,也可以使用localhost,且不能携带参数,APPID.商户私钥.支付宝公钥和支付宝网关换为自己的. public class AlipayConfig{ // 应用ID,您的APP

  • SpringBoot下如何实现支付宝接口的使用

    这篇文章主要介绍了SpringBoot下如何实现支付宝接口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前期准备: 参考之前写过的 支付宝接口引入servlet版本 Jar包引入: <!-- 支付宝 --> <dependency> <groupId>net.guerlab</groupId> <artifactId>sdk-alipay-starter</artifactId&g

  • 解决Vue调用springboot接口403跨域问题

    最近在做一个前后端分离的项目, 前端用的是Vue后端使用的是springboot, 在项目整合的时候发现前端调用后端接口报错403跨域请求问题 前端跨域请求已解决, 那么问题就出在后端了, 找了一些资料找到了很多种方法, 这里说两个简单粗暴的. 注意:"@CrossOrigin"注解要求jdk1.8及以上版本, SpringMVC 4.2及以上版本 1. 在controller层上添加@Configuration注解, 如果没有效果请制定RequestMapping总的method类型

  • IDEA基于支付宝小程序搭建springboot项目的详细步骤

    服务端 在平台上创建springboot小程序应用 创建小程序 登录蚂蚁金服开放平台,扫码登录填写信息后,点击支付宝小程序,选择立即接入 > 同意个人公测 > 开始创建 . 填写好小程序基本信息后,点击创建按钮,创建名为xxx小程序. PS:一个账号下最多可以创建10个小程序:未提交过审核的小程序可以删除,删除的小程序不在计数范围. 创建云应用后端服务 在小程序页面选择刚创建的小程序,点击查看,进入开发者页面. 在左侧导航栏选择云服务(免费),点击创建云服务,选择创建云应用,技术栈选Sprin

  • springboot调用支付宝第三方接口(沙箱环境)

    springboot+调用支付宝第三方接口(沙箱环境) 大神勿喷!! 网址:https://developers.alipay.com/platform/developerIndex.htm 沙箱环境中给测试提供了一些必要和非必要的参数,需要自己动手修改的只有RSA密钥,需要通过支付宝提供的开发工具生成RSA密钥,下载链接:https://docs.open.alipay.com/291/105971#LDsXr 下载完成安装之后,可以生成RSA密钥.生成的密钥分为应用公钥,应用私钥.应用私钥自

  • springboot对接支付宝支付接口(详细开发步骤总结)

    最近需要对接支付宝的支付接口,官方文档写得内容有点分散,整理了一下发布出来,用作记录,同时也希望对不了解情况的人有所帮助,这里以电脑端的网页支付为例. 开发主要分为三个步骤:一.生成私钥公钥.二.建立应用.三.沙箱环境.四.接口开发 一.生成私钥公钥 生成密钥的官网文档:官网文档 官方文档讲得已经很详细,按照步骤来即可,记得保存好公钥与私钥,下面需要用到 二.建立应用 1.首先进入蚂蚁金服开放平台的首页,通过支付宝账户登录,登录的时候要选择一个身份,这个选自研开发者吧,反正后面可以拓展 2.在蚂

  • python调用支付宝支付接口流程

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11.11 环境 1234均由阿里开放平台生成 如果你不是商户或者你只是想测试,阿里提供了沙箱环境供测试 沙箱环境下的商户账号和用户账号.支付宝app都是沙箱版的,不能用实际账号 这时候我们需要去阿里开放平台去生成一些1234参数 注册网址: https://openhome.alipay.com/pla

  • springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)

    1. 什么是支付宝接口(沙箱环境)? 记录时间:2020年10月15日3:55 现如今,手机支付已相当普遍,而作为开发人员应该对手机支付操作有所了解.而支付宝接口是支付宝提供的一个接口,用来对接软件应用程序在进行金钱交易使用.然后对于编程爱好者而言,想学习这一点就有点难,因为要想使用支付宝接口,必须前提是使用软件应用程序,软件应用程序需要向支付宝申请,提交一系列资料,这一点是实现不了的.这就对开发者增加了一定的难度,因为产品没有上线,然后需要对接支付宝接口就是很大的问题,所以出现了沙箱环境,具有

  • java后台实现支付宝支付接口和支付宝订单查询接口(前端为APP)

    最近项目APP需要接入微信.支付宝支付功能,在分配开发任务时,听说微信支付接口比支付宝支付接口要难实现,由于我开发经验不是那么丰富(现工作经验1年半)且未接触过支付接口开发,组里刚好又有支付接口的老司机,所以很自然把简单的支付宝接口开发任务交给了我,看来开发组的组长还是很好人的嘛.....,废话就不多说了,我们开始吧! 实现支付宝接口详细过程 1.去支付宝官网申请公司企业账号并开通一个应用,在应用里签约APP支付功能 具体的申请截图步骤,在这里我就不详细说了,因为这不是文章的重点,可参考支付宝官

  • springboot 集成支付宝支付的示例代码

    最简单的springboot集成支付宝 1 注册沙箱 沙箱是一个模拟环境登录,百度蚂蚁金服开放平台,支付宝扫码登录如下 然后沙箱需要注册一下,非常之简单,注册好以后进入到如下页面,选沙箱工具,然后下载一个生成密钥的工具.然后解压按照里面的readme生成公私密钥, 选择沙箱应用 上传公钥即可..沙箱到这里就基本完成了,里面还有沙箱版本的的android app可以下载下来. java 程序 1 新建一个springboot项目 因为我们创建的是一个web工程,所以,仅仅演示支付宝的demo,只需

  • springboot 启动项目打印接口列表的实现

    目录 springboot 启动项目打印接口列表 环境 修改配置文件 Springboot项目添加接口入参统一打印 新建注解,用于实现参数打印功能的增强 自定义序列化规则 写参数打印增强,这里选择环绕增强 springboot 启动项目打印接口列表 环境 springboot 2.3.2.RELEASE 修改配置文件 logging: level: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandle

  • 一篇文章带你入门Springboot沙箱环境支付宝支付(附源码)

    目录 0.前言 1.效果展示 2.技术栈介绍 3.前期准备 第一步:申请一个沙箱测试账号 第二步:电脑下载一个支付宝提供的客户端用于生成RSA2 第三步:手机下载 [沙箱版支付宝] 4.后端搭建 项目目录结构 pom.xml application.yml application-alipay.proerties Order订单实体类 Service层 Controller层 配置类 跨域拦截器配置以及注册 启动spirngboot项目 支付操作的页面: 支付完成后支付宝回调的页面: 启动前端项

  • Java如何在沙箱环境中测试支付宝支付接口

    java沙箱环境测试支付宝支付接口? 准备工作,登陆支付宝开放平台,进入沙箱环境 开放平台链接:https://developers.alipay.com/platform/developerIndex.htm 沙箱环境中给测试提供了一些必要和非必要的参数,需要自己动手修改的只有RSA密钥,需要通过支付宝提供的开发工具生成RSA密钥,下载链接:https://docs.open.alipay.com/291/105971#LDsXr 下载完成安装之后,可以生成RSA密钥.生成的密钥分为应用公钥,

随机推荐