上次分享了支付寶訂單退款的代碼,今天分享一下支付寶轉賬的操作. 現在是有一個余額提現的功能,本來是打算做提現到銀行卡的,但是客戶嫌麻煩不想注冊銀聯的開放平台賬戶,就說先提現到支付寶就行,二期再做銀行卡的提現.
先在支付寶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的.