最近在做一个电子商务的项目,刚接手这个项目时发现好多问题,就拿转账来说,后台没有直接转账到商家账户,需要到银行柜台转账,感觉这样的设计太失败了,不说几万人用,就是几千人,一天也有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); //退款至钱包
}
如果出现40006,是你没有申请单笔转账的权限:
如下图:签约申请即可