最近完成的差不多的項目突然需要加退款的流程需求了,所以來小小的實現以下。
其實對比其他的支付和退款來說,支付寶算是特別專業,也是特別簡單的一個了。
一、引入支付寶sdk
在這里說一下,其實每種支付都會有一個官方帶的sdk,我們可以把這個sdk引入到我們的項目中去,然后我們就可以調用里面的方法和對象,給里面傳值,進行我們相應的請求的訪問和介入。
首先引入如上圖所示的jar包,然后我們就算是成功了一半了。
下載地址
然后我們需要把這個jar包引入到所需要的地方,這里不做過多的描述。
二、找到需要的資源
做支付,最最基本的還是各種appid,還有公鑰,私鑰,以及請求的網關等等內容,支付寶需要的包括:
- app_id:開放平臺賬號申請的appid
- requesturl:實現功能所需要請求的網關地址
- app_private_key:用戶自己生成的私鑰
- alipay_public_key:支付寶生成的公鑰
- charset:我們需要的字符編碼,一般為utf-8的
三、編寫請求代碼
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
|
import org.slf4j.logger; import org.slf4j.loggerfactory; import com.alipay.api.alipayclient; import com.alipay.api.defaultalipayclient; import com.alipay.api.domain.alipaytraderefundmodel; import com.alipay.api.request.alipaytraderefundrequest; import com.alipay.api.response.alipaytraderefundresponse; public class alipayutil { private static final logger logger = loggerfactory.getlogger(alipayutil. class ); private static string app_id = "234789720984098" ; //支付寶退款請求的網關 private static string requesturl = "https://openapi.alipay.com/gateway.do" ; //用戶自己生成的私鑰 private static string app_private_key = "隨機字符,見文檔" ; //支付寶公鑰 private static string alipay_public_key = "從支付寶中獲得" ; //編碼級別 private static string charset = "utf-8" ; public static string refundorder(alirefundto alirefundto){ system.out.println( "開始調用支付寶加密******************************************************" ); //實例化客戶端 alipayclient alipayclient = new defaultalipayclient(requesturl, app_id, app_private_key, "json" , charset, alipay_public_key, "rsa2" ); //sdk已經封裝掉了公共參數,這里只需要傳入業務參數。以下方法為sdk的model入參方式(model和biz_content同時存在的情況下取biz_content)。 alipaytraderefundmodel refundmodel = new alipaytraderefundmodel(); refundmodel.settradeno(alirefundto.gettrade_no()); refundmodel.setrefundamount(alirefundto.getrefund_amount()); refundmodel.setrefundreason( "商品退款" ); //實例化具體api對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay alipaytraderefundrequest request = new alipaytraderefundrequest(); request.setbizmodel(refundmodel); try { alipaytraderefundresponse response = alipayclient.execute(request); system.out.println(response.getmsg()+ "\n" ); system.out.println(response.getbody()); } catch (exception e){ e.printstacktrace(); logger.error( "支付寶退款錯誤!" ,e.getmessage()); } return "" ; } public static void main(string[] arg){ alirefundto alirefundto= new alirefundto(); alirefundto.setrefund_amount( "0.01" ); alirefundto.settrade_no( "2018050421001004310518105890" ); string res=refundorder(alirefundto); } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/tr1912/article/details/80219745