前言:支付宝的这个接口有什么用呢?主要是方便支付宝商家转账给其他用户,因为都是支付宝内部自己数据库转来转去,所以现在都是免费的,不用手续费。这样对商家来说省钱又便捷。
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 }
结束语:有什么问题可以给我留言。