聊一聊如何接入支付宝

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81676606 说起来做一个支付系统最基础的就是支付功能了,对于我们来说除了各大银行以外微信和支付宝也是必选项,毕竟人家这个庞大的用户群在那里摆着呢,你不用那不是想着放弃这些用户么。
版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/81676606

说起来做一个支付系统最基础的就是支付功能了,对于我们来说除了各大银行以外微信和支付宝也是必选项,毕竟人家这个庞大的用户群在那里摆着呢,你不用那不是想着放弃这些用户么。

今天我们就来看一看对于我们开发者来说如何快速的进行接入。

首先我们要做的就是先去蚂蚁金服开放平台注册账号https://open.alipay.com。这里需要注意的是如果我们是以个人注册的话,是没有办法投入生产使用的,只能是注册企业支付宝去申请才可以。不过呢,对于我们现在学习来说是已经足够了。

创建应用

第一步我们点击导航栏的 开发接入 按钮,找到支付应用。创建一个应用。
应用创建完成后就是补充应用的信息了,相信看着页面的描述你可以做到的,这里就不过多的描述了。不过有一点需要注意,就是我们的支付功能的话可以先选择一个当面付来玩一玩商场里的扫码枪是如何做到的。

使用沙箱账号进行测试

接下来呢,我们要准备测试用的环境了。进入此页面https://openhome.alipay.com/platform/appDaily.htm?tab=info
这里面呢,有一些我们一会需要的信息,比如说APPID,支付宝公钥,支付宝网关等信息。页面持续往下拉,会有一个Android版的沙箱支付宝,先下载下来,登陆信息在左侧导航栏沙箱账号里。

开始搞

前面我们已经把需要准备的东西都准备好了,下面我们就开始开发吧。

引入依赖

有很多教程里面都是直接引入的支付宝相关的jar包,个人感觉这种方式对于我们现在maven的时代还是比较不合适的。所以呢,咱们使用支付宝官方提供的maven依赖

1
2
3
4
5
<dependency>
	<groupId>com.alipay.sdk</groupId>
	<artifactId>alipay-sdk-java</artifactId>
	<version>3.0.0</version>
</dependency>

配置基础信息

创建一个名为 alipay_config.properties的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#加密方式
alipay.signType=RSA2

#字符编码格式
alipay.charset=utf-8

#appid
alipay.appId =xxx

#商户私钥
alipay.appPrivateKey =xxx

#支付宝公钥
alipay.appPublicKey=xxx
#沙箱测试地址
alipay.aliUrl=https://openapi.alipaydev.com/gateway.do

上方几个信息详细你在沙箱里面已经看到了,这里我就不做详细解释了哦

使用@PropertySource在Java类中读取配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Data
@Configuration
@ConfigurationProperties(prefix = "alipay",ignoreUnknownFields = false)
@PropertySource(value = { "classpath:alipay_config.properties" },ignoreResourceNotFound=false)
public class AlipayConfig {

    private String appId;

    private String appPrivateKey;

    private String appPublicKey;

    private String aliUrl;

    private String signType;

    private String charset;

    @Bean
    public AlipayClient alipayClient(){
        return new DefaultAlipayClient(aliUrl,
                appId, appPrivateKey, "JSON", charset, appPublicKey, signType);
    }
}

这个配置方式呢,其实就是一个简单的把配置文件中的属性注入到这个类中的各个属性,然后呢使用一个@Bean的注解把这些配置组合成一个AlipayClient类来放入Spring的容器中进行管理

撸代码

接下来的这个时候其实已经不需要我来讲了。API接口文档在这:https://docs.open.alipay.com/api_1/alipay.trade.pay

大家可以直接参考着搞起来了。我这里给两个简单的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@Service
public class AlipayService {

    @Autowired
    private AlipayClient alipayClient;


    
    /**
     * 条码支付,声波支付
     */
    public void tradePay(){

        AlipayTradePayRequest request = new AlipayTradePayRequest();
        request.setBizContent("{" +
"\"out_trade_no\":\"20150324450101001\"," + //订单号,全局唯一
"\"scene\":\"bar_code\"," +                //支付方式:条码支付
"\"auth_code\":\"2876323325664394\"," +	//登陆沙箱支付宝,打开付款码得到的一串数字
"\"subject\":\"Iphone6 16G\"," +            //订单标题
"\"total_amount\":888.88," +			    //订单金额
"\"body\":\"Iphone6 16G\"," +
"      \"goods_detail\":[{" +
"        \"goods_id\":\"apple-01\"," +
"\"goods_name\":\"ipad\"," +
"\"quantity\":1," +
"\"price\":2000," +
"\"goods_category\":\"34543238\"," +
"\"body\":\"特价手机\"," +
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
"        }]," +
"\"operator_id\":\"yx_001\"," +
"\"store_id\":\"NJ_001\"," +
"\"terminal_id\":\"NJ_T_001\"," +
"\"extend_params\":{" +
"\"sys_service_provider_id\":\"2088511833207846\"," +
"\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," +
"\"card_type\":\"S0JP0000\"" +
"    }," +
"\"timeout_express\":\"90m\"," +
"\"auth_confirm_mode\":\"COMPLETE:转交易支付完成结束预授权;NOT_COMPLETE:转交易支付完成不结束预授权\"," +
"\"terminal_params\":\"{\\\"key\\\":\\\"value\\\"}\"" +
"  }");
        AlipayTradePayResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
    }
    /**
     * 查询
     * @return
     */
    public void queryOrder(){
        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
        request.setBizContent("{" +
                "\"out_trade_no\":\"20150320010101001\"," +  	 // 系统订单号
                "\"trade_no\":\"2018081421001004570200746674\"" + //支付宝交易订单号
                "  }");
        AlipayTradeQueryResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
    }
}

相信聪明的你已经可以看着文档开启的你的支付之路了。

本文出自http://zhixiang.org.cn,转载请保留。

相关文章
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
575 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
229 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
812 59
|
6天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1144 157
|
6天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
485 109