| import com.alipay.api.AlipayApiException; |
| import com.alipay.api.AlipayClient; |
| import com.alipay.api.AlipayConfig; |
| import com.alipay.api.DefaultAlipayClient; |
| import com.alipay.api.domain.AlipayFundTransUniTransferModel; |
| import com.alipay.api.domain.Participant; |
| import com.alipay.api.internal.util.file.FileUtils; |
| import com.alipay.api.request.AlipayFundTransUniTransferRequest; |
| import com.alipay.api.response.AlipayFundTransUniTransferResponse; |
| import lombok.extern.slf4j.Slf4j; |
| import org.springframework.core.io.ClassPathResource; |
| |
| import java.io.*; |
| import java.nio.charset.Charset; |
| import java.nio.charset.StandardCharsets; |
| |
| |
| |
| |
| |
| |
| @Slf4j |
| public class AlipayUtil { |
| |
| private String URL = "https://openapi.alipay.com/gateway.do"; |
| private String APPID = "应用APPID"; |
| private String app_private_key = "certs/appPrivate.txt"; |
| private String CHARSET = "UTF8"; |
| private String FORMAT = "json"; |
| private String SIGN_TYPE = "RSA2"; |
| private String app_cert_path = "certs/appCertPublicKey.crt"; |
| private String alipay_cert_path = "certs/alipayCertPublicKey_RSA2.crt"; |
| private String alipay_root_cert_path = "certs/alipayRootCert.crt"; |
| private AlipayConfig alipayConfig; |
| private static AlipayUtil instance; |
| |
| |
| private AlipayUtil() throws IOException { |
| alipayConfig = new AlipayConfig(); |
| |
| alipayConfig.setServerUrl(URL); |
| |
| alipayConfig.setAppId(APPID); |
| |
| alipayConfig.setPrivateKey(readToString(new ClassPathResource(app_private_key).getInputStream())); |
| |
| |
| alipayConfig.setFormat(FORMAT); |
| |
| alipayConfig.setCharset(CHARSET); |
| |
| alipayConfig.setSignType(SIGN_TYPE); |
| |
| alipayConfig.setAppCertContent(readToString(new ClassPathResource(app_cert_path).getInputStream())); |
| |
| alipayConfig.setAlipayPublicCertContent(readToString(new ClassPathResource(alipay_cert_path).getInputStream())); |
| |
| alipayConfig.setRootCertContent(readToString(new ClassPathResource(alipay_root_cert_path).getInputStream())); |
| } |
| |
| |
| |
| |
| |
| |
| |
| private String readToString(InputStream inputStream) { |
| try { |
| DataInputStream dataInputStream = new DataInputStream(inputStream); |
| ByteArrayOutputStream output = new ByteArrayOutputStream(); |
| byte[] buffer = new byte[1024]; |
| int length; |
| while ((length = dataInputStream.read(buffer)) > 0) { |
| output.write(buffer, 0, length); |
| } |
| return output.toString(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| return null; |
| } |
| |
| public static AlipayUtil getInstance() throws IOException { |
| if (instance == null) { |
| synchronized (AlipayUtil.class) { |
| if (instance == null) { |
| instance = new AlipayUtil(); |
| } |
| } |
| } |
| return instance; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public Result<String> transfer(String bizNo, String amount, String title, String identity, String name) throws AlipayApiException { |
| AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); |
| AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); |
| AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); |
| |
| model.setOutBizNo(bizNo); |
| model.setTransAmount(amount); |
| model.setBizScene("DIRECT_TRANSFER"); |
| model.setProductCode("TRANS_ACCOUNT_NO_PWD"); |
| model.setOrderTitle(title); |
| |
| Participant payeeInfo = new Participant(); |
| payeeInfo.setIdentity(identity); |
| payeeInfo.setIdentityType("ALIPAY_LOGON_ID"); |
| payeeInfo.setName(name); |
| |
| model.setPayeeInfo(payeeInfo); |
| request.setBizModel(model); |
| AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); |
| log.info("转账响应结果:{}", response.getBody()); |
| if (response.isSuccess()) { |
| return Result.OK("转账成功", response.getBody()); |
| } |
| return Result.error("转账失败", response.getBody()); |
| } |
| } |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库