聊一聊如何接入支付寶

来源:https://www.cnblogs.com/zhixiang-org-cn/archive/2018/08/14/9478781.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • const 在 的右邊:不可以改指針的指向,可以用指針改裡面的值 int const p; const在 的左邊:可以改指針的指向,不可以用指針改裡面的值 int const p; const int p; const在 的兩邊都有:既不可以改指針的指向,也不可以用指針改裡面的值 int const ...
  • 知識點1:如何設置每個py 文件新建時輸出自己的名字及日子打開file->settings->file and code templete->python script ,輸入如下2行,點擊apply即可# __author__= "Hellen" #如果要系統自動貨物用戶名,輸入#__author ...
  • c/c++ 哈希表 hashtable 概念:用key去查找value 實現hash函數有很多方法,本文用除留餘數法。 除留餘數法的概念: 取一個固定的基數的餘數,註意不能用偶數,用偶數的話,分佈會不均勻 發生衝突時,用鏈地址法解決 圖形入圖: "完整代碼" ...
  • 給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 最小深度是從根節點到最近葉子節點的 ...
  • 給定一個二叉樹,找出其最大深度。 二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 /** * Definition ...
  • 1.單例模式的定義 單例模式確保某個類只有一個實例,而且自行實例化並向整個系統提供這個實例。 2.單例模式的特點 單例類只能有一個實例。 單例類必須自己創建自己的唯一實例。 單例類必須給所有其他對象提供這一實例。 3.單例模式的Java代碼 單例模式分為懶漢式(需要才去創建對象)和餓漢式(創建類的實 ...
  • 平臺:mac 網站:人人網 最近練習爬蟲登陸,方法一是找頁面里的js文件,通過解析js文件找到cookie信息再保持。但現在的站點登陸都有驗證碼,而且最煩的是request時data表單里的值基本上沒有不加密的,js學的不好,就別想著破解了。所以想起了用的比較少的selenium模塊,用於模擬登陸並 ...
  • 及最近部署TP5遇到了很多坑,各種環境下都會出現一些問題,下麵是我記錄的排坑之路 先說最簡單的lnmp一鍵安裝包,我用的是1.5穩定版 安裝命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...