支付寶退款api https://doc.open.alipay.com/docs/api.htm?spm=a219a.7629065.0.0.PbaltX&apiId=759&docType=4
根據支付寶退款文檔,填入參數後,就可以調通支付寶退款接口,並且順利退款。
但是在這裏說的是,有些參數不要弄錯了,一般的參數正確沒有問題,但是,有個祕鑰一定不能出錯,最後肯導致的結果是錢是退成功了,但是response = alipayClient.execute(request);執行的時候會報錯,導致拋異常,後面的邏輯沒有辦法處理,所以這裏一定要小心。
現在先將代碼寫出來
退款代碼
//退款
@RequestMapping(value = "/orderBackMoney/{code}")
public void delete(@PathVariable String code, PrintWriter out) {
TfunUserOrder tfunUserOrder = tfunUserOrderService.findByCode(code);
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.REQUEST_URL,
AlipayConfig.APP_ID, AlipayConfig.PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.INPUT_CHARSET, AlipayConfig.RETURN_ALIPAY_PUBLIC_KEY, "RSA2");
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizContent("{" +
"\"out_trade_no\":\"" + tfunUserOrder.getCode() + "\"," + //訂單號
//"\"trade_no\":\"2014112611001004680003956707\"," + //支付寶交易號
"\"refund_amount\":\"" + tfunUserOrder.getSetSum() + "\"," + //需要退款的金額,該金額不能大於訂單金額,單位爲元,支持兩位小數
"\"refund_reason\":\"正常退款\"," + //退款的原因說明
"\"out_request_no\":\"HZ01RF001\"" +//標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此參數必傳。
" }");
AlipayTradeRefundResponse response = null;
try {
response = alipayClient.execute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
}
if (response.isSuccess()) {
System.out.println(response.getBody());
//業務邏輯處理
System.out.println("調用成功");
} else {
System.out.println("調用失敗");
logger.info("*****************退款申請失敗!*********************");
}
}
配置類
public class AlipayConfig {
public static String ALIPAYCOUNT= "[email protected]";
//↓↓↓↓↓↓↓↓↓↓請在這裏配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 合作身份者ID,以2088開頭由16位純數字組成的字符串
public static String PARTNER = "2088xxxxxxxxxx";
// 合作伙伴密鑰 MD5密鑰:
public static String KEY = "MD5祕鑰";
// 開放平臺密鑰 應用私鑰(SHA256withRsa)
public static String PRIVATE_KEY = "應用私鑰";
// 應用2.0簽約2017122094761781 appId
public static String APP_ID = "2018xxxxx";
//支付寶公鑰
public static String RETURN_ALIPAY_PUBLIC_KEY = "支付寶公鑰";
//↑↑↑↑↑↑↑↑↑↑請在這裏配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// 調試用,創建TXT日誌文件夾路徑
public static String LOG_PATH = "D:\\";
// 字符編碼格式 目前支持 gbk 或 utf-8
public static String INPUT_CHARSET = "utf-8";
// 簽名方式 不需修改
public static String SIGN_TYPE = "MD5";
//支付類型
public static String PAYMENT_TYPE = "1";
//訂單支付可超時時間
public static String IT_B_PAY_TIME = "30m";
//Pc支付網關
public static String PC_SERVICE = "create_direct_pay_by_user";
//手機端支付網關
public static String MOBILE_SERVICE = "alipay.wap.create.direct.pay.by.user";
//退款網關
public static String REFUND_SERVICE = "refund_fastpay_by_platform_pwd";
public static String QUERY_SERVICE = "alipay.trade.query";
public static String REQUEST_URL="https://openapi.alipay.com/gateway.do";
public static String FORMAT="json";
}
一些需要的參數說明
your private_key :密鑰 需要將生產的公鑰上傳至支付寶、密鑰留在代碼中使用
alipay_public_key :支付寶公鑰
這2個參數不要出錯,其他參數直接百度就行。