在线支付系列【23】支付宝支付接入指南

news2024/9/24 5:21:02

有道无术,术尚可求,有术无道,止于术。

文章目录

    • 前言
    • 接入指南
      • 1. 创建应用
      • 2. 绑定应用
      • 3. 配置密钥
      • 4. 上线应用
      • 5. 开通产品
    • 沙箱环境
    • 开发前准备(沙箱环境)
      • 1. 获取参数、秘钥、证书
      • 2. 下载支付宝客户端
      • 3. 案例演示

前言

在之前,我们基本完成了微信支付的对接,那么接下来集成支付宝就比较简单了,大同小异

对接支付宝,所有能力在其开放平台查看。

在这里插入图片描述
在网页/移动应用开发接入中,可以在网页、移动端、线下支付等场景中唤起支付宝进行支付。
在这里插入图片描述

开发文档、工具、API都可以在当前页查看。
在这里插入图片描述
接入简要流程:
在这里插入图片描述

接入指南

官方指南中,详细记录了企业用户接入时的操作步骤。下面简单汇总介绍下。
在这里插入图片描述

1. 创建应用

开发者使用支付宝账号登录 开放平台控制台(需实名认证的支付宝账号)创建一个应用。

在创建应用后,开放平台会为应用生成应用唯一标识APPID、,通过APPID才能调用开放产品的接口能力。
在这里插入图片描述

2. 绑定应用

支付宝的开放业务存在三种角色类型:

  • 开发者角色:需要开发者账号,一般登录支付宝 开放平台 完成应用开发相关操作。
  • 商家角色:需要商家账号,一般登录 商家服务平台 开通支付服务并完成商家经营相关操作。
  • 服务商角色:需要服务商账号,一般登录 服务商平台 完成协助商家开通产品等操作。

三种角色的账号都可通过注册实名认证的支付宝账号登录相应平台完成开通。

由于应用在支付宝开放平台创建,因此APPID归属于对应开发者账号。如果要在应用中使用支付和资金等相关的产品,必须完成应用APPID同商家账号PID的绑定,通过账号关联可实现将商家开通的产品授权给应用APPID,应用即可调用需要商家开通的产品(例如当面付、转账到支付宝账户等)。

操作流程可分为普通商家发起绑定和服务商代商家发起绑定两种类型,请根据自身需求及角色选择对应方式绑定应用。

登录 商家平台 【 账号中心 > 绑定 > APPID绑定】,点击 添加绑定。

在这里插入图片描述

3. 配置密钥

在接口调用前,您需要在支付宝开放平台配置接口加签方式。

在这里插入图片描述

4. 上线应用

开发者 创建应用 并完成配置后,可点击 提交审核,预计会有 1 个工作日的审核时间。

应用上线成功后,状态将变为 已上线,该状态下的应用能够在生产环境(正式环境)中调用接口。

5. 开通产品

自研型应用需要在应用上线后才可以开通产品。

在这里插入图片描述

沙箱环境

沙箱环境又称测试环境和开发环境,是提供给开发者开发和测试用的环境。是支付宝开放平台为开发者提供的与生产环境完全隔离的联调测试环境,开发者在沙箱环境中完成的接口调用不会对生产环境中的数据造成任何影响。

沙箱环境会提供一个沙箱版的支付宝app、商家账户、买家账户。可以跳过商家入驻、企业资质审核等过程。接入微信、支付宝支付,都需要营业执照等信息,如果没有,就可以使用沙箱环境进行测试。

按照官方详细文档地址操作即可。
在这里插入图片描述

开发前准备(沙箱环境)

1. 获取参数、秘钥、证书

在上面的接入指南中,可以参考官网文档,正式接入支付宝支付,然后获取到对应的参数、秘钥、证书,这里使用沙箱环境获取。

打开沙箱环境获取基本信息。
在这里插入图片描述
开发信息中,点击证书模式的启用,然后点击查看。

在这里插入图片描述

将公钥、私钥、证书都可以下载下来。
在这里插入图片描述

2. 下载支付宝客户端

调试过程中需要支付宝APP支持的功能,请使用沙箱提供的 Android 支付宝沙箱版。参考官方文档操作即可。
在这里插入图片描述
下载完成后,使用提供的账号密码登录即可。

在这里插入图片描述

3. 案例演示

首先添加官方SDK

        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.34.0.ALL</version>
        </dependency>

示例代码:

        // 公钥证书中获取公钥
        String alipayPublicKey = AlipaySignature.getAlipayPublicKey("E:\\pearl-demo\\pearl-pay-demo\\src\\main\\resources\\alipayPublicCert.crt");
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do",
        		// 商户号
                "2021000122611301",
                // 私钥                
                "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCRgk9JYxwLDDKHP/PlmHGpNmfrIox7HG8UJip02UvrJav32bINE37Oo80iF2T17ASjKAJubNWPeuSiUmNDPAbxJlaGlmmn4V7yvYHA/7Q8BIxDUb5WoxZlpxnaSW5GQOmZGZ6Wj/VWuLox+H1QDQEDmohM/GiCWagdDnn9pn583F7cwTpGWP9l4EZZFH/987wOR8K8SRSLPHvRaVSmchRpyY8w261kYFxt92S2n5NyyzSHoRVF4uoxWopmTta+Tzn9xHP/wGKG1keTCDx8XC1gCHXave3LUffufQvFwfxCEnDgKyHPG0Q1A2IfNbDx3t9woJVXuKY/KOu2K/8QinCLAgMBAAECggEAQAcdKGfKITpeyZDkm7T23sSn+ZmcQ1gBsNYSfJRZicFr6IYMiSB4/iipzUSKEoSmjby/RSPy3U3waVTjhORXEaoTDOoG1+6dvyaQgAKEppxBtCW2IZ1l75kWES2arqNFpy7Uz9/Mzzo+BFsZmS3/sjw/mdC/lAwro42JNIocwofxKnOofAkl0eV76mt0tmCa7Rqxg2DV3t/llDzwbGS18EhP94yI6tUu589fq2BuzblvmWnnLKf80llnJN6DW7fyzpMZJugbOwzxsjm81lLyrTksJwLibpQt+TfshqFpz27m/Dy3OmSfjJK4HKkdakDqmPIjAt/8si9D6c2gKoahYQKBgQDnt8MhHspf4+OSuiacfRUC/lPpGM7qo9GcL5nLDhkJbvm9bSsAwTKW21op+JQ3oYWrX4IEa9BKh+Sfv1kijX9vequNykLXi0IqFNL3BlYnhBJVPPqPNBcRGUVFvXaNyv2PLTrtaOF0nMHFcifEcHFy4aRwGBOAR7Qzla9/j8FUcwKBgQCgwdhPBiECTSyRrOPGwrWOhoT8iwI0RmxOwV+SmjzK8t+VQkGm+rmANyQqytObv97Hks/JlLbEbaBfK+zXqWxTlrwCyxznnVrMKu1tg6koo3NfRQ2fhe6SIdi4EpMw0IWMCrftmlYPAK9dA69K4CTavkapMKJCFobBvYKI6VoFiQKBgQCHxvP9+k7XdW+qUI3DcL/ZKzH8Cl9kum1eub3CcBZXosGQL+Hc5VhBcXMZ2ODw4CK1UpebA5nfslVTDgqq5oLfzd+si/Iy3xT8F4uu1/Wv3gHoFH01YG6LxGUFAonveByvwu8eojBJ5njcu5F11/WCPZnfXRxANMPw3ish8hh05QKBgACZ2OoqtrLggPsmb0+N6MnYnOSozGBPpxYASRAuPW3wzH8tWTt7knf1PNBgI7xgUj/iv54cTTacxk20x1TjEEGbvaYxBjGjd/RtcKfJJze8rLC9fFiNUp//OmUtxJkZHnawj5F20z2JHh615dDc16ZtsavuP50JooVU5QkH/kspAoGAGb1ypp3c5yyoanvTD9S283V9YHbWypEPTf/eBu4u1Tlfuu7IdllooNxxwlrtoTl2n6mBJVWKw853D2PnYlpnzjkPX5RTl0wkYP2GB5Up2nPHtN5bJZvBBYca3XIu7ZGKwmXAdeiB1P7uPE3Jw4XybICgtDw45j+7LdEGmRhzKB8=",
                "json",
                "utf-8",
                alipayPublicKey,
                "RSA2");
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl("");
        request.setReturnUrl("");
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", "20210817010101004");
        bizContent.put("total_amount", 0.01);
        bizContent.put("subject", "测试商品");
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        request.setBizContent(bizContent.toString());
        AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }

运行后,可以看到返回了HTML表单文件。

在这里插入图片描述
将其复制到runoob在线工具中,点击运行。

在这里插入图片描述

弹出支付页面:
在这里插入图片描述
使用沙箱支付宝APP扫描支付。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个自动配置 opengrok 多项目的脚本

前段时间在服务器上配置 opengrok 阅读代码&#xff0c;项目有很多个&#xff0c;一个一个手动配置比较繁琐。 我从搭建 tomcat 和 opengrok&#xff0c;到配置和索引完 5 个 Android 项目&#xff0c;用了差不多一整天。 要是再让我手动配置几个项目&#xff0c;估计真要崩溃…

学习Request和Response这一篇就够啦~

Request(请求) &#xff1a; Request&#xff1a;获取请求数据 Response:设置响应数据 Request继承体系&#xff1a; 使用request对象&#xff0c;查阅JavaEE API文档的HttpServeltRequest接口 Tomcat需要解析请求数据&#xff0c;封装为request对象&#xff0c;并且创建requ…

知识图谱嵌入技术研究综述

作者 张天成 1 , * 田 雪 1 , * 孙相会 1 , * 于明鹤 2 , * 孙艳红 1 , * 于 戈 摘要 知识图谱 是一种用图模型来描述知识和建模事物之间的关联关系的技术。 知识图谱嵌入 作为一种被广泛采用的知识表示方法。 主要思想是将知识图谱中的实体和关系嵌入到连续的向量空间中…

Ansible---playbook剧本

目录 引言&#xff1a;什么是playbook&#xff1f; 一、Playbook 1.1、playbook中的核心元素 1.2、playbook中的基础组件 1.3、playbook格式说明 1.4、实例&#xff1a;httpd服务剧本 二、playbook中的模块 2.1、Templates 模块 2.2、tags 模块 2.3、Roles 模块 引言&…

关于链表中插入结点的操作……

服了&#xff0c;好久没敲链表了&#xff0c;这都忘了 newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur-…

科技常识就像雨衣,要常备哦

科技常识就像雨衣&#xff0c;平常不准备&#xff0c;遇雨成落汤鸡 昨日晨跑遇雨&#xff0c;随身带轻便雨塑料雨衣 趣讲大白话&#xff1a;晴天挖水渠 *********** 信息科技是现代科技的【火车头】 往前看&#xff1a;要关注趋势 往后看&#xff1a;要了解行业历史 在当下&…

数据结构 | 栈与队列

&#x1f525;Go for it!&#x1f525; &#x1f4dd;个人主页&#xff1a;按键难防 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4d6;系列专栏&#xff1a;数据结构与算法 &#x1f52…

使用C#编写k8s CRD Controller

本文项目地址&#xff1a;k8s-crd - Repos (azure.com)CRDCRD指的是Custom Resource Definition。开发者更多的关注k8s对于容器的编排与调度&#xff0c;这也是k8s最初惊艳开发者的地方。而k8s最具价值的地方是它提供了一套标准化、跨厂商的 API、结构和语义。k8s将它拥有的一切…

【测试开发】web 自动化测试实战 --- MuiscServerTest

目录界面测试功能测试1. 登录注册模块功能测试2. 音乐列表页自动化测试3. 喜欢音乐列表页自动化测试4. 上传音乐模块自动化测试5. 以上所有测试用例集成测试套件项目测试亮点web 自动化测试实战就通过测试自己的 onlinemusicserver 音乐服务器项目进行测试&#xff0c;通过 sel…

冰冰学习笔记:多线程

欢迎各位大佬光临本文章&#xff01;&#xff01;&#xff01; 还请各位大佬提出宝贵的意见&#xff0c;如发现文章错误请联系冰冰&#xff0c;冰冰一定会虚心接受&#xff0c;及时改正。 本系列文章为冰冰学习编程的学习笔记&#xff0c;如果对您也有帮助&#xff0c;还请各位…

基于TimeQuest时序优化原理和方法

&#x1f4a1; 回顾基于RTL逻辑时序优化的基本思路&#xff0c;在关键路径中插入寄存器来优化时序 分析最坏路径 通过前面对TimeQuest软件的理解&#xff0c;基本上可以找到关键路径&#xff0c;此文章主要对关键路径时序进行优化&#xff0c;使设计达到时序要求&#xff0c;以…

RibbitMQ 入门到应用 ( 一 ) 基本概念

1.什么是RabbitMQ 1.0.什么是MQ 1.1.RabbitMQ简介 消息队列提供一个异步通信机制&#xff0c;消息的发送者不必一直等待到消息被成功处理才返回&#xff0c;而是立即返回。消息中间件负责处理网络通信&#xff0c;如果网络连接不可用&#xff0c;消息被暂存于队列当中&#…

基于YOLOV5的钢材缺陷检测

数据和源码见文末 1.任务概述 数据集使用的是东北大学收集的一个钢材缺陷检测数据集,需要检测出钢材表面的6种划痕。同时,数据集格式是VOC格式,需要进行转化,上传的源码中的数据集是经过转换格式的版本。 2.数据与标签配置方法 在数据集目录下,train文件夹下有训练集数据…

机器学习基本概念总结

深度学习是机器学习的一个特定分支&#xff0c;要想充分理解深度学习&#xff0c;就必须对机器学习的基本原理有深刻的理解。机器学习的本质属于应用统计学&#xff0c;其更多地关注如何用计算机统计地估计复杂函数&#xff0c;而不太关注为这些函数提供置信区间&#xff0c;大…

HTTP、HTTPS

目录 1.HTTP 1.1.概述 1.2.报文结构 1.2.1.请求报文 1.2.2.响应报文 1.3.方法 2.HTTPS 1.HTTP 1.1.概述 HTTP&#xff0c;超文本传输协议&#xff0c;WEB体系选用了该协议作为应用层协议。 1.2.报文结构 1.2.1.请求报文 HTTP的请求报文&#xff08;request&#xff0…

idea集成chatGPT

idea集成chatGPT 一、idea安装chat GPT插件 1.在Plugins中搜索chatGPT&#xff0c;找到如图所示的这个并点击安装&#xff0c;安装完成后点击apply 插件安装成后会出现chatGPT的图标 2.点击点击工具窗口的扳手按钮&#xff0c;将进行插件的初始设置&#xff0c;这里选择官方…

Linux GPIO模块-RK3588 GPIO驱动分析

1.简介 GPIO是可编程的通用I/O外设。如下图所示&#xff0c;RK3588 GPIO控制器包含3个部分&#xff1b;APB接口模块和SoC内部的APB总线连接&#xff0c;负责与SoC交换数据&#xff0c;位宽为32位&#xff1b;I/O port接口模块管理外部的引脚&#xff0c;引脚的输入和输出都要经…

C++复习笔记7

1.C内存分区 C内存分区&#xff1a;代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统管理 全局区&#xff1a;存放全局变量静态变量和常量。 栈区&#xff1a;编译器分配&#xff0c;存放函数的参数值和局部变量等。 堆区&#xff1a;由程序员分配和释放&a…

IntelliJ IDEA 创建JavaFX项目运行

IntelliJ IDEA 创建JavaFX项目运行JavaFX官网文档&#xff1a;https://openjfx.io/openjfx-docs/ JavaFX 2008年12月05日诞生&#xff0c;是一个开源的下一代客户端应用程序平台&#xff0c;适用于基于 Java 构建的桌面、移动和嵌入式系统。这是许多个人和公司的协作努力&#…

函数栈帧的创建和销毁(C语言)

函数栈帧的创建和销毁&#xff08;C语言&#xff09;前言主体前言 函数栈帧是一个非常重要的概念&#xff0c;是重点也是难点&#xff0c;当然涉及底层方面的知识都会很难&#xff0c;但是对我们理解函数的创建和运用有非常重要的作用。本篇博客的目的就是了解函数栈帧的创建和…