說起來做一個支付系統最基礎的就是支付功能了,對於我們來說除了各大銀行以外微信和支付寶也是必選項,畢竟人家這個龐大的用戶群在那裡擺著呢,你不用那不是想著放棄這些用戶麽。 今天我們就來看一看對於我們開發者來說如何快速的進行接入。 首先我們要做的就是先去螞蟻金服開放平臺註冊賬號https://open.a ...
說起來做一個支付系統最基礎的就是支付功能了,對於我們來說除了各大銀行以外微信和支付寶也是必選項,畢竟人家這個龐大的用戶群在那裡擺著呢,你不用那不是想著放棄這些用戶麽。
今天我們就來看一看對於我們開發者來說如何快速的進行接入。
首先我們要做的就是先去螞蟻金服開放平臺註冊賬號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("調用失敗");
}
}