上次分享了支付寶訂單退款的代碼,今天分享一下支付寶轉賬的操作. 現在是有一個余額提現的功能,本來是打算做提現到銀行卡的,但是客戶嫌麻煩不想注冊銀聯的開放平台賬戶,就說先提現到支付寶就行,二期再做銀行卡的提現.
先在支付寶APP里添加此功能,需要簽約.

此API官方參數文檔 : https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
然后貼代碼:
/**
*
* 說明:單筆轉賬到支付寶賬戶
* @param out_biz_no 商戶轉賬唯一訂單號
* @param payee_type 收款方賬戶類型 (1、ALIPAY_USERID:支付寶賬號對應的支付寶唯一用戶號。以2088開頭的16位純數字組成。2、ALIPAY_LOGONID:支付寶登錄號,支持郵箱和手機號格式。)
* @param payee_account 收款方賬戶
* @param amount 轉賬金額
* @param payer_show_name 付款方姓名
* @param payee_real_name 收款方真實姓名
* @param remark 轉賬備注
* @author ArLen
* @time:2018年12月5日 上午10:14:35
*/
@RequestMapping("/transferAccounts")
public void transferAccounts(String out_biz_no,String payee_type,String payee_account,String amount,String payer_show_name,String payee_real_name,String remark) {
//填寫自己創建的app的對應參數
AlipayClient alipayClient = new DefaultAlipayClient("支付寶網關", "appid", "私鑰", "json", "utf-8", "公鑰","RSA2");
AlipayFundTransToaccountTransferRequest transferAccounts_request = new AlipayFundTransToaccountTransferRequest();
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setOutBizNo(out_biz_no);
model.setPayeeType(payee_type);
model.setPayeeAccount(payee_account);
model.setAmount(amount);
model.setPayerShowName(payer_show_name);
model.setPayeeRealName(payee_real_name);
model.setRemark(remark);
transferAccounts_request.setBizModel(model);
try {
AlipayFundTransToaccountTransferResponse response = alipayClient.execute(transferAccounts_request);
if(response.isSuccess()){
System.out.println(response.getBody());
} else {
System.out.println("調用失敗");
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
返回 狀態碼,msg消息,商戶ID等 , 上面給的官方路徑里都整合好了.
其實這就是商戶支付寶轉賬給支付寶用戶的操作, 然后這里還有個小問題是我自己測出來的: 如果支付寶支付訂單沒有過可退款期限的話,那么此訂單的金額是不會被當作余額轉發給支付寶賬戶的.
打個比方: 此時你的商戶支付寶余額為0元 ,
然后用戶A 已訂單支付的方式給你支付了1元,
那么現在你的商戶余額就是1元,
但是這 1元並沒有過訂單可退款的期限,
那么 這1元是不能 以轉賬的方式轉給用戶B的.
