支付宝API支付使用文档--java《扫一扫支付》--demo但是封装高可用--改一改配置就拿走用!超详细!!有手就行!!!(上)修改官网配置类-spring+vue

阿丹:

        在项目中总会遇到支付宝支付的问题吧!!!咱们web程序员总要调用一次支付宝吧!!哈哈哈哈,本文章使用vue +  spring-boot来完成一个在沙箱的情况下完成的支付宝扫码支付,但是我会根据spring-boot的特性尽可能的保证高可用,实现改一改配置就拿走用。

进入官网--找到开发沙箱

Alipay

选择我标红的进入 

跳转这个页面 

从首页点击API,在下面找到我标记的沙箱 

我们要去下载准备两个东西/一个在电脑上的、一个手机上的

下载沙箱钱包

小程序文档 - 支付宝文档中心

跟随指引进入沙箱控制台

 

点击然后根据跳转的二维码,使用手机扫码进行下载安装就可以了

 手机端的沙箱版本登录进入,以及账号寻找登入 

阿丹:我在这里找了好一会就是登录不进来所以给大家避坑一下

1.下载好了正常安装

2.下载好了正常安装

在平台中进入沙箱账号找到自己的沙箱账号

 坑出现了!!!我看到的登录页面是这样的!!

问题是没有给我账号的手机号码啊!小问题跟着阿丹!!

 根据阿丹的指引!看到了吗!支付宝号,邮箱登录!!!

这里的买家账号就是使用的邮箱粘贴使用,密码是6个1,付款密码也是的!要记住!!然后就可以登录进来了!!!

 就进来了,默认的余额是一百万!!给阿丹点赞点关注了我反手就是一个沙箱一百万!听懂掌声!

 下载支付宝开放平台密钥工具

小程序文档 - 支付宝文档中心

我给链接拿出来了!! 

https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=win&channelType=WEB

下载完了就安装就行!! 完事就是这样!!!

我们开始配置我们需要的公钥和私钥

首先获取到我们的公钥和私钥,进入软件使用指引的方式来获取

 复制我们生成的公钥

进入我们的沙箱平台 

 登录 - 支付宝

 点击设置并查看

将我们复制的公钥复制进入

 我们就获得到了应用的公钥和支付宝的公钥

就可以啦! 

准备工作就绪!!我们开始准备开发我们的扫一扫支付!!!!

 找到我们需要的依赖

因为我们使用的是maven项目

Maven Central: com.alipay.sdk:alipay-sdk-java

 调用扫一扫支付需要的maven依赖。

        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.38.76.ALL</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83_noneautotype</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.62</version>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.12.13</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

alipay-sdk-java: 我们调用支付宝支付功能的主要依赖
bcprov-jdk15on:提供加密算法

下载官方给我们准备的demo!java的demo 

 小程序文档 - 支付宝文档中心

 下载完毕解压出来的文件如下:

 我们来看看官网给我们的东西我们可以得到什么!!!

两个配置类!!其实我们可以使用的也就是这个了!!

这个配置类告诉了我们在开发的过程中,我们需要用到什么属性,在这里也说明了,但是这里一些配置如果在程序中写死了,那么可重用性质就不高了。

所以这个配置我们在代码中使用spring-boot的约定大于配置的写法使用配置中注入方式这样写:

配置类: 

package com.adn.common.utils;

import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Component
@Data
@ConfigurationProperties(prefix = "apputil")
public class AppUtil implements InitializingBean {
    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
    private  String appid;

    // 商户私钥,您的PKCS8格式RSA2私钥
    private  String merchantprivatekey;

    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。.
    private  String alipaypublickey;

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

    // 页面跳转同步通知页面路径
    //需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    private  String returnurl;

    // 签名方式
    private  String signtype;

    // 字符编码格式
    private  String charset;

    // 支付宝网关,注意这些使用的是沙箱的支付宝网关,与正常网关的区别是多了dev
    private  String gatewayurl;

    // 支付宝网关
    private  String logpath;


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

    /**
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public void logResult(String sWord) {
        FileWriter writer = null;
        try {
            writer = new FileWriter(this.logpath + "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();
                }
            }
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {

    }
    /**
     * 验签,是否正确
     */
    public boolean checkSign(HttpServletRequest request) {
        Map<String, String[]> requestMap = request.getParameterMap();
        Map<String, String> paramsMap = new HashMap<>();
        requestMap.forEach((key, values) -> {
            String strs = "";
            for (String value : values) {
                strs = strs + value;
            }
            System.out.println(key + "===>" + strs);
            paramsMap.put(key, strs);
        });
        System.out.println();
        //调用SDK验证签名
        try {
            return AlipaySignature.rsaCheckV1(paramsMap, this.getAlipaypublickey(), this.getCharset(), this.getSigntype());
        } catch (AlipayApiException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("*********************验签失败********************");
            return false;
        }
    }
}

按照我的注释在配置文件yml中写上对应的配置 

#支付宝使用配置
pay:
  #应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
  app_id:
  #商户私钥,您的PKCS8格式RSA2私钥
  merchant_private_key:
  #支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥
  alipay_public_key:
  #服务器异步通知页面路径需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  notify_url:
  #页面跳转同步通知页面路径需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  return_url:
  #签名方式
  sign_type:
  #字符编码格式
  charset: utf-8
  #支付宝网关,注意这些使用的是沙箱的支付宝网关,与正常网关的区别是多了dev
  gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
  #支付宝网关 日志书写地址
  log_path:

 

注意!!!!!!!

如果发现读取不到、以及报错数据那么就使用双引号括起来!!!

notify_url和return_url可以先不用写在下面开发完毕在写就可以!

这样写的好处是方便开发如果在微服务的架构下这样写配置就会更加灵活!!!!

第二个配置,初始化请求支付宝请求对象

package com.adn.common.utils;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanUtil {
    //创建支付宝所需要的对象
    @Autowired
    AppUtil appUtil;
    @Bean
    public AlipayClient alipayClient(){
        System.out.println(appUtil.toString());
        return new DefaultAlipayClient(appUtil.getGatewayurl(),appUtil.getAppid(),appUtil.getMerchantprivatekey(),"json", appUtil.getCharset(),
                appUtil.getAlipaypublickey(),appUtil.getSigntype());
    }
    
    @Bean    //支付信息的配置
    public AlipayTradePagePayRequest  alipayTradePagePayRequest(){
        return  new AlipayTradePagePayRequest();
    }


}

这个类其实没啥可说的,这里就不过多讲解,强调一下使用的是刚才的配置类就可以了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 建议使用以下步骤来编写一个使用playwright-java的demo:1. 添加playwright-java的依赖;2. 创建一个playwright实例;3. 选择一个浏览器;4. 创建一个浏览器上下文;5. 在上下文中打开一个新页面;6. 在页面上执你想要做的任务;7. 关闭页面和浏览器上下文;8. 关闭playwright实例。 ### 回答2: Playwright-Java是一款用于自动化测试Web应用的框架,它提供了丰富的API和方法来模拟用户在浏览器中的操作。下面是一个使用Playwright-Java编写的示例代码: ```java import com.microsoft.playwright.*; public class PlaywrightDemo { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { Browser browser = playwright.chromium().launch(); BrowserContext context = browser.newContext(); Page page = context.newPage(); page.navigate("https://www.example.com/"); page.waitForLoadState(); page.click("a#link"); page.waitForLoadState(); System.out.println("Current Page Title: " + page.title()); String pageTitle = page.evaluate("document.title"); System.out.println("Page Title using JavaScript: " + pageTitle); browser.close(); } } } ``` 在这个示例中,我们首先使用 `Playwright.create()` 来创建一个Playwright实例,然后使用 `playwright.chromium().launch()` 启动一个Chromium浏览器实例。 接下来,我们使用 `browser.newContext()` 创建一个BrowserContext,它可以看作是一个浏览器的实例,然后使用 `context.newPage()` 创建一个Page对象,表示一个具体的浏览器页面。 我们使用 `page.navigate()` 方法加载一个网页,并使用 `page.waitForLoadState()` 等待页面加载完成。然后,我们使用 `page.click()` 方法点击页面上的一个链接,并再次使用 `page.waitForLoadState()` 等待链接页面加载完成。 接下来,我们打印出当前页面的标题,使用 `page.title()` 方法。然后,我们使用 `page.evaluate()` 方法执JavaScript代码,获取页面标题,并打印出来。 最后,我们使用 `browser.close()` 关闭浏览器实例。 这只是Playwright-Java的一个简单示例,它演示了如何使用Playwright-Java来自动化测试一个Web应用。使用Playwright-Java,你可以执更多复杂的操作,如表单交互、页面滚动、鼠标操作等。希望这个示例对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值