支付宝支付方法

感谢你的路过,希望学生的笔记能给你一点微不足道的参考
Java基础思维导图,完整Java体系的链接

一.沙箱(沙盒)

    Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。
   沙箱是一种按照安全策略限制程序行为的执行环境。早期主要用于测试可疑软件等,比如黑客们为了试用某种病毒或者不安全产品,往往可以将它们在沙箱环境中运行。经典的沙箱系统的实现途径一般是通过拦截系统调用,监视程序行为,然后依据用户定义的策略来控制和限制程序对计算机资源的使用,比如改写注册表,读写磁盘等。

二.支付流程

    为了保证交易双方(商户和支付宝)的身份和数据安全,开发者在调用接口前,需要配置双方密钥,对交易数据进行双方校验。密钥包含应用私钥(APP_PRIVATE_KEY)和应用公钥(APP_PUBLIC_KEY)。生成密钥后,开发者需要在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。密钥的配置旨在对交易数据进行双方校验。具体流程如下图所示:
在这里插入图片描述
说明:
    支付宝开放平台 SDK 封装了签名和验签过程,只需配置账号及密钥参数。
    应用公钥(商户自身的 RSA/RSA2 公钥): 支付宝使用该公钥验证该交易是商户发起。
    支付宝公钥(支付宝的 RSA/RSA2 公钥):商户使用该公钥验证该结果是支付宝返回的。
注意:
    由于同步返回的不可靠性,支付结果必须以异步通知或查询接口返回为准,不能依赖同步跳转。
    商户系统接收到异步通知以后,必须通过验签(验证通知中的 sign 参数)来确保支付通知是由支付宝发送的。
    接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的 app_id、out_trade_no、
total_amount 是否与请求中的一致,并根据 trade_status 进行后续业务处理。
    在支付宝端,partnerId 与 out_trade_no 唯一对应一笔单据,商户端保证不同次支付
out_trade_no 不可重复;若重复,支付宝会关联到原单据,基本信息一致的情况下会以原单据为
准进行支付。
补充:SDK和API的区别
   SDK全称software development kit,软件开发工具包。
   API就是可以轻松实现和其他软件的交互。
   API是数据接口,SDK相当于开发集成工具环境。要在SDK的环境下调用API.
   API是接口对接接口的过程,SDK不仅提供开发环境,还提供很多的API
扫码支付接入流程
    https://opendocs.alipay.com/open/194/106078

三.支付宝支付准备工作

正式的支付功能上线,需要使用企业的信息,所以我们这里使用支付宝提供的沙箱功能实现测试,如何
访问沙箱呢?下面看一下实现步骤:
访问支付宝首页,选择角色:“我是开发者”
在这里插入图片描述
沙箱的使用步骤:

步骤1:查看信息

在这里插入图片描述

步骤2:设置秘钥

在这里插入图片描述
大家第一次使用时,文本框内是空的,点击“支付宝密钥生成器”,下载exe文件,并安装。
在这里插入图片描述
运行程序,生成密钥:
在这里插入图片描述
把这里的“应用公钥”复制到“加签管理”中的公钥位置。设置完毕后,密钥位置会变成“设置/查看”
在这里插入图片描述

步骤3:下载沙箱钱包进行测试

注意这里必须使用沙箱版钱包进行测试,账户信息已给定。此软件只支持安卓系统
在这里插入图片描述

步骤4:测试账户的信息

在这里插入图片描述

四,代码开发

4.1 支付工具类:AlipayConfig.java

package com.zfb.util;

import java.io.FileWriter;
import java.io.IOException;

public class AlipayConfig {
   
    //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
    public static String app_id = "";
    // 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "";
    // 支付宝公钥
    public static String alipay_public_key = "";

    // 服务器异步通知页面路径
    //需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String notify_url = "http://czedcj.natappfree.cc/getnotify";
    // 页面跳转同步通知页面路径
    //需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String return_url = "http://czedcj.natappfree.cc/getreturn";
    // 签名方式
    public static String sign_type = "RSA2";
    // 字符编码格式
    public static String charset = "utf-8";
    // 支付宝网关,注意这些使用的是沙箱的支付宝网关,与正常网关的区别是多了dev
    public static String gatewayUrl =
            "https://openapi.alipaydev.com/gateway.do";
    // 支付宝网关
    public static String log_path = "D:\\eclipse-workspace\\L_XX_gaobingfa2";
    //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    /**
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public static void logResult(String sWord) {
   
        FileWriter writer = null;
        try {
   
            writer = new FileWriter(log_path + "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();
                }
            }
        }
    }
}

4.2.添加maven依赖

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--springBoot依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 支付功能SDK -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.124.ALL</version>
</dependency>
<!--springBoot支持jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

4.3 修改application.properties属性文件

#页面默认前缀目录
spring.mvc.view.prefix=/
#响应页面默认后缀
spring.mvc.view.suffix=.jsp
#修改访问的端口号
server.port=8081
#设置访问的项目路径
server.servlet.context-path=/

4.4 创建页面

<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>支付宝网站支付</title>
    <style>
        * {
     
            margin: 0;
            padding: 0;
        }
        ul, ol {
     
            list-style: none;
        }
        body {
     
            font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande",
            sans-serif;
        }
        .tab-head {
     
            margin-left: 120px;
            margin-bottom:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值