1. 程式人生 > >商城轉賬到賣家賬戶的支付寶方案:支付寶單筆轉賬

商城轉賬到賣家賬戶的支付寶方案:支付寶單筆轉賬

    最近在做一個電子商務的專案,剛接手這個專案時發現好多問題,就拿轉賬來說,後臺沒有直接轉賬到商家賬戶,需要到銀行櫃檯轉賬,感覺這樣的設計太失敗了,不說幾萬人用,就是幾千人,一天也有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,是你沒有申請單筆轉賬的許可權:

如下圖:簽約申請即可