支付宝支付模块开发

这篇具有很好参考价值的文章主要介绍了支付宝支付模块开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生成二维码

使用Hutool工具类生成二维码

引入对应的依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.5</version>
</dependency>

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>

生成二维码的代码为下:

    @Test
    public void createCode() {
//generate方法需要传入的参数有: 需要被生成二维码的链接,宽,高, 对应的文件名
        QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("D:/qrcode.jpg"));
    }

生成对应的链接的二维码,存到到D盘且名字为qrcode.jpg。

支付宝支付模块开发,java,前端,服务器

如果我们需要生成的二维码要传给前端,这时我们需要生成Base64格式。

对应的代码为下:

    @Test
    public void createBase64() {
        //generateAsBase64方法需要传入的参数有:需要生成二维码的链接,QrConfig对象(用于存储宽和高),对应的图片格式
        String base64 = QrCodeUtil.
                generateAsBase64("https://hutool.cn/", new QrConfig(300, 300), "png");
        System.out.println(base64);
    }

对应的效果为下:
支付宝支付模块开发,java,前端,服务器

面试考点

问:你们公司是怎么生成二维码的?

答:在刚开始的时候我们将对应的支付链接通过hutool工具类生成对应的二维码图片,但是后续的高并发的场景下服务器非常的卡,因为服务器要同时处理大量的二维码生成业务。以在后续我们直接将链接传给前端,通过前端的js工具类生成对应的二维码。

支付宝沙盒环境准备 

 支付宝沙盒地址

下载支付宝沙盒安卓软件

支付宝支付模块开发,java,前端,服务器 该软件的账号为下:
支付宝支付模块开发,java,前端,服务器

扫码支付的流程

支付宝支付模块开发,java,前端,服务器支付宝支付模块开发,java,前端,服务器 

流程的步骤为下:

1.商户系统调用alipay.trade.precreate方法设置二维码的有效时间,此时调用到支付宝系统,支付宝系统返回二维码链接

2.商户系统通过方法将二维码链接生成对应的二维码,发送到支付宝app。

3.用户通过打开支付宝app扫描对应的二维码,进行支付,商户会通过获取支付宝系统返回的信息处理支付结果。

4.并不是每次支付都会返回结果,如果出现网络问题就不会返回对应的结果,所以我们需要是设置定时任务,轮询查询交易的状态。(我们会使用xxl-job)

公钥和私钥

目前的加密算法可以分为:对称加密,非对称加密。

对称加密:也叫传统加密,加密和解密都使用相同的密钥,它要求发送方和接收方在安全通信之前,要设定好一个密钥,如果要密钥被非法人员获取,其就可以进行加密和解密,所以该密钥的安全性十分的重要。

目前存在的对称加密的算法为下:

  • AES (默认AES/ECB/PKCS5Padding)
  • ARCFOUR
  • Blowfish
  • DES (默认DES/ECB/PKCS5Padding)
  • DESede
  • RC2
  • PBEWithMD5AndDES
  • PBEWithSHA1AndDESede
  • PBEWithSHA1AndRC2_40

非对称加密:使用私钥进行加密,使用公钥进行加密,私钥是私有的不会对外暴露,而公钥是共有的,公钥的所有者可以对私钥的所有者进行验证。最常用的就是RSA和DSA。

  1. 签名:使用私钥加密公钥解密。用于让所有公钥所有者验证私钥所有者的身份,并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。
  2. 加密:用公钥加密,私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。

应用请求三方中私钥公钥的使用

支付宝支付模块开发,java,前端,服务器

三方返回信息给应用中私钥公钥的使用:

支付宝支付模块开发,java,前端,服务器

EasySDK 

引入对应的依赖

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-easysdk</artifactId>
    <version>2.2.0</version>
</dependency>

创建参数类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Data
@ConfigurationProperties(prefix = "ali.pay")
@Configuration
public class AliProperties {
    //请求协议
    private String protocol;
    // 请求网关
    private String gatewayHost;
    // 签名类型 RSA2
    private String signType;
    // 应用ID
    private String appId;
    // 应用私钥
    private String merchantPrivateKey;
    // 支付宝公钥
    private String alipayPublicKey;
    // 异步通知接收服务地址
    private String notifyUrl;
    // 设置AES密钥
    private String encryptKey;

}

创建配置类

import com.alipay.easysdk.kernel.Config;
import com.example.alipaydemo.entity.AliProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class aliPayConfig {

    @Bean
    public Config getOptions(AliProperties aliProperties) {
        Config config = new Config();
        config.protocol = aliProperties.getProtocol();
        config.gatewayHost = aliProperties.getGatewayHost();
        config.signType = aliProperties.getSignType();
        //设置对应的appId
        config.appId = aliProperties.getAppId();
        //设置私钥
        config.merchantPrivateKey = aliProperties.getMerchantPrivateKey();
        config.alipayPublicKey = aliProperties.getAlipayPublicKey();
        //可设置异步通知接收服务地址(可选)
        config.notifyUrl = "";
        //可设置AES密钥,调用AES加解密相关接口时需要(可选) <-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->
        config.encryptKey = "";
        return config;
    }
}

创建对应的Controller层

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.kernel.util.ResponseChecker;
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class easyAliPayController {
    @Autowired
    Config config;

    @GetMapping("/createOrder")
    public AlipayTradePrecreateResponse Create(String orderId) {
        //设置对应的参数
        Factory.setOptions(config);
        //设置项目名,对应的订单号,对应的金额
        try {
            AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace()
                    .preCreate("餐掌柜-餐饮消费",
                            orderId, "0.01");

            // 3. 处理响应或异常
            if (ResponseChecker.success(response)) {
                System.out.println("调用成功");
                System.out.println(response.getHttpBody());
                return response;
            } else {
                System.err.println("调用失败,原因:" + response.msg + "," + response.subMsg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

在application.yml中配置对应的信息

ali:
  pay:
    protocol: https
    gatewayHost: openapi.alipay.com
    signType: RSA2
    appId: 9021000128687668
    merchantPrivateKey: 
    alipayPublicKey: 
    encryptKey: zgJr83uwsyEHG5LCh63d4Q==
    notifyUrl:

最终完成测试。

easySDK的方法有下:

支付宝支付模块开发,java,前端,服务器文章来源地址https://www.toymoban.com/news/detail-730779.html

到了这里,关于支付宝支付模块开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Java开发HTTP代理服务器

    HTTP代理服务器是一种网络应用,它充当位于客户端和目标服务器之间的中间节点,将客户端发出的HTTP请求转发给目标服务器,并将目标服务器返回的HTTP响应内容回传给客户端。通过使用代理服务器,客户端可以避免直接访问目标服务器,从而更加安全地访问互联网资源。

    2024年02月16日
    浏览(58)
  • 使用java开发TCP服务器端

    目的:验证TCP调试工具与自研的TCP服务端通信是否正常 1、使用Eclipse新建一个java项目,命名TcpServer 2、新建与服务端连接的客户端socket处理类,采用线程方式,一个客户端连接对应一个线程。 3、新建服务端socket处理类 4、新建测试类,并启动服务器 5、下载TCP客户端调试工具

    2023年04月10日
    浏览(36)
  • Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式

    ----在我们做文件上传时,通常会保存文件的相对路径在数据库中,然后返回前端http访问路径,来对文件进行下载或图片预览功能,但是有时候我们并不想直接返回文件访问地址给前端,这就用到了Java当中的文件输入输出流,将文件以流的方式响应给浏览器,并渲染出图片或

    2024年02月03日
    浏览(61)
  • 工商银行服务器被黑客锁死,被迫支付赎金的原因分析

    上周,中国工商银行(ICBC)美国分行遭受勒索软件攻击,在一定程度上扰乱了美国国债市场的交易。周一(11月13日),Lockbit勒索软件集团的一名代表在一份声明中表示,中国工商银行已支付了赎金。#中国工商银行# 具体赎金为多少不知。 “他们支付了赎金,交易完成。”

    2024年01月16日
    浏览(47)
  • 『从零开始』拥有一台服务器并搭建java开发环境

      各位小伙伴们大家好,欢迎来到这个小扎扎的博客,本篇博客中将会和大家分享如何购买甚至白嫖一台属于你自己的服务器(当然这台服务器会有时间限制),服务器到手之后就是服务器的设置以及常规java开发的环境搭建,以上内容在本篇博客中都会作详细讲解   首

    2024年01月19日
    浏览(59)
  • 【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

    Spring Boot 项目开发结束后的工作便是运维,简单来说需要配置 Web 运行参数和项目部署两大工作,本文将尽可能详细地给大家讲全! 目录 1 定制 Web 容器运行参数 1.1 运行参数介绍 1.2 项目搭建 ① 通过 IDEA Spring Initializr 创建项目 ② 添加 Spring Web 等依赖 ③ 编写 controller 层的

    2023年04月23日
    浏览(60)
  • 【Java万花筒】跨越云平台的无服务器开发:使用Java构建弹性、高效的应用

    无服务器计算平台提供了一种方便、弹性和成本效益高的方式来运行代码,而无需关心底层基础设施的管理。在这篇文章中,我们将探讨如何使用Java语言与一些主要的无服务器计算平台集成,包括AWS Lambda、Google Cloud Functions、腾讯云函数和IBM Cloud Functions。我们将介绍这些平台

    2024年02月19日
    浏览(56)
  • 【Java万花筒】无服务器静态网站开发:Java静态站点生成库的选择与实践

    在当今互联网时代,静态网站已经成为了展示个人作品、技术文档、博客等内容的常见形式。静态站点生成器为我们提供了一种快速、简单的方式来创建、管理和发布静态网站,从而使我们能够专注于内容本身而不必担心复杂的后端逻辑和数据库管理。本文将介绍几种流行的

    2024年02月21日
    浏览(55)
  • 关于 java如何集成chatgpt,如何集成到html5前端界面,如何实现多伦对话,如何申请域名,如何申请服务器,搭建环境(一)

    Java如何集成ChatGPT,如何集成到HTML5前端界面,如何实现多伦对话 随着人工智能技术的不断发展,聊天机器人已经成为了人们日常生活中不可或缺的一部分。ChatGPT是一种基于自然语言处理技术的聊天机器人,它可以通过对话来理解用户的需求,并给出相应的回答。在本文中,

    2024年02月03日
    浏览(75)
  • 前后端服务器分离时,前端如何上传图片到前端服务器?

    当前后端服务器分离时,前端上传图片到前端服务器可以采用以下几种方式: 1. 直接上传到前端服务器:可以通过使用HTML的`input type=\\\"file\\\"`元素,让用户选择图片文件并直接上传到前端服务器。前端服务器可以使用后端提供的API接口处理上传请求,然后将图片保存到前端服务

    2024年04月27日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包