【对接支付宝支付详细流程】

下面示例使用的是支付宝的网页支付,最终的效果如图:

1.前置条件

对接支付宝你需要了解的知识点

1.加密算法

对称加密和非对称加密,RSA2加密算法,签名验证

2.支付宝平台openid unionId的概念

https://opendocs.alipay.com/pre-open/06z4jd?sourceCode=SC00004290&projectCode=1964001821&sceneVersion=2

3.内网开发内网穿透(本地调试)

下载地址https://natapp.cn/

使用教程:https://natapp.cn/article/natapp_newbie

异常情况;

这种情况属于已经同了,但是本地端口号对应的服务没启动或者在natapp服务端配置的端口号和本地的对应不上

4.支付的整体流程

支付宝开放平台登记信息-》填写

应用公钥信息 用于给支付宝 支付宝拿着去做验证

获取支付宝公钥信息,用于对支付的回调接口做签名签证

获取支付宝网关信息 用于发起支付调用支付宝进行支付

5.沙箱环境的使用

https://opendocs.alipay.com/common/02kkv7

6.SDK的下载

https://opendocs.alipay.com/open/02np94?pathHash=647fc236

引入依赖即可

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

7.示例代码的下载

1.

2.

3.

8.api文档

https://opendocs.alipay.com/open/29ae8cb6_alipay.trade.wap.pay?scene=21&pathHash=1ef587fd

9.常见的异常错误码

https://opensupport.alipay.com/support/FAQ/d6f3097d-14a9-4edc-a488-4e5a1d6aaf8a

2.细节流程

1.创建自己的产品

在控制台选择你需要开发的产品

这里选择网页移动应用,点击创建网页/移动应用

配置完之后进入应用详情

2.配置基础信息

1.配选择接口加签名方式,

证书或者签名这里选择签名。

按照操作配置签名

2.配置公钥和私钥

如何生成公钥和私钥?

https://opendocs.alipay.com/support/01rauw

3.配置回调地址

附支付接口代码

demo

package com.css.tom.service;/*** @author weiwensi* @version 1.0-SNAPSHOT* @since 2024/7/6 21:23*/import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.domain.AlipayTradePagePayModel;
import com.alipay.api.domain.ExtUserInfo;
import com.alipay.api.domain.InvoiceKeyInfo;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.domain.InvoiceInfo;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.domain.GoodsDetail;
import com.alipay.api.domain.SubMerchant;import com.alipay.api.FileItem;
import org.springframework.stereotype.Service;import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
@Service
public class AlipayTradePagePay {public  String pay() throws AlipayApiException {// 初始化SDKAlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());// 构造请求参数以调用接口AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();AlipayTradePagePayModel model = new AlipayTradePagePayModel();// 设置商户门店编号model.setStoreId("NJ_001");// 设置订单绝对超时时间model.setTimeExpire("2024-07-07 19:05:01");// 设置业务扩展参数ExtendParams extendParams = new ExtendParams();//个人中心 mapi网关产品密钥  沙箱环境-》沙箱账号 2088721033555793/*  extendParams.setSysServiceProviderId("2088612340891761");extendParams.setHbFqSellerPercent("100");extendParams.setHbFqNum("3");extendParams.setIndustryRefluxInfo("{\"scene_code\":\"metro_tradeorder\",\"channel\":\"xxxx\",\"scene_data\":{\"asset_name\":\"ALIPAY\"}}");extendParams.setSpecifiedSellerName("tom的跨境小铺");extendParams.setRoyaltyFreeze("true");extendParams.setCardType("S0JP0000");model.setExtendParams(extendParams);*/// 设置订单标题model.setSubject("Iphone6 16G");// 设置请求来源地址//model.setRequestFromUrl("https://");// 设置产品码model.setProductCode("FAST_INSTANT_TRADE_PAY");// 设置PC扫码支付的方式model.setQrPayMode("1");// 设置商户自定义二维码宽度model.setQrcodeWidth(100L);// 设置请求后页面的集成方式model.setIntegrationType("PCWEB");// 设置订单包含的商品列表信息List<GoodsDetail> goodsDetail = new ArrayList<GoodsDetail>();GoodsDetail goodsDetail0 = new GoodsDetail();goodsDetail0.setGoodsName("ipad");goodsDetail0.setAlipayGoodsId("20010001");goodsDetail0.setQuantity(1L);goodsDetail0.setPrice("2000");goodsDetail0.setGoodsId("apple-01");goodsDetail0.setGoodsCategory("34543238");goodsDetail0.setCategoriesTree("124868003|126232002|126252004");goodsDetail0.setShowUrl("http://www.alipay.com/xxx.jpg");goodsDetail.add(goodsDetail0);model.setGoodsDetail(goodsDetail);// 设置商户的原始订单号model.setMerchantOrderNo("20161008001");// 设置二级商户信息SubMerchant subMerchant = new SubMerchant();/*subMerchant.setMerchantId("2088000603999128");subMerchant.setMerchantType("alipay");model.setSubMerchant(subMerchant);*/// 设置开票信息/* InvoiceInfo invoiceInfo = new InvoiceInfo();InvoiceKeyInfo keyInfo = new InvoiceKeyInfo();keyInfo.setTaxNum("1464888883494");keyInfo.setIsSupportInvoice(true);keyInfo.setInvoiceMerchantName("ABC|003");invoiceInfo.setKeyInfo(keyInfo);invoiceInfo.setDetails("[{\"code\":\"100294400\",\"name\":\"服饰\",\"num\":\"2\",\"sumPrice\":\"200.00\",\"taxRate\":\"6%\"}]");model.setInvoiceInfo(invoiceInfo);*/// 设置商户订单号model.setOutTradeNo("20150320010101001");// 设置外部指定买家/*ExtUserInfo extUserInfo = new ExtUserInfo();extUserInfo.setCertType("IDENTITY_CARD");extUserInfo.setCertNo("2088722033555808");extUserInfo.setName("李明");extUserInfo.setMobile("16587658765");extUserInfo.setMinAge("18");extUserInfo.setNeedCheckInfo("F");extUserInfo.setIdentityHash("27bfcd1dee4f22c8fe8a2374af9b660419d1361b1c207e9b41a754a113f38fcc");model.setExtUserInfo(extUserInfo);*/// 设置订单总金额model.setTotalAmount("88.88");// 设置商户传入业务信息// model.setBusinessParams("{\"mc_create_trade_ip\":\"127.0.0.1\"}");// 设置优惠参数//model.setPromoParams("{\"storeIdType\":\"1\"}");request.setBizModel(model);// 第三方代调用模式下请设置app_auth_token// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "POST");// 如果需要返回GET请求,请使用// AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "GET");return response.getBody();}private static AlipayConfig getAlipayConfig() {String privateKey  = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCZbzZ/n0DMKfr1y+0YvL2Q38R7HEV4r3AmzVisteCzqpW9Q86dPLlVsUOTSRqT9TMkHsLWd9dZ0YstDJf69PuKsAan6/G0SorfXEXRUAKJtJXq9BKtcNr50XQlirUSj77ziwc6XZfFyRphgcmu0HzRfXJQQnrGGCiSlW1yYxRF6EL9mypi/dHErARyu/qNu1K/kdf+hyrSvAhbvANL4M3RkOjssvFjpXFY+ggQgFdqVp1VTbs6G5/mSWqsSJAiH1DsDQhVmfzQaIoTms8j1gTklBjrZKMq+DBbhm8B5R2PunSwtYFWLgkCkgGUU5me4SAXQRDESV92jsDOxqb6G3WvAgMBAAECggEAblGxPKezflg80hgS3HNwVUcezWmxZam2mJ+Sv3NyIZxoV5H2b8WmeD+hF7g7PODTKYhYjL3UAAeS6wwgBle4uKoBzyDtQ7VJDnoY1PuTJ5HJLQralwwK1g5MVWXa9YKXSCLRSpzasGH87tjTuza6WCG7XIvAHMhn+6Um8VTd0bil0gOYQyJDuzombAxWGbSCv4PfJBMO7xT2HtFxejpCI9wPkJ5hnZ2PzPplmciivQMIWpxZCssDjsAdpjjWH/ETaXr141uD6V+QVQmlWjfCDVCwFGNxJIBkkDmUOE+czyp+q+ssH877F/OYon1s/RuHVli8WRllXjqz167Ov1WveQKBgQDJH+vREzjrOZkQEHbzcQBKuSqnmW+fjdUvfdgCW79JMTn9UN2OQCcgP4B23VqMIKz6oJZKCiPgLQoFeOx62jj4NrR9fZEK7SbHg/uxqjevTvzX1qJQjqFwYGeNvuaks7YGDhaQRHl31G0uZsGTPgcS0r2rn5XVkUuFYDrvYXeKDQKBgQDDTD2Zsou8tTYu1aMNhdHc7+nLw1WEI/lW4HfZ0s+5lbefTRGb23mX6dVYnExyHum64kiEREUZewWZSec8z6/IY0wgWRWBDHIpoRaTSVuu2F9b9PPXCTnbmn3e0q1Blk07nQU90Zjz3indBvmuOPNHiQrgAe1eVlSDeXDDOiZ7qwKBgQDIYcxiRwOLoJw2XCEXVLuUtz2fNAj5b6c6JOhlGSHQ+4GqN7o18wbIY1xLkSiYuil9nyd9ZvLtdBIq95qsn+TosCBNcyBiQXtEhuPq1Auc11akeMzI9AI2Y2Zo3A0RhZdSGxEx9XcMA5IwC+LLH56Oi3a7mkj/Oj6DCShOvc4KtQKBgDNsF6wofvKpJCMgzVX6Lk/mO8ETJaktb7GYWPZZs6hB659eQ4yuNU3ym+JBBT/nM9OpUT7CWw9ifQ7njqNMbBRvUNQToL3h8Q1VBQSzBBj9j94+mRW9sCZKf2n0PvpOAPf5WC/2yDcuAAfallNxW10ykFJ7L2zvfkE/8Jj27rsRAoGAcbr5OLgcxOg5GzK2dNRJWzzif3TU35dX6H+aI0jG8d9ftxNhmEnKGA4ahKmYuCXsk3xpJ+c/iqVIitOnRxqlPCPAE9UyOOFNCYIXx+t2QGuKrX446PF7b0ROQKwPJ4M0ZgJIAkwcwRLbM0Mpgn098dZTEQ+IHAeYxcPuLt75xHU=";String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5cKTEguXYKSskkbSXMNxC8rS7Qn4OibXrFIJwxh3/lw+c2/dtBDhl/6Mh1XM1m598UBRgmTvz4cpuYhYqrYgWEritfPEyZe6GU1q6+BKPrDZDX4oRgfFJtXRJfMI6C3otcEpSxkNk1R5UhAADRj8wIoAgVUHo8kZORhRdPLozK8X4/VpMlffdwz+HNvuz8ZfKRFcieNkhFJm3UkctF10ZFPjekkCdFazbqb7mxpA4XL0e1BLLANV57IktOFpwHpUA0YZ3vnSncC+zRJNm4dsl091fszlDFbwLAaXYYLjZQW9MU6ziXnfqXtRseyu1S6JP6RsP7IrXjLRBLAhmCiW+QIDAQAB";AlipayConfig alipayConfig = new AlipayConfig();alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");alipayConfig.setAppId("9021000136613031");alipayConfig.setPrivateKey(privateKey);alipayConfig.setFormat("json");alipayConfig.setAlipayPublicKey(alipayPublicKey);alipayConfig.setCharset("UTF-8");alipayConfig.setSignType("RSA2");return alipayConfig;}
}

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

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

相关文章

文件管理下:文件函数的学习

前言 Hello,小伙伴们你们的作者君又来了&#xff0c;上次我们简单介绍了文件的坐拥并简单提到了数据的读取&#xff0c;和C语言的默认流的作用&#xff0c;今天我将继续带领大家探索文件的奥秘&#xff0c;大家准别好了吗&#xff1f; 在内容开始之前还是按照惯例&#xff0c…

初识java—jdk17的一些新增特性

文章目录 前言一 &#xff1a; yield关键字二 &#xff1a;var关键字三 &#xff1a;密封类四 &#xff1a;空指针异常&#xff1a;五&#xff1a;接口中的私有方法&#xff1a;六&#xff1a;instanceof关键字 前言 这里介绍jdk17相对于jdk1.8的部分新增特性。 一 &#xff…

QT使用QGraphicsView绘图 重写QGraphicsObject类实现点在QPainterPath路径上移动动画效果

闲谈&#xff1a;眨眼间&#xff0c;2024年就过去了一半了&#xff0c;年前定下的计划一个都没完成&#xff0c;乘着有空&#xff0c;把之前学习的内容和示例先总结了。 目录 导读SVG 转QPainterPath 路径获取QPainterPath指定长度时的坐标。重写QGraphicsObject类 实现点图元Q…

stm32精密控制步进电机(基础篇)

众所周知&#xff0c;步进电机由于使用脉冲控制&#xff0c;会比直流电机的控制稍难一些&#xff0c;但开环控制时也更加稳定。 落到做项目的时候&#xff0c;目前来说我都会先考虑步进电机&#xff0c;再去考虑直流&#xff0c;无刷这样的电机。包括毕设时所用的机械臂也是用…

并发处理 优先图和多重图

优先图(Precedence Graph)视图可串性多重图(Polygraph) 优先图(Precedence Graph) 优先图用于冲突可串性的判断。 优先图结构&#xff1a; 结点 (Node)&#xff1a;事务&#xff1b;有向边 (Arc): Ti → Tj &#xff0c;满足 Ti <s Tj&#xff1b; 存在Ti中的操作A1和Tj…

开源全新H5充值系统源码/自定义首页+充值页面/灵活对接上游渠道接口

开源全新H5充值系统源码&#xff0c;系统基于thinkphp框架开发&#xff0c;功能已全完善&#xff0c;可灵活对接其他上游渠道接口&#xff0c;默认对接了大猿人接口&#xff0c;另外可无限制自定义创建充值页面&#xff0c;首页支持后台自定义修改&#xff0c;支持三级分销&…

史上最全的自抗扰控制(ADRC)学习资料

史上最全的自抗扰控制&#xff08;ADRC&#xff09;学习资料 需要的私信我~ 需要的私信我~ 需要的私信我~ ​ 本文将作者近些年来学习ADRC算法的学习资料进行汇总&#xff0c;整理了这一版相对较全的学习资料&#xff0c;包含参考文献以及仿真案例&#xff0c;适合初学者入门&…

6、Redis系统-数据结构-05-整数

五、整数集合&#xff08;Intset&#xff09; 整数集合是 Redis 中 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素&#xff0c;并且元素数量不大时&#xff0c;就会使用整数集合这个数据结构作为底层实现。整数集合通过紧凑的内存布局和升级机制&#xff0c;实现了…

HiAI Foundation开发平台,加速端侧AI应用的智能革命

如果您是一名开发者&#xff0c;正在寻找一种高效、灵活且易于使用的端侧AI开发框架&#xff0c;那么HarmonyOS SDKHiAI Foundation服务&#xff08;HiAI Foundation Kit&#xff09;就是您的理想选择。 作为一款AI开发框架&#xff0c;HiAI Foundation不仅提供强大的NPU计算能…

直击2024 WAIC现场:关于大模型,热情、焦虑与冷静同在

世博展览馆内人们的热情&#xff0c;与世博中心内参与论坛的人们&#xff0c;心情似乎并不成正比。 展馆内人们看到的大模型加速落地是表象&#xff0c;也是结果&#xff1b;而论坛里的企业家和人工智能学者们则更关注大模型的未来发展方向和商业化进程&#xff0c;以及AI安全…

计算机的错误计算(二十三)

摘要 计算机的错误计算&#xff08;二十二&#xff09;阐明&#xff1a;对于结果应该为 0的算式&#xff0c;即使增加计算精度&#xff0c;也得不出0. 针对 &#xff0c;本节给出一种解决方案。 计算机的错误计算&#xff08;十九&#xff09;展示了计算机对 的错误计算&…

【0基础学爬虫】爬虫框架之 feapder 的使用

前言 大数据时代&#xff0c;各行各业对数据采集的需求日益增多&#xff0c;网络爬虫的运用也更为广泛&#xff0c;越来越多的人开始学习网络爬虫这项技术&#xff0c;K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章&#xff0c;为实现从易到难全方位覆盖&#xff0c;特设【0…

Python遥感开发之时序数据的线性插值

Python遥感开发之时序数据的线性插值 0 历史博客1 实现思路2 代码实现3 效果展示 前言&#xff1a;在遇到空间数据的时候&#xff0c;尤其是哨兵、Landsat或者MODIS数据会出现局部值的空缺&#xff0c;为了解决这些值的空缺&#xff0c;通常采用插值的方法&#xff0c;本博客使…

Python编程学习笔记(1)--- 变量和简单数据类型

1、变量 在学习编程语言之前&#xff0c;所接触的第一个程序&#xff0c;绝大多数都是&#xff1a; print("Hello world!") 接下来尝试使用一个变量。在代码中的开头添加一行代码&#xff0c;并对第二行代码进行修改&#xff0c;如下&#xff1a; message "…

中国星坤X1224系列线对板连接器:小巧稳定,助力物联网终端高效运行

在物联网、电器和消防等领域&#xff0c;终端设备的安全稳定运行至关重要。为了满足这些领域对连接器高可靠性、小巧轻便和耐高温的需求&#xff0c;X1224系列线对板连接器应运而生。这款连接器以其独特的设计和卓越的性能&#xff0c;成为了终端设备中不可或缺的一部分。 一、…

Ubantu22.04 通过FlatPak安装微信

Ubuntu22.04 下使用Flatpak稳定安装微信&#xff01; 国际惯例&#xff0c;废话不多说&#xff0c;先上效果图。为啥使用Flatpak,因为Wechat官方只在FlatPak发布了最新的版本。之前使用了Wine以及Dock安装Wechat,效果都不是很理想&#xff0c;bug很多。所以使用了FlatPak。 Fl…

免费的鼠标连点器电脑版教程!官方正版!专业鼠标连点器用户分享教程!2024最新

电脑技术的不断发展&#xff0c;许多用户在日常工作和娱乐中&#xff0c;需要用到各种辅助工具来提升效率或简化操作&#xff0c;而电脑办公中&#xff0c;鼠标连点器作为一种能够模拟鼠标点击的软件&#xff0c;受到了广大用户的青睐。本文将为大家介绍一款官方正版的免费鼠标…

一.2.(3)放大电路的图解分析方法和微变等效电路分析方法;

放大电路的主要分析方法:图解法、微变等效电路法 这里以共射放大电路为例 (1) 图解法: 1.静态分析 首先确定静态工作点Q,然后根据电路的特点,做出直流负载线,进而画出交流负载线,最后,画出各极电流电压的波形。求出最大不失真输出电压。 估算IBQ&#xff0c;然后根据数据手册里…

09.QT控件:按钮类控件

1. QPushButton 在QT中使⽤ QPushButton 表⽰⼀个按钮。QPushButton 继承⾃ QAbstractButton&#xff0c;这个类是⼀个抽象类&#xff0c;是其他按钮的⽗类。 &#xff08;1&#xff09;QAbstractButton 中&#xff0c;和 QPushButton 相关性较⼤的属性&#xff1a; &#xf…

STM32-Unix时间戳和BKP备份寄存器以及RTC实时时钟

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. Unix时间戳1.1 Unix时间戳简介1.2 UTC/GMT1.3 时间戳转换 2. BKP备份寄存器2.1 BKP简介2.2 BKP基本结构2.3 BKP库函数 3. RTC实时时钟3.1 RTC简介3.2 RTC框图3.3 RTC基本结构3.4 硬件电路3.5 RTC操作注意事项3.6 R…