支付宝平台文档中心

https://opendocs.alipay.com/open/270/105900

开发者中心

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

沙箱账号地址

https://openhome.alipay.com/platform/appDaily.htm?tab=account

首先登陆,到开发者中心

下载生成公钥和私钥的工具

将获取的公钥设置

这样基本配置就已经完成,接下来我们可以看下文档  https://opendocs.alipay.com/open/270/105900

这里会详解介绍操作流程

点击api 列表,统一收单下单并支付页面接口 alipay.trade.page.pay

这就是我们待会调用请求必须设置的参数,接下来看代码

支付的配置类:

package com.lxq.httpclient.pay;public class AlipayConfig {// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id = "20161021007302901";// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCeSaKJQxolIySJevdA05kDgdfiVIJsqek55J12bxje3BHt5K3s6Hh5kyKClWhj59Q7gUif9sD+MobOs6pc7jhpZw/VqHP4LIJMVQ+gmWfgiD7ClJ3086jfRLIu+mxXlT49t5SEbTknbVAhcXPGNwJEsCHgMFSOiVBywRuRn5RMOP5bXSxZAMcYKn05ywWy7fgLP8kdk/yNuyN/giVm7x6H7w1GSqnsXv/o5jboKPrjjM0B+dc2cFb5oxlgT05Gv7zx3PqhWwlyqC/dg7eFNEq3smtaizECGD1rNoiFEqd1PMU/oNZgyZ9AZTpOgQxnt9dEscXODCpLkkNXJ0wyf6rNAgMBAAECggEAL2sdvwMUJQX3HxxwT8JT94IBW3M3szfff5FmPqGfkLvavyqfk/Y8iScz0mzR3gQIR18+k3VHcZ9PVULriXVv/tt6Geah/znOOvHMga8TOGd4bbA59bS85U3eF0a8CCzUfYauflF+KrqLo8kqBrpZ+pvNOi0gV6b5K7d/+8sTkRWTDxlAut9BnEmwfYlfuMhPGS2V7wxnkQtjXNudZKTNNaAor0melvXMUd2C8JNQOgFmzk4YDjgORatNrq7u0YF4RPdDOGrw9saMwFEVb4ernrDXOHQKJhHOtW0YlYBQn54G/ohNh41rZMCYYo+3vYQhMu0DqvURIpsh4tbMyA3ZvQKBgQDzOyy+y+WEKi71f+K1ALx7Yxc20Kg/tcBQm0vs8Yqa3aCfXFCAJnoV/lfHgcGS/gCegkSjNQCb3rnqNXikc4k/Z1nnrcO1RrKFPZecKobwRH21xOkzwnFAgsAETj4Cqce1plqgXmwsq+SZDZI6L8Mx0T9KJJERI11jSGDxXdppWwKBgQCmmOO/CC8xM8Bzv0FevME1E/VQCifGhqeJYsjHVurVcSaDGNLF7HxBxCUX6x1EYvbRunAhIjqQOPjQUeIUSPQmRs4gKhswoV8fCoHnvJ0eEtBIMbj045h6ZRuenGUT/poSSmH/MawTOL7JS5JUZkyFiwulytNizp+OXfdmhAdM9wKBgQCDXvGy96O2d6Y3WORUyNoEdqfCJn7JMlx17PrcNjWboZqwmAauwJluKZq1mgK4ZtJkyo1R7T2v8mNN+aV4hSKbCTJI7NRoo4+mYXbylRGe0g9nzrv6Bcpvgm89pBjgDV1dYkVOmtEoa4sjk23oWYW+8XqSjB+CNyyohB5AH2XpQwKBgFGlxqBeK3rKqTxQ9IGwsmQIBwcWIw5J+hv7/PitIWRAEybW6J212+QDdEZ3pR1Z/yskW0Xx14/NTCwUpV9ZrcaAlw7uc+rue4bkCGyBZONTRx7Kt6HVVWpO2S1v6p3U/r+OEt8WAgZdnitbTTjt9fzQ+4FimRzotQv6A4ELneRbAoGBAKGJOxzgv3fnTdg4qNLTXB+UkfQOz4EtB1SSnl3OjS0felz7SpHpvCnpP9cQolcKUhpkWE2JocOxbo+V5bRBQrSu9z6z9/AJ6rBNFzrGcA3X3hxG+8+tErd17ArLOuq4utBezWDLTM3LnuJd5Vp9uhQR54lK6M4RfufWEdfYrg7R";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnkmiiUMaJSMkiXr3QNOZA4HX4lSCbKnpOeSddm8Y3twR7eSt7Oh4eZMigpVoY+fUO4FIn/bA/jKGzrOqXO44aWcP1ahz+CyCTFUPoJln4Ig+wpSd9POo30SyLvpsV5U+PbeUhG05J21QIXFzxjcCRLAh4DBUjolQcsEbkZ+UTDj+W10sWQDHGCp9OcsFsu34Cz/JHZP8jbsjf4IlZu8eh+8NRkqp7F7/6OY26Cj644zNAfnXNnBW+aMZYE9ORr+88dz6oVsJcqgv3YO3hTRKt7JrWosxAhg9azaIhRKndTzFP6DWYMmfQGU6ToEMZ7fXRLHFzgwqS5JDVydMMn+qzQIDAQAB";// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String notify_url = "http://localhost:8761/dgwl/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String return_url = "http://localhost:8761/dgwl/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";}
package com.lxq.httpclient.controller;import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;import static com.lxq.httpclient.pay.AlipayConfig.*;/*** @Author Lxq* @Date 2020/4/3 0:31* @Version 1.0*/
@RestController
public class PayController {@GetMapping("pay")private String alipayPay() throws AlipayApiException {Map<Object,Object> vo = new HashMap<>();//这里模拟了一个订单的idvo.put("out_trade_no",UUID.randomUUID().toString().replace("-", ""));vo.put("product_code","FAST_INSTANT_TRADE_PAY");vo.put("total_amount",99);vo.put("subject","Test my demo");String json = JSON.toJSONString(vo);AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, app_id,merchant_private_key, "json", charset, alipay_public_key, sign_type);// 设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(return_url);alipayRequest.setNotifyUrl(notify_url);alipayRequest.setBizContent(json);String result = null;try {result = alipayClient.pageExecute(alipayRequest).getBody();} catch (Exception e) {System.out.println(result);}return result;}/*** @Description: 支付宝回调接口* @param out_trade_no 商户订单号* @param trade_no     支付宝交易凭证号* @param trade_status 交易状态* @return String* @throws AlipayApiException*/@PostMapping("notify")private String alipayNotify(HttpServletRequest request, String out_trade_no, String trade_no, String trade_status)throws AlipayApiException {Map<String, String> map = new HashMap<String, String>();Map<String, String[]> requestParams = request.getParameterMap();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] + ",";}map.put(name, valueStr);}boolean signVerified = false;try {signVerified = AlipaySignature.rsaCheckV1(map, alipay_public_key, charset, sign_type);} catch (com.alipay.api.AlipayApiException e) {// 验签发生异常,则直接返回失败return ("--failed--");}if (signVerified) {//处理你的业务逻辑,更细订单状态等return ("--success--");} else {return ("--failed--");}}/*** @Description: 支付宝回调接口* @param out_trade_no 商户订单号* @param trade_no     支付宝交易凭证号* @return String* @throws AlipayApiException*/@GetMapping("return")private String alipayReturn(Map<String, String> params, HttpServletRequest request, String out_trade_no, String trade_no, String total_amount)throws AlipayApiException {Map<String, String> map = new HashMap<String, String>();Map<String, String[]> requestParams = request.getParameterMap();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] + ",";System.out.println(valueStr);}map.put(name, valueStr);}boolean signVerified = false;try {signVerified = AlipaySignature.rsaCheckV1(map, alipay_public_key, charset, sign_type);} catch (AlipayApiException e) {// 验签发生异常,则直接返回失败return ("--fail--");}if (signVerified) {return ("--success--");} else {return ("--fail--");}}}

支付宝支付 沙箱测试相关推荐

  1. Vue node.js实现支付宝支付(沙箱测试)

    一.支付宝开放平台创建应用:打开支付宝开放平台首页(注意:正式环境.沙箱环境都需要此步) 1.选择开发者中心 ---> 网页&移动应用 (此时是实现网站支付功能) 2.选择支付接入 3. ...

  2. 支付宝支付—沙箱环境使用

    前言 支付宝支付-沙箱环境使用「本文」 支付宝支付-支付宝PC端扫码支付 支付宝支付-手机浏览器H5支付 支付宝提供的沙箱环境,入门门槛非常低,不需要商家认证那一套,这一点对开发者是非常友好的,可以直 ...

  3. 支付宝支付沙箱 支付存在钓鱼风险解决方法

    之前就出现过这个问题,但是稀里糊涂地给解决了.第二次遇到这个问题,想着还是得想办法解决一下,然后终于找到问题的原因,把我整乐了,这么沙雕的问题一定要记下来: 原博客:支付宝支付沙箱 支付存在钓鱼风险! ...

  4. 我的Android成长之路——支付宝的沙箱测试

    第一次写博客,简单写一下支付宝的沙箱测试 下图为支付宝官方demo中的PayDemoActivity,做沙箱调试时,你需要登录你的支付宝,进去开发中心获取支付宝提供给你的沙箱测试专用买家和卖家信息,就 ...

  5. 支付宝支付 第一集:没有营业执照,怎样申请一个支付宝的商家号进行开发?使用支付宝支付开发网页移动应用,一分钟申请注册一个支付宝支付沙箱账号,支付宝支付入驻、创建应用、获取AppID

    支付宝支付 第一集:没有营业执照,怎样申请一个支付宝的商家号进行开发?使用支付宝支付开发网页&移动应用,一分钟申请注册一个支付宝支付沙箱账号,支付宝支付入驻.创建应用.获取AppID 一.资源 ...

  6. 支付宝配置沙箱测试android,个人开发者使用支付宝沙箱环境进行代码调试

    因为支付宝支付接口只有企业身份才能申请,但是由于种种原因个人开发者没有企业资质无法申请到支付接口权限,这也是很多开发者遇到的问题.在之前推出了支付宝支付接口开发系列课程之后也遇到了很多开发者的反馈:没 ...

  7. 支付宝支付沙箱环境配置

    我们使用支付宝支付功能需要营业执照和网站备案 才能正常接入 如果我们是个人开发者没有这些东西的话可以使用支付宝沙箱 支付宝沙箱机制是为开发者提供的便捷机制 ,不需要营业执照跟备案网站即可测试支付功能 ...

  8. 支付沙箱测试 NATAPP使用

    一 首先准备沙箱测试支付宝 生成公钥 以及私钥 下载支付宝开放平台开放助手 然后将 公钥设置到此处 二 然后下载 网站 支付demon https://opendocs.alipay.com/open ...

  9. 免费沙箱软件模拟支付_JAVA模拟支付宝支付-沙箱环境

    最近在个人的小项目中用到了沙箱环境下的支付宝支付功能,这里做一个总结和介绍. 配置 先去支付宝开发者文档-沙箱配置沙箱环境,这里主要注意沙箱环境密钥的设置方法,具体步骤文档都写的很清楚了. image ...

最新文章

  1. JDK 11版本时间表
  2. [转]SQL truncate 、delete与drop区别
  3. leetcode 1: 找出两个数相加等于给定数 two sum
  4. 尚硅谷公开课--struts2--2--搭建struts2环境以及struts2简单例子
  5. WEB API 系列(二) Filter的使用以及执行顺序
  6. 二十五、PHP框架Laravel学习笔记——模型的一对一关联
  7. 西门子for循环例子_理解JavaScript中的循环缺陷和迭代协议
  8. 智能一代云平台(三十四):后端架构一些总结
  9. memento模式_Java中的Memento设计模式
  10. 计算机一级a河北,2009年河北省计算机一级考试A卷
  11. 处女的第一次不一定会流血!很感人 我都流泪了!
  12. CAD如何导出天正各版本DWG图纸?CAD图形导出教程
  13. 高一计算机知识点第一章,第一章计算机基础知识知识点总结
  14. 如何利用Xshell远程登陆主机后使用代理服务器上网
  15. linux认证ppt的图片,linux用户、组和身份认证-课件(PPT-精).ppt
  16. docker在centos7中run时遇到的坑?
  17. java word编辑_java实现word在线编辑及流转
  18. ROS机器人控制 —— 键盘方向控制
  19. 信号内插(零阶保持滤波器+插零)
  20. 加索引如何避免锁表?

热门文章

  1. 华为视频携手优酷 打造全场景智慧影音娱乐体验
  2. quartz mysql索引_Quartz
  3. JAVA 线上故障排查全套路
  4. 无功补偿+APF(有源滤波)在整流设备中的应用——安科瑞潘芹
  5. Firefox狐火下html底部出现很长的空白
  6. 热词抽取与话题发现系列(1):郝晓玲研究
  7. VIM使用系列之一——配置VIM下C/C++编程环境
  8. 我们如何学好java
  9. 霍尼韦尔推出电池储能系统平台
  10. Android开发学习之路-脱壳反编译