700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 支付宝单笔转账到支付宝账户(用于分成或者退款)

支付宝单笔转账到支付宝账户(用于分成或者退款)

时间:2022-10-17 08:49:14

相关推荐

支付宝单笔转账到支付宝账户(用于分成或者退款)

超快速接入

支付宝官方文档直接上代码SDKAlipayUtils

支付宝官方文档

转账到支付宝用户快速接入

单笔转账到支付宝账户接入助手

直接上代码

SDK

<!-- /artifact/com.alipay.sdk/alipay-easysdk --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-easysdk</artifactId><version>2.2.0</version></dependency>

AlipayUtils

package cn.country.cunyue.app.application.utils;import com.alibaba.fastjson.JSON;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 java.math.BigDecimal;import java.util.HashMap;import java.util.Map;/*** 支付宝工具类** @author: joker* @date: -3-25 14:28:40*/public class AlipayUtils {// APPID 即创建应用后生成,详情见创建应用并获取 APPIDprivate static final String APP_ID = "appid";// 商户自己保留的私钥(由支付宝开放平台开发助手生成)private static final String APP_PRIVATE_KEY = "商户自己保留的私钥(由支付宝开放平台开发助手生成)";// 请求和签名使用的字符编码格式,支持 GBK和 UTF-8private static final String CHARSET = "utf-8";// 应用公钥证书路径(app_cert_path 文件绝对路径)从放平台-应用信息-接口加签方式-应用公钥信息private static final String APP_CERT_PATH = "从放平台-应用信息-接口加签方式-应用公钥信息";// 从开放平台-应用信息-接口加签方式-支付宝公钥证书private static final String ALIPAY_CERT_PATH = "从开放平台-应用信息-接口加签方式-支付宝公钥证书";// 从开放平台-应用信息-接口加签方式-支付宝根证书private static final String ALIPAY_ROOT_CERT_PATH = "从开放平台-应用信息-接口加签方式-支付宝根证书";/*** 单笔转账至支付宝账户** @param outBizNo 商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。* @param transAmount 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]* @param orderTitle 转账业务的标题,用于在支付宝用户的账单里显示。* @param identity 参与方的标识ID,比如支付宝用户UID。* @param name 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。* @param remark业务备注*/public static Map<String, Object> callTransfer(String outBizNo, BigDecimal transAmount, String orderTitle, String identity, String name, String remark) throws AlipayApiException {Map<String, Object> map = new HashMap<>();CertAlipayRequest certAlipayRequest = new CertAlipayRequest();// gateway:支付宝网关(固定)/gateway.docertAlipayRequest.setServerUrl("/gateway.do");certAlipayRequest.setAppId(APP_ID);certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);// 参数返回格式,只支持 json 格式certAlipayRequest.setFormat("json");certAlipayRequest.setCharset(CHARSET);// 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。certAlipayRequest.setSignType("RSA2");certAlipayRequest.setCertPath(APP_CERT_PATH);certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);//单笔转账DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);//实例化客户端AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();Map<String, Object> transfer = new HashMap<>();transfer.put("out_biz_no", outBizNo);transfer.put("trans_amount", transAmount);// 销售产品码,单笔无密转账固定为TRANS_ACCOUNT_NO_PWDtransfer.put("product_code", "TRANS_ACCOUNT_NO_PWD");// 业务场景,单笔无密转账固定为DIRECT_TRANSFERtransfer.put("biz_scene", "DIRECT_TRANSFER");transfer.put("order_title", orderTitle);// 收款方信息Map<String, Object> payeeInfo = new HashMap<>();payeeInfo.put("identity", identity);// 参与方的标识类型,目前支持如下枚举:1、ALIPAY_USER_ID 支付宝的会员ID;2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式payeeInfo.put("identity_type", "ALIPAY_LOGON_ID");payeeInfo.put("name", name);transfer.put("payee_info", payeeInfo);transfer.put("remark", remark);String string = JSON.toJSONString(transfer);request.setBizContent(string);AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);if (response.isSuccess()) {if ("10000 ".equals(response.getCode())) {map.put("code", 10000);map.put("msg", "提现成功!");return map;} else if ("40004 ".equals(response.getCode()) && ("SYSTEM_ERROR".equals(response.getSubCode()) || "UNKNOWN_ERROR".equals(response.getSubCode()) || "unknown-sub-code".equals(response.getSubCode()))) {map.put("code", 40004);map.put("msg", "提现失败!");return map;} else if (!"10000 ".equals(response.getCode()) && "ORDER_NOT_EXIST".equals(response.getSubCode())) {map.put("code", 40004);map.put("msg", "提现失败!");return map;} else {map.put("code", 20000);map.put("msg", "系统繁忙!");return map;}} else {map.put("code", 500);map.put("msg", "调用失败!");return map;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。