zoukankan      html  css  js  c++  java
  • 支付宝-单笔转账接口

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

    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     }

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

  • 相关阅读:
    OS模块
    利用一个random模块生成一个随机验证码功能
    random模块
    模块2
    模块module
    Java笔记汇总
    学习路上——技术书籍摸爬滚打
    web前端知识汇总——持续更新
    Python之路——进入Python学习
    Python细节备忘——时常拾遗以及关键点
  • 原文地址:https://www.cnblogs.com/AlbertSmith/p/13444674.html
Copyright © 2011-2022 走看看