阿里支付接口 转账 java 代码

阿里支付接口的验证机制和普通接口不同,采用的是证书验证,使用支付宝开放平台助手 ---> 生成密钥获取csr文件

公司注意些支付对应的支付宝程序所在的公司的名称。

得到生成好的3个文件

放入对应的文件夹

private String APP_ID = "";

//application private key
private String APP_PRIVATE_KEY = "";
//charset
private String CHARSET = "utf-8";

//sign type
private String SIGN_TYPE = "RSA2";
/**
 * 支付相关接口采用csr方式验证
 *
 * @return
 */
private AlipayClient getClientInstanceByKey() throws AlipayApiException {

    AlipayClient aplipayClient = aliMap.get("client");
    if (aplipayClient == null) {

        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        //设置网关地址
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        //设置应用Id
        certAlipayRequest.setAppId(APP_ID);
        //设置应用私钥
        certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);
        //设置请求格式,固定值json
        certAlipayRequest.setFormat("json");
        //设置字符集
        certAlipayRequest.setCharset(CHARSET);
        //设置签名类型
        certAlipayRequest.setSignType(SIGN_TYPE);
        //设置应用公钥证书路径
        certAlipayRequest.setCertPath("/home/crt/appCertPublicKey_xxx.crt");
        //设置支付宝公钥证书路径
        certAlipayRequest.setAlipayPublicCertPath("/home/crt/alipayCertPublicKey_RSA2.crt");
        //设置支付宝根证书路径
        certAlipayRequest.setRootCertPath("/home/crt/alipayRootCert.crt");

        aplipayClient = new DefaultAlipayClient(certAlipayRequest);
        aliMap.put("client", aplipayClient);
    }
    return aplipayClient;
}
/**
 * 支付宝向用户转账
 *
 * @param bizNo   逻辑单号
 * @param amount  转账金额 单位元
 * @param account 支付宝账号
 * @return
 */
public RestResult<Integer> alipay2User(String bizNo, String amount, String account) {
    // 设置请求参数
    AlipayFundTransUniTransferRequest alipayRequest = new AlipayFundTransUniTransferRequest();

    Map<String, String> map = new HashMap<>();
    map.put("out_biz_no", bizNo);
    map.put("trans_amount", amount);
    map.put("product_code", "TRANS_ACCOUNT_NO_PWD");
    map.put("biz_scene", "DIRECT_TRANSFER");
    map.put("order_title", "");
    map.put("remark", ""+amount);
    // 转账账户
    Map<String, String> map2 = new HashMap<>();
    map2.put("identity", account);
    map2.put("identity_type", "ALIPAY_USER_ID");
    map2.put("name", "");

    map.put("payee_info", JSONObject.toJSONString(map2));
    // 转成json格式放入
    String json = JSONObject.toJSONString(map);
    alipayRequest.setBizContent(json);
    AlipayFundTransUniTransferResponse response;
    try {
        response = getClientInstanceByKey().certificateExecute(alipayRequest);
        System.out.println(JSON.toJSONString(response));
        if (response.isSuccess()) {
            return RestResult.wrapSuccessResponse();
        } else {
            log.info("支付失败,bizNo:"+bizNo+",原因:"+response.getBody());
            return RestResult.wrapErrorResponse("支付失败");
        }
    } catch (Exception e) {
        e.printStackTrace();
        log.info("支付失败,bizNo:"+bizNo+",异常原因:"+e);
        return RestResult.wrapErrorResponse("支付失败");
    }
}

关键就是getClientInstanceByKey().certificateExecute(alipayRequest); ,支付相关接口采用证书验证方式才能通过,支付宝转账的demo有点坑

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支付接口即阿里巴巴集团旗下的支付平台——支付宝所提供的一个应用编程接口。ASP是一种常用的服务器端脚本语言,可用于实现网站开发中的交互功能。支付宝ASP接口源码是指使用ASP语言编写的与支付接口进行交互的源代码支付宝ASP接口源码主要包括以下内容: 1. 签名与验签的功能:支付接口需要对请求和返回的数据进行签名以确保数据的完整性和安全性,源码中会包含签名和验签的函数或类。 2. 请求参数的构建和解析:源码中会提供相应的函数或类,用于构建包含业务参数的请求数据,并能够解析支付宝返回的结果。 3. 支付接口的调用:源码会封装调用支付接口的方法,包括支付、退款、查询交易等功能的调用。 4. 异步通知的处理:支付支付成功或其他业务完成后,会将结果以异步通知的方式发送到商户网站,源码中会提供处理异步通知的函数或类。 5. 页面跳转的处理:支付支付过程中,用户可能需要跳转到支付宝的页面进行授权或支付操作,源码中会提供相应的跳转函数或类。 使用支付宝ASP接口源码,开发者可以根据自身需求进行二次开发,定制符合自己网站需求的支付集成方案。同时,源码中已经进行了安全性处理和逻辑封装,开发者只需要根据源码提供的接口和参数进行调用,就能够实现支付支付功能的快速集成。 总之,支付宝ASP接口源码为开发者提供了方便快捷的支付支付集成解决方案,使网站可以与支付宝进行交互,实现支付、退款等功能的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值