前言

订单支付接入支付宝,使用支付宝提供的沙箱机制模拟为订单付款。我这里主要记录一下沙箱环境如何接入到系统中,具体细节的实现。按照官方文档来就可以了。

1、使用步骤

这里有几个重要数据要拿到,一个是支付宝的公钥和私钥,一个是支付的网关,和支付的APPID。这几个数据是要写到代码中的
官方手册:文档

1.1 配置沙箱应用环境

开放平台控制台 > 开发工具推荐,点击 沙箱 进入沙箱环境

1.2 配置接口加签方式

接入系统使用自定义密钥,等下要添加公钥和私钥。

1.2 密钥生成器

需要下载对应版本的密钥生成器。本机使用的是windows。直接无脑安装下一步。地址

将生成的公钥和私钥填入到这边

1.4 沙箱账号

就是付款的时候模拟的账户信息和付款密码。以及收款商家

2、订单支付接入支付宝

2.1 pom添加依赖

        <!-- 支付宝sdk --><!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.28.ALL</version></dependency>

2.2 服务端代码配置

沙箱环境调试接口时,开发者需调整如下代码配置:

• 支付宝网关地址 修改为:https://openapi.alipaydev.com/gateway.do
• APPID 切换为沙箱的 APPID
• 签名方式 使用 RSA2
• 根据配置的密钥/证书,选择对应加签代码设置商户应用私钥和支付宝公钥。

这里将这些数据抽取成配置文件。你也可以直接写死在代码里边

#支付宝相关的配置
alipay.app_id=你的id
alipay.merchant_private_key= 你的私钥
alipay.alipay_public_key=你的公钥
alipay.notify_url=http://497n86m7k7.52http.net/payed/notify //这个是下单后的通知
alipay.return_url=http://member.zyz.com/memberOrder.html
alipay.sign_type=RSA2
alipay.charset=utf-8
alipay.gatewayUrl=https://openapi.alipaydev.com/gateway.do

封装的接口,具体参数可以参考官方文档接口调用说明【接口API调用说明】


@ConfigurationProperties(prefix = "alipay")
@Component
@Data
public class AlipayTemplate {// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public String app_id;// 商户私钥,您的PKCS8格式RSA2私钥public String merchant_private_key;// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public String alipay_public_key;// 服务器[异步通知]页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问// 支付宝会悄悄的给我们发送一个请求,告诉我们支付成功的信息public String notify_url;// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问//同步通知,支付成功,一般跳转到成功页public String return_url;// 签名方式private  String sign_type;// 字符编码格式private  String charset;//订单超时时间private String timeout = "1m";// 支付宝网关; https://openapi.alipaydev.com/gateway.dopublic String gatewayUrl;public  String pay(PayVo vo) throws AlipayApiException {//AlipayClient alipayClient = new DefaultAlipayClient(AlipayTemplate.gatewayUrl, AlipayTemplate.app_id, AlipayTemplate.merchant_private_key, "json", AlipayTemplate.charset, AlipayTemplate.alipay_public_key, AlipayTemplate.sign_type);//1、根据支付宝的配置生成一个支付客户端AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl,app_id, merchant_private_key, "json",charset, alipay_public_key, sign_type);//2、创建一个支付请求 //设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(return_url);alipayRequest.setNotifyUrl(notify_url);//商户订单号,商户网站订单系统中唯一订单号,必填String out_trade_no = vo.getOut_trade_no();//付款金额,必填String total_amount = vo.getTotal_amount();//订单名称,必填String subject = vo.getSubject();//商品描述,可空String body = vo.getBody();alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\""+timeout+"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");String result = alipayClient.pageExecute(alipayRequest).getBody();//会收到支付宝的响应,响应的是一个页面,只要浏览器显示这个页面,就会自动来到支付宝的收银台页面System.out.println("支付宝的响应:"+result);return result;}
}

2.3 调用支付接口

调用封装好的接口方法: String pay = alipayTemplate.pay(payVo); 关于为何传入这个参数,请自行查询沙箱案例Demo。各个参数代表的意义

    /*** 用户下单:支付宝支付* 1、让支付页让浏览器展示* 2、支付成功以后,跳转到用户的订单列表页* @param orderSn* @return* @throws AlipayApiException*/@ResponseBody@GetMapping(value = "/aliPayOrder",produces = "text/html")public String aliPayOrder(@RequestParam("orderSn") String orderSn) throws AlipayApiException {PayVo payVo = orderService.getOrderPay(orderSn);String pay = alipayTemplate.pay(payVo);System.out.println(pay);return pay;}

2.4 单独的支付案例

直接下载运行一下,可以看看

3、实现的效果

3.1 订单支付页面




alipay.notify_url=http://497n86m7k7.52http.net/payed/notify
//这个是下单后的通知
这个就是自己内网的访问地址。也就是订单支付成功后,调用这个接口方法,然后修改订单的状态。所以要做一个内网穿透。就是让外部网络可以访问到内部网路

项目支付接入支付宝【沙箱环境】相关推荐

  1. python如何接入支付宝沙箱环境

    最近的项目需要对接支付宝,因为之前没有接触过支付宝支付的功能,折腾了好久才把问题测地解决了,现在把详细的过程贴出来让广大同学少走弯路. 目前,支付宝有两种状态,一种是用于支付的正式环境,也就是平时我们 ...

  2. Idea在Maven项目中使用支付宝沙箱环境

    进入支付宝开发者中心注册账号点击进入 进入后会看到如下页面,点研发服务 进入之后先下载密匙生成器: 安装好后打开,点生成密匙 复制应用公匙 使用应用公匙生成支付宝公匙 得到支付宝公匙 然后我们开始下载 ...

  3. 免费沙箱软件模拟支付_支付(支付宝沙箱环境配置、测试支付Demo)

    1.注册沙箱环境 (1)概述 首先java的jdk中,并没有提供支付的功能,所以市面上用到的支付都属于第三方,而常用的第三方支付平台:支付宝sdk.微信sdk! 可以使用蚂蚁金服下的沙箱环境进行支付( ...

  4. Java web集成支付宝电脑支付接口(沙箱环境)

    前言 这篇博客主要介绍如何在Java web项目中集成支付宝的电脑支付接口(会稍微介绍一下服务器集成APP支付接口).目前支付宝接口更新很快,在博主查找资料的时候,很多都是即时到账接口,APP支付则是 ...

  5. 支付宝沙箱环境 电脑支付

    项目场景: java语言,jdk1.8也可以使用 .支付宝沙箱环境电脑支付. 电脑端生成二维码,手机端扫描支付 AlipayConfig: APP 中接收数据代码: package com.hc;/* ...

  6. 支付宝沙箱环境接口使用详解

    最近在做一个模拟支付宝的支付功能,用到了支付宝沙箱模拟环境,具体使用步骤如下,仅供参考: 一.注册支付宝沙箱环境账号 1.既然使用人家提供的东西,必须要注册一个他家的账号,使用万能的百度找到支付宝沙箱 ...

  7. 支付宝沙箱环境对接(当面付)

    支付宝沙箱环境对接(当面付) 第一步: 好好阅读以下的文档: 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 沙箱环境使用说明:https ...

  8. 支付宝沙箱环境+SpringBoot+内网穿透整合开发

    目录 1.查看沙箱账号 2.内网穿透 3.沙箱环境整合SpringBoot开发 下面我将以实际案例详细介绍如何使用沙箱环境进行支付宝支付对接的开发 1.查看沙箱账号 首先什么是沙箱账号? 沙箱账号是指 ...

  9. 支付宝沙箱环境的使用----详细教程

    支付宝沙箱环境的使用----详细教程 支付宝的沙箱环境不需要商家认证,相对于微信沙箱门槛比较低,开发的时候方便我们在本地测试 这个教程带大家完成客户端支付 手机准备环境 客户端调试----支付宝沙箱环 ...

最新文章

  1. [分享] 数学学术资源站点
  2. 什么是线程安全,你真的了解吗?
  3. ITK:布雷森汉姆线BresenhamLine
  4. 不同服务器怎么响应ajax,如何从服务器获得响应而无需刷新和使用JQuery/AJAX?
  5. 启动php出现的错误
  6. 知识图谱入门2-2:用户输入->知识库的查询语句
  7. bzoj1036 树的统计Count 树链剖分
  8. spring整合jedis(单节点)
  9. 五十二 常用第三方模块 图形界面
  10. [转载]使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放...
  11. sqlalchemy连接和关闭数据库
  12. AnyLogic中的代码补全
  13. FFMPEG:MP4封装格式中外挂字幕的提取
  14. api与密度转换公式_API、比重换算表
  15. 结构化程序设计知识点总结
  16. springboot 整合 邮件发送
  17. matlab求包络线拟合,MATLAB 一堆散点如何求包络线
  18. 爬取B站20万+条弹幕,我学会了如何成为B站老司机
  19. 云计算、大数据和人工智的区别和联系
  20. OpenCV-Python 中文教程

热门文章

  1. pipe管道实现进程间的通信
  2. 成都拓嘉启远电商:拼多多账号异常怎么回事
  3. 计算机一级windows2000,2012年一级BWindows2000操作系统[2]
  4. java中rank函数_SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  5. 第917期机器学习日报(2017-03-23)
  6. windows下discus的搭建
  7. python 基础代谢率计算_计算基础代谢率(BMR)
  8. opencv启动摄像头并且操作摄像头拍照
  9. 一个续写故事达到人类水平的AI,OpenAI大规模无监督语言模型GPT-2...
  10. 千年之恋HTML5和CSS3