支付宝-单笔转账接口

前言:支付宝的这个接口有什么用呢?主要是方便支付宝商家转账给其他用户,因为都是支付宝内部自己数据库转来转去,所以现在都是免费的,不用手续费。这样对商家来说省钱又便捷。

1.申请企业商户。

2.签约支付宝单笔转账产品接口。(1)登录alipay.com选择支付宝商家->(2)顶部导航选产品中心->(3)拉到底部找到资金服务->(4)选择转账到支付宝->(5)立即开通->(6)等待官方审核

(1)(2)

(3)(4)

(5)

 3.先看官方接口文档:https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.uni.transfer,我用的是新版的转账支到支付宝账户接口。

 4.申请(1)应用公钥证书,(2)支付宝公钥证书,(3)支付宝根证书。要获取这3个证书先下载个支付宝开放平台开发助手,下载地址https://opendocs.alipay.com/open/291/introduce

 下载完用支付宝商户扫码登录进去。

(1)应用公钥证书获取:如下图(1)红色圈1,2,3,4,5,6步骤选择。红色圈3是因为我用.net core开发。图2的红色圈2一定要选择对了,不然到时候对接会显示RSA私钥有问题。图(1)、图(2)都弄完会生成拓展名为csr文件,点击图(3)的红色圈1上传上去,弹出登录界面和短信验证码界面,验证通过后到如图(4)界面点击红色圈1弹出如图(5)界面。在如图(5)界面上传前面生成的csr文件即可得到:(1)应用公钥证书、(2)支付宝公钥证书、(3)支付宝根证书。

图(1)

图(2)

 图(3)

图(4)

 如图(5)

 5.上对接代码。

 1     public class AlipayResponse
 2     {
 3         /// <summary>
 4         /// 网关返回码,10000代表成功,其他都是失败。API公共错误码对照地址:https://opendocs.alipay.com/open/common/105806
 5         /// </summary>
 6         public string code { get; set; }
 7         /// <summary>
 8         /// 网关返回码描述
 9         /// </summary>
10         public string msg { get; set; }
11         /// <summary>
12         /// 业务返回码
13         /// </summary>
14         public string sub_code { get; set; }
15         /// <summary>
16         /// 业务返回码描述
17         /// </summary>
18         public string sub_msg { get; set; }
19         /// <summary>
20         /// 签名
21         /// </summary>
22         public string sign { get; set; }
23         /// <summary>
24         /// 商户订单号,示例值:201808080001
25         /// </summary>
26         public string out_biz_no { get; set; }
27         /// <summary>
28         /// 支付宝转账订单号,示例值:20190801110070000006380000250621
29         /// </summary>
30         public string order_id { get; set; }
31         /// <summary>
32         /// 支付宝支付资金流水号,示例值:20190801110070001506380000251556
33         /// </summary>
34         public string pay_fund_order_id { get; set; }
35         /// <summary>
36         /// 转账单据状态。
37         /// SUCCESS:成功(对转账到银行卡的单据, 该状态可能变为退票[REFUND] 状态);
38         /// FAIL:失败(具体失败原因请参见error_code以及fail_reason返回值);
39         /// DEALING:处理中;
40         /// REFUND:退票;
41         /// </summary>
42         public string status { get; set; }
43         /// <summary>
44         /// 订单支付时间,格式为yyyy-MM-dd HH:mm:ss,示例值:2019-08-21 00:00:00
45         /// </summary>
46         public string trans_date { get; set; }
47     }
 1     public class PaymentService
 2     {
 3         /// <summary>
 4         /// 单笔转账接口
 5         /// </summary>
 6         /// <param name="out_biz_no">订单号</param>
 7         /// <param name="trans_amount">订单金额</param>
 8         /// <param name="order_title">交易描述</param>
 9         /// <param name="alipay_account">支付账号</param>
10         /// <param name="real_name">支付宝真实姓名</param>
11         /// <param name="remark">描述</param>
12         /// <returns></returns>14         public AlipayResponse Payment(string out_biz_no, decimal trans_amount, string order_title, string alipay_account, string real_name, string remark)
15         {
16             var SIGN_TYPE = "RSA2";//签名方式
17             var CHARSET = "UTF-8";//编码格式
18             var APP_ID = "xxxxxxxxx";//应用appid
19             var PRIVATE_KEY = "xxxxxxxx";//这个是生成csr文件时候一起生成的私钥
20             var ALIPAY_GATEWAY = "https://openapi.alipay.com/gateway.do";//请求网关地址
21             var certParams = new CertParams
22             {
23                 AlipayPublicCertPath = Environment.CurrentDirectory + "\Crt\alipayCertPublicKey_RSA2.crt",//支付宝公钥证书绝对路径
24                 AppCertPath = Environment.CurrentDirectory + "\Crt\appCertPublicKey_2021001173604283.crt",//应用公钥证书绝对路径
25                 RootCertPath = Environment.CurrentDirectory + "\Crt\alipayRootCert.crt"//支付宝根证书
26             };
27             var client = new DefaultAopClient(ALIPAY_GATEWAY, APP_ID, PRIVATE_KEY, "json", "1.0", SIGN_TYPE, CHARSET, "false", certParams);
28             var request = new AlipayFundTransUniTransferRequest
29             {
30                 BizContent = "{" +
31                 //商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一
32                 ""out_biz_no":"" + out_biz_no + ""," +
33                 ""trans_amount":" + trans_amount + "," +
34                 ""product_code":"TRANS_ACCOUNT_NO_PWD"," +
35                 ""biz_scene":"DIRECT_TRANSFER"," +
36                 ""order_title":"" + order_title + ""," +
37                 ""payee_info":{" +
38                 ""identity":"" + alipay_account + ""," +
39                 ""identity_type":"ALIPAY_LOGON_ID"," +
40                 ""name":"" + real_name + """ +
41                 "}," +
42                 ""remark":"" + remark + """ +
43                 "}"
44             };
45 
46             var response = client.CertificateExecute(request);
47             AlipayResponse alipayResponse = new AlipayResponse();
48             if (response.Code == "10000")
49             {
50                 alipayResponse.code = response.Code;//网关返回码
51                 alipayResponse.msg = response.Msg;//网关返回码描述
52                 alipayResponse.sub_code = "";//业务返回码
53                 alipayResponse.sub_msg = "";//业务返回码描述
54                 alipayResponse.out_biz_no = response.OutBizNo;//商户订单号
55                 alipayResponse.order_id = response.OrderId;//支付宝转账订单号
56                 alipayResponse.pay_fund_order_id = response.PayFundOrderId;//支付宝支付资金流水号
57                 alipayResponse.status = response.Status;//转账单据状态
58                 alipayResponse.trans_date = response.TransDate;//订单支付时间
59             }
60             else
61             {
62                 alipayResponse.code = response.Code;
63                 alipayResponse.msg = response.Msg;
64                 alipayResponse.sub_code = response.SubCode;
65                 alipayResponse.sub_msg = response.SubMsg;
66             }
67             return alipayResponse;
68         }
69     }

结束语:有什么问题可以给我留言。

原文地址:https://www.cnblogs.com/AlbertSmith/p/13444674.html