1. 程式人生 > >支付寶退款功能開發

支付寶退款功能開發

當接到這個任務的時候,我說實話沒搞過,之前搞過支付的,感覺退款應該很容易吧,但實際上並沒有我想象的那麼容易。(不是開發難,是別的問題)首先,按照國際慣例,我先在支付寶的官網上檢視開發文件這就是咱們要開發的必備文件

我是要用java開發


當看到這個的時候,應該就差不多了,按照這個寫,不過按照這個寫的時候,需要用到支付寶的sdk,匯入幾個jar包,不然程式會報編譯錯誤。需要的關鍵jar包:
開始編寫程式碼:
/**
 * 支付寶退款工具類
 * @author WangXJ
 */
public class Aliaction {
	/**
	 * @param out_trade_no 訂單支付時傳入的商戶訂單號,不能和 trade_no同時為空。
	 * @param trade_no 支付寶交易號,和商戶訂單號不能同時為空
	 * @param refund_amount 需要退款的金額,該金額不能大於訂單金額,單位為元,支援兩位小數
	 * @return 將提示資訊返回
	 */
	public  synchronized static  String alipayRefundRequest(String out_trade_no,String trade_no,double refund_amount){
        // 傳送請求
		String strResponse = null;
		try {
			AlipayClient alipayClient = new DefaultAlipayClient(AliRefundConfig.request_url,AliRefundConfig.app_id,AliRefundConfig.private_key,"json","GBK",AliRefundConfig.ali_public_key,"RSA");
			AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
			AlipayRefundInfo alidata= new AlipayRefundInfo();//這裡我封裝了一個類用來傳遞json資料
			alidata.setOut_trade_no(out_trade_no);
			alidata.setRefund_amount(refund_amount);
			alidata.setTrade_no(trade_no);
			request.setBizContent(JsonUtil.toJSONString(alidata));//將資料格式化成json格式
			AlipayTradeRefundResponse response;
			response = alipayClient.execute(request);
			if ("10000".equals(response.getCode())) {
				System.out.println("退款成功");//沒有提示訊息就是好訊息strResponse=null
            }else {
            	strResponse=response.getSubMsg();//退款失敗的提示資訊
            }
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strResponse;
	}
本以為寫到這裡應該就沒問題了,開始測試,測試的時候只需要請求一個action,然後action中呼叫此工具類裡的這個方法就行了。(切記:一定要先下單。測試下一個0.01元的訂單,然後得到該訂單的out_trade_no和(trade_no,refund_amount:0.01 這幾個測試的時候可以直接寫死)

這個是我的boss後臺,我的程式是這樣的,在這裡點選確認退款後,就呼叫我上面寫的方法結果後臺還是出問題了(拋異常:sign無效, 也有的是app_id無效等等)看到這些問題的時候,不要慌,因為這個很可能不是你程式寫的問題。(我之前支付用的是MD5加密的,而本次用的是RSA加密)

這裡的資料一定要是和公司支付寶賬號的資訊完全對應,想到這裡果斷聯絡上級領導,要到了公司支付寶的賬號和密碼登入成功後,我們找到了app_id

在公司logo頭像下找到“賬號管理”

點進去,看看是否設定了RSA祕鑰,且要確保和你在程式中的配置的一模一樣


對應的私鑰如果忘記的話,要重新生成公鑰並上傳,私鑰一定要記住並放到你的程式中(生成RSA公鑰和私鑰工具)這個可以直接在支付寶開放平臺上下載就好了
用這個動動生成你需要的公鑰和私鑰,公鑰要上傳到上面說的那個支付寶的開放平臺上。對於java開發人員的話,要特別注意

生成的這個檔案才是你要的私鑰哦。(這裡有個插曲,上傳公鑰的時候,需要老闆將收到的簡訊驗證碼給到你……)私鑰和公鑰是一對,切記,你上傳到支付寶開放平臺上的那個公鑰對應的私鑰如果忘記了,那你就要用工具重新再生成一對公鑰和私鑰了,還要再問老闆要驗證碼重新上傳新的公鑰……甚是麻煩OK,現在,就沒問題了。測試效果如下

暫時就寫到這裡,有不懂的歡迎聯絡我的qq:1913284695