Java调用支付宝

对支付宝"快速接入"文档进行解析

请一定要认真看支付宝的文档,该博客仅仅是对人家文档进行补充说明
快速接入url: https://opendocs.alipay.com/open/309/106236
在这里插入图片描述
我们直接来到文档 第三步:搭建和配置开发环境

进入编写代码前我们需要准备好相对应的appid,秘钥 和 证书
1.appid //APPID 即创建应用后生成
2.app_privateKey //开发者应用私钥,由开发者自己生成
3.app_cert_path //开发者应用公钥证书路径
4.alipay_cert_path //支付宝公钥证书文件路径
5.alipay_root_cert_path //支付宝CA根证书文件路径

点击设置 如下图
在这里插入图片描述
我用的是‘公钥证书‘,这里需要上传.csr文件,往下看
在这里插入图片描述

下载密钥生成工具生成

https://opendocs.alipay.com/support/01rauw

安装好,打开
在这里插入图片描述
上图第2步注意事项,此处 组织/公司填写的是 dvjxxxxx.com
上图第2步,点击 生成CSR文件 会生成 会生成三个文件
xxx.csr , xxx_公钥.txt , xxx.私钥.txt
此时我们就得到:app_privateKey // xxx.私钥.txt
在这里插入图片描述
此操作成功后,直接下载 这3个文件
.app_cert_path //开发者应用公钥证书路径
.alipay_cert_path //支付宝公钥证书文件路径
.alipay_root_cert_path //支付宝CA根证书文件路径
在这里插入图片描述

========================================================

开始编写代码

bcprov-jdk15on-1.62.jar
fastjson-1.2.50.jar
commons-logging-1.1.1.jar
这里这里的三个jar包可以用alipay-sdk-java-4.15.0.ALL.jar来代替

		<dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.15.0.ALL</version>
        </dependency>

支付宝文档此处有一坑,保证有效json格式,多了两个逗号,后续文档可能会更新
在这里插入图片描述

"sub_msg":"ISV权限不足,建议在开发者中心检查对应功能是否已经添加

我这边是调用的单笔转账到支付宝账户产品,您在应用中挂载下转账到支付宝账户的功能包
在这里插入图片描述
可到此解决

https://open.alipay.com/platform/developerIndex.htm

在这里插入图片描述

创建一个Demo.java




import com.alipay.api.*;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;


public class Demo {


    //支付宝网关地址(固定)openapi.alipaydev.com/gateway.do
    String gateway = "https://openapi.alipay.com/gateway.do";
    //APPID 即创建应用后生成
    String app_id = "2021002xxx";
    //开发者应用私钥,由开发者自己生成
    String app_privateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCq03OtoNKEn6zmedAycyHwNsa2Pw+/BdvF759dpo28nldFltJPdrRego/bDFyHbcY1m4/91Ny1Dd9Q6H6DC92YqtSn4sqerk6ap4x/bVN4uUhjOeDh1MqHGLn2eSS1OAPVF5BucslCBZozf+I4B+x/Iw1+8ugAuBzuqu7EQDzRhS9P415tRZcclHghCTi8hIn2JQED+ZVeDnCBSVcZr4JoO8+uWcdALB7bHUbdKKXtmtUmciynZCoSCvahmyFYjnwYYw8l6YKz93MmGPel5X/v1fLhzl9cBQ1Ni/EBu0X7EA0LggXUz6RHRzSzIjgsp9wywv05hhMubHqx1D5ZfTRtAgMBAAECggEBAI3wqwLPSX0HjEvpVZRF1CJb8VsHJRdNT+K1C49uUAE09EEPY+rBMHgDNnMFXxxxxxxxxxxxxxxxx==";
    //参数返回格式,只支持 json 格式 json(固定)
    String format = "json";
    //请求和签名使用的字符编码格式,支持 GBK和 UTF-8
    String charset = "UTF-8";
    //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2
    String sign_type = "RSA2";
    //开发者应用公钥证书路径
    String app_cert_path = "C:\\alpaykey\\appCertPublicKey_20210021xxxxx.crt";
    //支付宝公钥证书文件路径
    String alipay_cert_path = "C:\\alpaykey\\alipayCertPublicKey_RSA2.crt";
    //支付宝CA根证书文件路径
    String alipay_root_cert_path = "C:\\alpaykey\\alipayRootCert.crt";


    public void TestAlpay() {
        try {
            CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
            certAlipayRequest.setServerUrl(gateway);
            certAlipayRequest.setAppId(app_id);
            certAlipayRequest.setPrivateKey(app_privateKey);
            certAlipayRequest.setFormat(format);
            certAlipayRequest.setCharset(charset);
            certAlipayRequest.setSignType(sign_type);
            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();
            request.setBizContent("{" +
                    "\"out_biz_no\":\"20210xxxxx\"," +
                    "\"trans_amount\":0.01," +
                    "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
                    "\"biz_scene\":\"DIRECT_TRANSFER\"," +
                    "\"order_title\":\"201905代发\"," +
                    "\"payee_info\":{" +
                    "\"identity\":\"447xxxxxx.com\"," + //支付宝账号
                    "\"identity_type\":\"ALIPAY_LOGON_ID\"," +//参与方的标识类型,目前支持如下枚举:1、ALIPAY_USER_ID 支付宝的会员ID2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式
                    "\"name\":\"赖xx\"" +//支付宝账号绑定人
                    "    }," +
                    "\"remark\":\"201905代发\"," +
                    "\"business_params\":\"{\\\"payer_show_name\\\":\\\"服务代理\\\"}\"" +
                    "  }");
            AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
            if (response.isSuccess()) {
                System.out.println(response.getBody());
                System.out.println(response.getMsg());
                System.out.println("调用成功");
            } else {
                System.out.println(response.getBody());
                System.out.println(response.getMsg());
                System.out.println("调用失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

到此就差不多了,在使用的时候如果还提示各种各样问题,直接找客服(这样是最快的)

此文档仅仅做参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java调用支付宝支付接口,您可以使用支付宝开放平台的即时到账接口。首先,您需要在支付宝开放平台注册并获得相应的API密钥。接下来,您可以使用Spring MVC和MyBatis等框架进行开发。 具体的实现步骤如下: 1. 在您的Spring MVC项目中,使用支付宝开放平台提供的即时到账接口进行支付宝支付的集成。您可以使用支付宝提供的SDK或者API,根据文档中的指引进行配置和调用。 2. 在商品发起购买时,您可以调用支付宝接口,将用户的支付信息发送给支付宝,跳转到支付宝页面进行支付。 3. 支付宝会在用户完成支付后,通过回调通知您的系统支付状态的变更。您可以在接收到支付宝的回调通知后,更新订单状态或进行其他业务处理。 4. 您可以选择将支付功能单独封装为一个项目,然后在其他项目中调用支付接口,也可以将支付功能整合到您的项目中。为了方便维护,您可以将相关的类放到您的项目中,并引入相应的支付宝SDK或jar包。 总体来说,使用Java调用支付宝支付接口可以通过支付宝开放平台的即时到账接口实现,具体的实现步骤根据您的项目架构和需求可能会有所不同。但无论如何,您都需要注册支付宝开放平台账号并获取API密钥,然后根据支付宝提供的文档进行配置和调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值