支付宝支付功能使用

简介: 支付宝支付功能使用

1、进入“蚂蚁金服开放平台”

image.png

2、下载支付宝官方 demo,进行配置和测试

文档地址

image.png

demo下载

image.png

image.png

源码目录结构说明

1. ├─src
2. 
3. │  └─com.alipay
4. 
5. │      └─config
6. 
7. │          ├─AlipayConfig        配置类
8. 
9. │      └─util
10. 
11. │          ├─logFile        日志类
12. 
13. ├─WebContent
14. 
15. │  └─META-INF
16. 
17. │  └─ wappay 手机网站支付
18. 
19. │          ├─close.jsp 统一收单交易关闭接口调试入口页面
20. 
21. │          ├─downloadurl.jsp 查询对账单下载地址接口调试入口页面
22. 
23. │          ├─ pay.jsp 支付宝手机网站支付接口(alipay.trade.wap.pay)接口调试入口页面
24. 
25. │          ├─query.jsp 统一收单线下交易查询调试入口页面
26. 
27. │          ├─refund.jsp 统一收单交易退款接口调试入口页面
28. 
29. │          ├─ refundquery.jsp 统一收单交易退款查询调试入口页面
30. 
31. │  └─ META-INF
32. 
33. │      └─ lib 依赖类库
34. 
35. │          ├─alipay-sdk-java-3.3.0.jar
36. 
37. │          ├─alipay-sdk-java-3.3.0-source.jar
38. 
39. │          ├─ commons-logging-1.1.1.jar
40. 
41. │          ├─ commons-logging-1.1.1-sources.jar
42. 
43. │       ├─index.html
44. 
45. │       ├─notify_url.jsp
46. 
47. │       ├─ return_url.jsp
48. 
49.

AlipayConfig  配置类示例代码

1. package com.alipay.config;
2. 
3. public class AlipayConfig {
4. 
5. // 商户appid
6. 
7. public static String APPID = "";
8. 
9. // 私钥 pkcs8格式的
10. 
11. public static String RSA_PRIVATE_KEY = "";
12. 
13. // 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
14. 
15. public static String notify_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp";
16. 
17. // 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址
18. 
19. public static String return_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp";
20. 
21. // 请求网关地址
22. 
23. public static String URL = "https://openapi.alipay.com/gateway.do";
24. 
25. // 编码
26. 
27. public static String CHARSET = "UTF-8";
28. 
29. // 返回格式
30. 
31. public static String FORMAT = "json";
32. 
33. // 支付宝公钥
34. 
35. public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjrEVFMOSiNJXaRNKicQuQdsREraftDA9Tua3WNZwcpeXeh8Wrt+V9JilLqSa7N7sVqwpvv8zWChgXhX/A96hEg97Oxe6GKUmzaZRNh0cZZ88vpkn5tlgL4mH/dhSr3Ip00kvM4rHq9PwuT4k7z1DpZAf1eghK8Q5BgxL88d0X07m9X96Ijd0yMkXArzD7jg+noqfbztEKoH3kPMRJC2w4ByVdweWUT2PwrlATpZZtYLmtDvUKG/sOkNAIKEMg3Rut1oKWpjyYanzDgS7Cg3awr1KPTl9rHCazk15aNYowmYtVabKwbGVToCAGK+qQ1gT3ELhkGnf3+h53fukNqRH+wIDAQAB";
36. 
37. // 日志记录目录定义在 logFile 中
38. 
39. public static String log_path = "/log";
40. 
41. // RSA2
42. 
43. public static String SIGNTYPE = "RSA2";
44. 
45. }

index.html 说明

1. <div id="main">
2. <div id="body" style="clear:left">
3. <dl class="content">
4. <dt></dt>
5. <dd id="btn-dd">
6. <span class="new-btn-login-sp">
7. <button class="new-btn-login" style="text-align:center;" onclick="window.open('./wappay/pay.jsp')">手机网站2.0支付(接口名:alipay.trade.wap.pay)</button>
8. </span>
9. </dd>
10. <dt></dt>
11. <dd id="btn-dd">
12. <span class="new-btn-login-sp">
13. <button class="new-btn-login" style="text-align:center;" onclick="window.open('./wappay/query.jsp')">手机网站2.0订单查询 (接口名:alipay.trade.query)</button>
14. </span>
15. </dd>
16. <dt></dt>
17. <dd id="btn-dd">
18. <span class="new-btn-login-sp">
19. <button class="new-btn-login" style="text-align:center;" onclick="window.open('./wappay/refund.jsp')">手机网站2.0订单退款  (接口名:alipay.trade.refund)</button>
20. </span>
21. </dd>
22. <dt></dt>
23. <dd id="btn-dd">
24. <span class="new-btn-login-sp">
25. <button class="new-btn-login" style="text-align:center;" onclick="window.open('./wappay/refundquery.jsp')">手机网站2.0订单退款查询(接口名:alipay.trade.fastpay.refund.query)</button>
26. </span>
27. </dd>
28. <dt></dt>
29. <dd id="btn-dd">
30. <span class="new-btn-login-sp">
31. <button class="new-btn-login" style="text-align:center;" onclick="window.open('./wappay/downloadurl.jsp')">手机网站2.0账单下载(接口名:alipay.data.dataservice.bill.downloadurl.query)</button>
32. </span>
33. </dd>
34. </dl>
35. </div>

3、配置使用沙箱进行测试

1、使用 RSA 工具生成签名

2、下载沙箱版钱包

3、运行官方 demo 进行测试

4、什么是公钥、私钥、加密、签名和验签?

公钥私钥

公钥和私钥是一个相对概念 它们的公私性是相对于生成者来说的。

一对密钥生成后,保存在生成者手里的就是私钥, 生成者发布出去大家用的就是公钥

加密和数字签名

 加密是指:

       我们使用一对公私钥中的一个密钥来对数据进行加密,而使用另一个密钥来进行解 密的技术。

 公钥和私钥都可以用来加密,也都可以用来解密。

 但这个加解密必须是一对密钥之间的互相加解密,否则不能成功。

 加密的目的是:

        为了确保数据传输过程中的不可读性,就是不想让别人看到。

签名:

 给我们将要发送的数据,做上一个唯一签名(类似于指纹)

 用来互相验证接收方和发送方的身份;

 在验证身份的基础上再验证一下传递的数据是否被篡改过。因此使用数字签名可以 用来达到数据的明文传输。

验签

 支付宝为了验证请求的数据是否商户本人发的,

 商户为了验证响应的数据是否支付宝发的

文章知识点与官方知识档案匹配,可进一步学习相关知识

Java技能树首页概览124203 人正在系统学习中

业务推广/技术交流/商业合作

微信名片

相关文章
|
固态存储 NoSQL Go
使用 cProfile 和火焰图调优 Python 程序性能(下)
使用 cProfile 和火焰图调优 Python 程序性能
456 0
|
JSON 监控 JavaScript
使用 cProfile 和火焰图调优 Python 程序性能(上)
使用 cProfile 和火焰图调优 Python 程序性能
305 0
|
安全 Java
synchronized修饰普通方法和静态方法的区别
在Java多线程中,`synchronized`关键字用于同步机制,确保线程安全。修饰普通方法时,同步基于对象实例,仅同步访问同一对象的方法调用,不同对象间互不影响。修饰静态方法时,则基于类级别,所有对象访问同一静态方法时会互相阻塞。前者适合保护对象状态,后者适用于类级资源同步。需注意,修饰静态方法可能会影响并发性能。实际应用中应根据需求选择适当的同步策略,以平衡程序正确性和效率。
|
JSON 数据格式
DevEco开发ArkTS框架: 路由失效的问题
开启DevEco开发ArkTS框架篇章 !
199 17
|
JavaScript 开发工具 git
使用webstorm来创建并且运行vue项目详细教程
使用webstorm来创建并且运行vue项目详细教程
1457 0
|
机器学习/深度学习 算法
LSTM时间序列预测中的一个常见错误以及如何修正
在使用LSTM进行时间序列预测时,常见错误是混淆回归和预测问题。LSTM需将时间序列转化为回归问题,通常使用窗口或多步方法。然而,窗口方法中,模型在预测未来值时依赖已知的未来值,导致误差累积。为解决此问题,应采用迭代预测和替换输入值的方法,或者在多步骤方法中选择合适的样本数量和训练大小以保持时间结构。编码器/解码器模型能更好地处理时间数据。
759 1
|
存储 Oracle 关系型数据库
几种常见的数据同步方式
【6月更文挑战第18天】几种常见的数据同步方式
1920 4
|
JavaScript 前端开发
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
1111 0
|
JavaScript 小程序
微信小程序-页面访问组件数据和方法
好了,结构搭建的差不多了,接下来就是来看关键的内容了,首先我们来看一下如何拿到一个自定义组件的实例,有两种方式,这两种方式的前提条件是,给这个组件设置一个标识,设置标识的方式可以是通过类名或者ID进行设置,然后通过这个标识得到组件实例。
457 0
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
745 0