聊一聊如何接入支付寶

来源: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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...