java實(shí)現(xiàn)支付寶退款功能
最近完成的差不多的項(xiàng)目突然需要加退款的流程需求了,所以來小小的實(shí)現(xiàn)以下。
其實(shí)對(duì)比其他的支付和退款來說,支付寶算是特別專業(yè),也是特別簡(jiǎn)單的一個(gè)了。
一、引入支付寶SDK
在這里說一下,其實(shí)每種支付都會(huì)有一個(gè)官方帶的SDK,我們可以把這個(gè)sdk引入到我們的項(xiàng)目中去,然后我們就可以調(diào)用里面的方法和對(duì)象,給里面?zhèn)髦担M(jìn)行我們相應(yīng)的請(qǐng)求的訪問和介入。
首先引入如上圖所示的jar包,然后我們就算是成功了一半了。
下載地址
然后我們需要把這個(gè)jar包引入到所需要的地方,這里不做過多的描述。
二、找到需要的資源
做支付,最最基本的還是各種appid,還有公鑰,私鑰,以及請(qǐng)求的網(wǎng)關(guān)等等內(nèi)容,支付寶需要的包括:
- APP_ID:開放平臺(tái)賬號(hào)申請(qǐng)的appid
- requestUrl:實(shí)現(xiàn)功能所需要請(qǐng)求的網(wǎng)關(guān)地址
- APP_PRIVATE_KEY:用戶自己生成的私鑰
- ALIPAY_PUBLIC_KEY:支付寶生成的公鑰
- CHARSET:我們需要的字符編碼,一般為utf-8的
三、編寫請(qǐng)求代碼
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"; //支付寶退款請(qǐng)求的網(wǎng)關(guān) private static String requestUrl = "https://openapi.alipay.com/gateway.do"; //用戶自己生成的私鑰 private static String APP_PRIVATE_KEY = "隨機(jī)字符,見文檔"; //支付寶公鑰 private static String ALIPAY_PUBLIC_KEY = "從支付寶中獲得"; //編碼級(jí)別 private static String CHARSET = "UTF-8"; public static String refundOrder(AliRefundTO aliRefundTO){ System.out.println("開始調(diào)用支付寶加密******************************************************"); //實(shí)例化客戶端 AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //SDK已經(jīng)封裝掉了公共參數(shù),這里只需要傳入業(yè)務(wù)參數(shù)。以下方法為sdk的model入?yún)⒎绞?model和biz_content同時(shí)存在的情況下取biz_content)。 AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel(); refundModel.setTradeNo(aliRefundTO.getTrade_no()); refundModel.setRefundAmount(aliRefundTO.getRefund_amount()); refundModel.setRefundReason("商品退款"); //實(shí)例化具體API對(duì)應(yīng)的request類,類名稱和接口名稱對(duì)應(yīng),當(dāng)前調(diào)用接口名稱: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("支付寶退款錯(cuò)誤!",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); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解java集成支付寶支付接口(JSP+支付寶20160912)
- java后臺(tái)實(shí)現(xiàn)支付寶支付接口和支付寶訂單查詢接口(前端為APP)
- Java實(shí)現(xiàn)支付寶之第三方支付寶即時(shí)到賬支付功能
- java實(shí)現(xiàn)在SSM下使用支付寶掃碼支付功能
- java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼
- Java判斷瀏覽器是微信還是支付寶
- Java開發(fā)支付寶PC支付完整版
- 微信、支付寶二碼合一掃碼支付實(shí)現(xiàn)思路(java)
- 支付寶APP支付(IOS手機(jī)端+java后臺(tái))版
- Java接入支付寶授權(quán)第三方登錄的完整步驟
相關(guān)文章
mybatis逆向工程與分頁在springboot中的應(yīng)用及遇到坑
最近在項(xiàng)目中應(yīng)用到springboot與mybatis,在進(jìn)行整合過程中遇到一些坑,在此將其整理出來,分享到腳本之家平臺(tái)供大家參考下2018-09-09Spring 中@Validated 分組校驗(yàn)的使用解析
這篇文章主要介紹了Spring 中@Validated 分組校驗(yàn)的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10簡(jiǎn)單講解Android開發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法
這篇文章主要介紹了Android開發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法,包括事件偵聽器等安卓開發(fā)中常用的接口的基本使用方法,需要的朋友可以參考下2015-12-12Java根據(jù)身份證號(hào)計(jì)算年齡,15位身份證號(hào)碼轉(zhuǎn)18位原理與操作示例
這篇文章主要介紹了Java根據(jù)身份證號(hào)計(jì)算年齡,15位身份證號(hào)碼轉(zhuǎn)18位原理與操作,結(jié)合實(shí)例形式詳細(xì)分析了構(gòu)成身份證號(hào)碼的各個(gè)位的含義,15位身份證號(hào)碼轉(zhuǎn)18位的方法及Java根據(jù)身份證號(hào)計(jì)算年齡相關(guān)操作技巧,需要的朋友可以參考下2019-10-10java反射拼接方法名動(dòng)態(tài)執(zhí)行方法實(shí)例
下面小編就為大家?guī)硪黄猨ava反射拼接方法名動(dòng)態(tài)執(zhí)行方法實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08