支付宝支付-提现到个人支付宝

简介: 提现到个人支付宝官方的名称是单笔转账到支付宝账户1、创建应用并获取APPID如果没有在开发平台创建应用就得创建一个《开放平台应用创建指南》 如果之前有创建过应用那么就可以直接添加...

提现到个人支付宝官方的名称是单笔转账到支付宝账户

1、创建应用并获取APPID

如果没有在开发平台创建应用就得创建一个《开放平台应用创建指南》
如果之前有创建过应用那么就可以直接添加功能

添加单笔转账到支付宝账户

如果只是测试不上线可以跳过上面的步骤,直接使用沙盒环境测试

2、配置密钥

可以参考《配置应用环境》

生成RSA密钥

!配置密钥

3、下载服务端SDK

下载开放平台服务端SDK

4、使用服务端SDK

4.1 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

参数说明可以参考关键参数说明

4.2 接口调用

调用流程

说明:

1、如果商户重复请求转账,支付宝会幂等返回成功结果,商户必须对重复转账的业务做好幂等处理;如果不判断,存在潜在的风险,商户自行承担因此而产生的所有损失。

2、如果调用alipay.fund.trans.toaccount.transfer掉单时,或返回结果code=20000时,或返回结果code=40004,sub_code= SYSTEM_ERROR时,请调用alipay.fund.trans.order.query发起查询,如果未查询到结果,请保持原请求不变再次请求alipay.fund.trans.toaccount.transfer接口。

3、商户处理转账结果时,对于错误码的处理,只能使用sub_code作为后续处理的判断依据,不可使用sub_msg作为后续处理的判断依据。

4.3 SDK的调用

主要涉及到两个接口

4.4 单笔转账到支付宝账户接口alipay.fund.trans.toaccount.transfer 封装

直接调用转账接口如果返回不是Success 就调用转账查询接口

/**
     * 单笔转账到支付宝账户
     * https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.54Ty29&treeId=193&articleId=106236&docType=1
     * @param content
     * @return
     * @throws AlipayApiException
     */
    public static boolean transfer(AlipayFundTransToaccountTransferModel model) throws AlipayApiException{
        AlipayFundTransToaccountTransferResponse response = transferToResponse(model);
        String result = response.getBody();
        log.info("transfer result>"+result);
        System.out.println("transfer result>"+result);
        if (response.isSuccess()) {
            return true;
        } else {
            //调用查询接口查询数据
            JSONObject jsonObject = JSONObject.parseObject(result);
            String out_biz_no = jsonObject.getJSONObject("alipay_fund_trans_toaccount_transfer_response").getString("out_biz_no");
            AlipayFundTransOrderQueryModel queryModel = new AlipayFundTransOrderQueryModel();
            model.setOutBizNo(out_biz_no);
            boolean isSuccess = transferQuery(queryModel);
            if (isSuccess) {
                return true;
            }
        }
        return false;
    }

    public static AlipayFundTransToaccountTransferResponse transferToResponse(AlipayFundTransToaccountTransferModel model) throws AlipayApiException{
        AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
        request.setBizModel(model);
        return alipayClient.execute(request);
    }
4.5 查询转账订单接口alipay.fund.trans.order.query 封装
/**
     * 转账查询接口
     * @param content
     * @return
     * @throws AlipayApiException
     */
    public static boolean transferQuery(AlipayFundTransOrderQueryModel model) throws AlipayApiException{
        AlipayFundTransOrderQueryResponse response = transferQueryToResponse(model);
        log.info("transferQuery result>"+response.getBody());
        System.out.println("transferQuery result>"+response.getBody());
        if(response.isSuccess()){
            return true;
        }
        return false;
    }
    public static AlipayFundTransOrderQueryResponse transferQueryToResponse(AlipayFundTransOrderQueryModel model) throws AlipayApiException{
        AlipayFundTransOrderQueryRequest request = new AlipayFundTransOrderQueryRequest();
        request.setBizModel(model);
        return alipayClient.execute(request);
    }

5、 接口测试

/**
     * 单笔转账到支付宝账户
     * https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.54Ty29&treeId=193&articleId=106236&docType=1
     */
    public void transfer() {
        boolean isSuccess = false;
        String total_amount = "100";
        AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
        model.setOutBizNo(StringUtils.getOutTradeNo());//生成订单号
        model.setPayeeType("ALIPAY_LOGONID");//固定值
        model.setPayeeAccount("abpkvd0206@sandbox.com");//转账收款账户
        model.setAmount(total_amount);
        model.setPayerShowName("测试退款");
        model.setPayerRealName("沙箱环境");//账户真实名称
        model.setRemark("javen测试单笔转账到支付宝");

        try {
            isSuccess = AliPayApi.transfer(model);
        } catch (Exception e) {
            e.printStackTrace();
        }
        renderJson(isSuccess);
    }

故意把账户真实名称写错

{
  "alipay_fund_trans_toaccount_transfer_response": {
    "code": "40004",
    "msg": "Business Failed",
    "sub_code": "PAYER_USER_INFO_ERROR",
    "sub_msg": "付款用户姓名或其它信息不一致",
    "out_biz_no": "051023044814944"
  },
  "sign": "Zbm9lI9GbTlLbYsPQoJhd5y7+oevOInPFoKlRWp2064VUPZYUGBJRiM/8Ip8Vfz4MDhu+0Uc3gEzvoXk1O6eVj7bAPjGLc5cZI3gQNmbogTxeK/4eGgIjxJBKK46r6rzKgK2/e7YEBmExi6hACbo3inBqX0OnaIxIbedZnYY2qrkNdhIjiD1G/EWJNH846IEwhwLkihV7vVKXhIgfmfKmGu5jE7aNddwxKhAK8fAzTR7JOs8p/ZOcLD9/RHfUP1ro4HoNlUOrFUZfhxRuUEFwLxvcJon0HkcO6dnjNnXQx3jh/Ne3632SpWca1pZczervU3/z9/C0LVflQWna42t9g=="
}

正确返回结果


{
  "alipay_fund_trans_toaccount_transfer_response": {
    "code": "10000",
    "msg": "Success",
    "order_id": "20170510110070001500460000004431",
    "out_biz_no": "051023003214944",
    "pay_date": "2017-05-10 23:00:30"
  },
  "sign": "hedaOEcrS8CwzcLNFAQhLWJnmevaA4a+SsNuzuuyBHABUjJ+ZvagMoS1/eUpRIHfwXVOLxGVjCCtJzi4Irclqu2Roz9aHo8ROkNKFKbw66lcT2dOo9AWCYw8UVhQDUjjSZ/d+lu9nnpHPf3ZPPdFHvziBo6ghZF0DRiIX/9ZVx7uH7grFJb8SRbCbcF5C7eouJU8Aw9sMdu/XjREdlW7pLvjeinzouOLbIpICRP33JtGC/KhgdQltDzlXHtVgi9xWRJVXJVp7+jtDRbRP+V+ImY9NqYKtpfxtTBZZ1bW6nOxJaMV7ePgC/6GpDIyWjg+LdHQ09eeBtTy4XCOxtGe1g=="
}

推荐阅读:

微信、支付宝App支付-JPay0.0.2发布
支付宝支付-刷卡支付(条码支付)
支付宝支付-扫码支付
一张二维码集成微信、支付宝支付
支付宝Wap支付你了解多少?
Android版-支付宝APP支付

目录
相关文章
|
XML 移动开发 API
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
3402 1
|
6月前
|
消息中间件 Java 测试技术
支付宝支付
支付宝支付
163 1
|
Java 数据安全/隐私保护
支付宝支付功能使用
支付宝支付功能使用
|
前端开发 区块链 Python
从 0 到 1 看支付
人类社会自从有了分工,就有了交换,而有了交换,也就有了支付,交换可以说是支付最古老的表现形态
253 0
从 0 到 1 看支付
|
机器学习/深度学习
关于支付宝/微信免签实现个人支付
最近一直在了解关于个人支付的问题。由于之前一直想实现个人支付,但是目前微信和支付宝的支付接口都需要企业或个体户资质,导致没办法实现,无奈只能走向这个道路。 说是免签,实际上就是拿到收款金额来做些事情。
关于支付宝/微信免签实现个人支付
|
小程序 vr&ar 数据安全/隐私保护
支付宝败局
2017年春节,红极一时的“红包大战”,没有了往日喧嚣。平静水面,却是潜流汹涌,除夕夜,腾讯诞生了一个新的世界纪录:移动支付峰值达到每秒20.8万笔,微信加QQ合计支付笔数32.2亿笔。
311 0
|
安全
大话支付
做了半年的支付产品经理,希望通过幽默、白话的方式,对国内线下支付、线上支付的发展有一个简单的概括。有不准确之处,请大家批评指正。
2049 0
|
JavaScript Java 开发工具
【支付宝支付】手机网页内 支付宝支付实现过程
支付宝支付,相比较微信支付,封装了提供给开发者使用的接口,开发者可以在蚂蚁金服开放平台先把开发DEMO下载下来 手机网站内支付    下载地址:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.tFuJYY&treeId=54&articleId=106682&docType=1   在下载的DEMO中,可以找到需要调用的支付宝封装的架包 请自行引入到自己的项目中。
2929 0
|
Web App开发 移动开发 前端开发
微信H5支付
本篇文件来聊聊微信服务商模式以及商户模式下微信H5支付 先说一个事情。8月1号开始微信公众平台支付的开发配置页面迁移至商户平台 详细说明参考这个或者看下面的截图 官方文档 普通商户版-微信H5支付 服务商版-微信H5支付 1、申请开通微信H5支付 服务商模式下点击申请开通会立即开通,邀请子商户时需要填写子商户的信息。
4458 0