商城轉賬到賣家賬戶的支付寶方案:支付寶單筆轉賬
阿新 • • 發佈:2019-01-22
最近在做一個電子商務的專案,剛接手這個專案時發現好多問題,就拿轉賬來說,後臺沒有直接轉賬到商家賬戶,需要到銀行櫃檯轉賬,感覺這樣的設計太失敗了,不說幾萬人用,就是幾千人,一天也有300多號人的賬務需要處理。一個一個的轉賬,感覺太不可思議了。經過改良由於與銀行直接對接的成本比較高,就決定使用支付寶的單筆轉賬功能。
支付寶的集都不用多說了,官方的文件比較詳細:
下面就談一談如何整合到商城後臺中通過一個個稽核按鈕通過,直接轉賬到對方的賬戶。省了很多的麻煩。
在稽核的按鈕控制程式碼中,新增如下程式碼,並且取到相應的值:
AlipayConfig.appid //支付寶APPID;
// 支付寶的公鑰,無需修改該值
AlipayConfig. public_key:
// 商戶的私鑰
AlipayConfig.private_key:
初始化:AlipayClient
AlipayFundTransToaccountTransferRequest 轉賬api
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.serverUrl, AlipayConfig.app_id, AlipayConfig.private_key, "JSON", "utf-8", AlipayConfig.public_key); AlipayFundTransToaccountTransferRequest request1 = new AlipayFundTransToaccountTransferRequest(); JsonObject object=new JsonObject(); object.addProperty("out_biz_no", withdrawId+DateUtils.currentDatetime()); object.addProperty("payee_type", "ALIPAY_LOGONID"); object.addProperty("payee_account", "賬戶"); object.addProperty("amount", 0.1); object.addProperty("payer_show_name", "轉賬公司的名稱"); object.addProperty("payee_real_name", "實名"); object.addProperty("remark", ""); request1.setBizContent(object.toString()); AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request1); String string = response.getBody().toString(); if(response.isSuccess()){ System.out.println("呼叫成功"); } else { System.out.println("呼叫失敗"+string); formMap.put("withdraw_id", withdrawId); formMap.put("examine_state", 3); formMap.put("examine_season", examineSeason); formMap.put("update_time", DateUtils.currentDatetime()); formMap.put("update_person", Common.findUserSessionId()); formMap.update(); returnMoney(withdrawId); //退款至錢包 }
在這裡需要注意的是,如果實名和支付寶賬號不一致,會出現40004:
如果出現40006,是你沒有申請單筆轉賬的許可權:
如下圖:簽約申請即可