package com.ks.app.utils.pay; import com.alipay.api.AlipayApiException; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayFundTransUniTransferRequest; import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.ks.app.utils.Constant; import net.sf.json.JSONObject; import org.yeshi.utils.exception.AlipayTransferException; import java.math.BigDecimal; public class AlipayUtil { private static DefaultAlipayClient alipayClient = null; static { String privateKey = Constant.alipayConfig.getPrivateKey(); CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); certAlipayRequest.setAppId(Constant.alipayConfig.getAppId()); certAlipayRequest.setPrivateKey(privateKey); certAlipayRequest.setFormat("json"); certAlipayRequest.setCharset("GBK"); certAlipayRequest.setSignType("RSA2"); certAlipayRequest.setCertPath( AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAppCertPath()).getPath()); certAlipayRequest.setAlipayPublicCertPath( AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAlipayCertPath()).getPath()); certAlipayRequest.setRootCertPath( AlipayUtil.class.getClassLoader().getResource(Constant.alipayConfig.getAlipayRootCertPath()).getPath()); try { alipayClient = new DefaultAlipayClient(certAlipayRequest); } catch (AlipayApiException e) { e.printStackTrace(); } } public static AlipayFundTransUniTransferResponse transfer(String outBizNo, String account, String name, BigDecimal money, String orderTitle, String mark) throws AlipayApiException, NumberFormatException, AlipayTransferException { AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); JSONObject json = new JSONObject(); json.put("out_biz_no", outBizNo); json.put("trans_amount", money.toString()); json.put("product_code", "TRANS_ACCOUNT_NO_PWD"); json.put("order_title", orderTitle); JSONObject payee_info = new JSONObject(); payee_info.put("identity", account); payee_info.put("identity_type", "ALIPAY_LOGON_ID"); payee_info.put("name", name); json.put("payee_info", payee_info); json.put("remark", mark); json.put("biz_scene", "DIRECT_TRANSFER"); request.setBizContent(json.toString()); AlipayFundTransUniTransferResponse response = null; response = alipayClient.certificateExecute(request); // 成功转账 if (response != null && response.isSuccess() && "10000".equals(response.getCode())) { return response; } else// 转账失败 { throw new AlipayTransferException(Integer.parseInt(response.getCode()), response.getSubCode(), response.getSubMsg()); } } public static AlipayFundTransUniTransferResponse transferNoThrowException(String outBizNo, String account, String name, BigDecimal money, String orderTitle, String mark) throws AlipayApiException{ AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); JSONObject json = new JSONObject(); json.put("out_biz_no", outBizNo); json.put("trans_amount", money.toString()); json.put("product_code", "TRANS_ACCOUNT_NO_PWD"); json.put("order_title", orderTitle); JSONObject payee_info = new JSONObject(); payee_info.put("identity", account); payee_info.put("identity_type", "ALIPAY_LOGON_ID"); payee_info.put("name", name); json.put("payee_info", payee_info); json.put("remark", mark); json.put("biz_scene", "DIRECT_TRANSFER"); request.setBizContent(json.toString()); AlipayFundTransUniTransferResponse response = null; response = alipayClient.certificateExecute(request); return response; } }