小菜鸟web项目接入支付宝沙箱环境所遇到的坑

具体配置支付宝沙箱,参考下面文章链接:

https://blog.csdn.net/qq_27690839/article/details/79609717

1.问题1

// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String notify_url = "http://域名/notify_url.jsp";

	// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String return_url = "http://ip地址:80/return_url.jsp";

同步跳转的页面地址,其实用内网ip地址也一样可以访问,不需要外网。如果没有外网域名,可以去natapp官网上申请一个免费通道。但是需要实名注册一下。异步和同步,支付成功后是先异步访问异步的地址,再访问同步的地址

2.问题2

demo上说运行index页面,其实是要自己配置Tomcat,我配置的web如下,可以把原demo的web..什么的改名为web

3.问题3

	//请求
	String result = alipayClient.pageExecute(alipayRequest).getBody();

	//输出
	out.println(result);

如果我们是在后台写这段代码,result其实是一段html代码,需要返回到前台,放到前台页面上,这段代码就会自动提交申请,去到支付宝支付页面。

4.问题4

支付宝支付成功后异步和同步返回,不管session设置了多久过期,反正session都会过期。在网上搜的解决办法,大致是先用redis数据库把session 信息保存下来,等回调的时候再把redis数据库的信息取出来放到session中去。但是redis的配置又是坑多多。

5.问题5

redia配置

可以先写一个redis连接的工具类

public class RedisUtil {

    //服务器IP地址
    private static String ADDR = "127.0.0.1";
    //端口
    private static int PORT = 6379;
    //密码
    private static String AUTH = "你的密码";
    //连接实例的最大连接数
    private static int MAX_ACTIVE = 1024;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private static int MAX_IDLE = 200;
    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
    private static int MAX_WAIT = 10000;
    //连接超时的时间  
    private static int TIMEOUT = 10000;
    // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;
    //数据库模式是16个数据库 0~15
    public static final int DEFAULT_DATABASE = 0;
    /**
     * 初始化Redis连接池
     */

    static {

        try {

            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE);

        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    /**
     * 获取Jedis实例
     */

    public synchronized static Jedis getJedis() {

        try {

            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                System.out.println("redis--服务正在运行: "+resource.ping());
                return resource;
            } else {
                return null;
            }

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    /***
     *
     * 释放资源
     */

    public static void returnResource(final Jedis jedis) {
        if(jedis != null) {
            jedisPool.returnResource(jedis);
        }

    }
}

之后导包一直有问题,咋导都不行,网上还看到说,commons-pool2包官网最新的jar包有问题,要自己下载源码编译。最后查找众多文章,终于找到了最佳的导包方法。

   <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.5.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>1.5.4</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.lettuce</groupId>
          <artifactId>lettuce-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.7.1</version><!--版本号可根据实际情况填写-->
    </dependency>

原文地址:https://www.cnblogs.com/javalisong/p/11697485.html

时间: 2024-08-30 13:51:55

小菜鸟web项目接入支付宝沙箱环境所遇到的坑的相关文章

支付宝沙箱环境操作(当面付)

1.第一步:要注册企业账号或者个人支付宝账号,使用企业账号或者个人账号进行登录的蚂蚁金服开放平台. 2.第二步:首次进入系统界面有三个选项,用户可以根据个人自由选择第一项,第二项或者第三项的入住. 3.第三步: 支付宝沙箱环境——沙箱应用栏目中可以看到系统自动分配的信息如图所示: 当面付支付操作流程 1.点击  沙箱当面付接入引导 ,下载 支付宝密钥生成器 按照说明将生成的密钥填入沙箱环境信息配置. 2.下载 当面付DEMO 3.DEMO 解压后导入项目到开发工具(IDEA),导入后发现报错,这

模拟搭建Web项目的真实运行环境(四)

本篇介绍如何部署mongodb环境,主要分为三个部分: 第一部分 介绍如何在ubuntu下安装mongodb, 第二部分 介绍如何在windows下安装使用MongoChef客户端, 第三部分 介绍在ubuntu下安装mongodb出现部分问题的解决方案. 一.在ubuntu环境安装mongodb 在ubuntu下安装mongodb,有两种方式: ① 使用apt-get安装mongodb(ubuntu系统安装方式) ② 下载mongo安装包,解压安装(linux系统通用安装方式) 这里先介绍ap

模拟搭建Web项目的真实运行环境(一)

序言 最近尝试完整搭建一个Web项目的运行环境,总结一下这几个月学到的知识点. 后面的文章主要包括一下几个内容: A. 搭建一个Linux服务器,用来部署Redis.Mongo等数据存储环境: B. 搭建一个Windows Server 2008,用IIS来部署Web项目: 接下来进入主题,本篇主要介绍用虚拟机部署测试环境的时候, 如何配置相关的网络连接. 一.用VM安装一个win7客户端.ubuntu服务器.windows server 2008服务器 这里就不介绍怎么安装了,网上有很多教程.

支付宝沙箱环境的坑

好了如题,直接上步骤,百度也是遇到了不少坑. 1.首先登陆支付宝https://open.alipay.com 使用扫一扫登陆,然后选择沙箱环境 2.填写一些相关的信息就会进入沙箱应用里面,先别急找参数,先生成公匙和私匙.点击里面的生成方法,会下载一个文件.里面有使用说明. 用里面的方法生成公匙后点击查看应用公匙(RSA2)把生成的公匙填进去.支付宝应用公匙就会自动生成.官方是推荐使用2048位的. 生成的私匙也要保存,但是不用填写在该页面.下面的密匙应用不用管它. 3.提取相关应用参数:注意这

支付宝-沙箱环境对接转账到支付宝账户

开放平台-沙箱环境:https://openhome.alipay.com/platform/appDaily.htm?tab=info 公钥获取: 私钥: 开发文档/ 签名专区/第一步:生成 RSA 密钥:https://docs.open.alipay.com/291/105971 私钥是和应用公钥绑定的,所以,重新生成私钥时,公钥一定得重新替换更新!!! 参考地址: 开放平台-沙箱环境;https://openhome.alipay.com/platform/appDaily.htm?ta

模拟搭建Web项目的真实运行环境(五)

一.开启IIS功能 刚安装完的server2008是没有默认开启IIS功能,在这里简单介绍一下如何开启IIS. 步骤: 1. 打开控制面板,选中[程序] 2. 在[程序和功能]下面,选择[打开或关闭windows功能] 3. 选中角色,点击[添加角色] 4. 默认下一步 5. 第一次安装会提示是否添加Web服务器(IIS)所需的功能,这里选择[添加必须的功能] 6. 默认下一步 7. 勾选上自己需要的功能模块,默认下一步 8. 点击[安装] 9. 安装成功,重启下电脑就可以了 二.发布Web项目

支付宝沙箱环境测试

1.获取电脑网站支付的SDK代码 ①下载代码 具体下载地址:https://docs.open.alipay.com/270/106291/ ②介绍具体的代码中文件 ③具体同步回调跟异步回调 同步回调作用:实现当用户支付完成之后能够跳转到对应的商户页面(确保用户支付完成之后能够正确的对用户的支付做一个处理操作) 异步回调作用:确保商户对用户的支付做了一个正确的处理 2.支付宝接入 测试账号相关地址: https://openhome.alipay.com/platform/developerIn

支付宝沙箱环境测试支付功能

1.下载电脑网站的官方demo: 进入蚂蚁金服开放平台,选择文档中心-->开发文档.传送门 选择手机网站支付 我这里选择的是java版本的demo 2.下载好之后进行解压,然后倒入到eclipse中,demo是eclipse工程项目. 注意:readme.txt请好好看一下 Demo只有一个Java配置类,其余都是JSP.咱们看一下配置类 上天红色框中的值就是要改成我们的,这些值需要在开发者中心进行创建应用设置的,下面开始配置 3.配置AlipayConfig (1) 注册蚂蚁金服开发者账号 注

模拟搭建Web项目的真实运行环境(六)

今天把Redis和Mongodb的操作整理一下,方便日后自己查看,废话不多说,直接进入主题. 一.Redis 1. 引用StackExchange.Redis.dll 由于ServiceStack.Redis在4.0以上已经是商业版本需要收费了, 所以在这里我选择了StackExchange.Redis应用于项目中. 首先需要获取StackExchange.Redis.dll,这里有几种方式可以得到: ① 直接下载stackexchange.redis.dll运行(推荐,简单方便) ② 去red