zoukankan      html  css  js  c++  java
  • 支付宝 支付接口

    支付宝有很多种支付产品,比如当面付、APP支付、手机网站支付、电脑网站支付等,本篇文章讲的是电脑网站支付

    1.创建项目

    新建一个ASP.NET Core2.0的MVC项目

     

    2.沙箱环境

    支付宝的支付接口需要商家账户才能使用,那么问题来了,我们开发者练习、测试时怎么办呢

    支付宝为我们提供了蚂蚁沙箱环境,可以协助开发者进行接口功能及主要功能的测试

    沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

    3.生成密钥

    进到开放平台-沙箱环境,会首先看到一个必看部分

    分别是APPID、支付宝网关、密钥,这些都是之后开发时要用到的信息

    (你们的密钥部分和我应该不太一样,因为我的已经设置过了)

    这时你会发现密钥没有啊,那么密钥去哪获得呢

    去下载支付宝官方提供的密钥生成工具

    https://docs.open.alipay.com/291/105971

    下载完成后打开 RSA签名验签工具.bat

    点击 生成密钥 就会获得一个私钥和一个公钥

    这时要注意几点

    1.不是java开发的话,一定不要点Java适用,不然会出问题

    2.私钥和公钥是对应的,如果私钥或公钥其中一个忘了,要重新生成一个,那么记得两个都换

    3.这个公钥并不会在开发时用到,这个公钥是提供给支付宝的,给支付宝后,支付宝会再给你一个公钥,那个才是开发要使用的

    生成公钥私钥后,记下来,然后回到开放平台,在密钥部分,把刚刚生成的公钥填上,然后就会得到一个支付宝公钥

    接下来我们就可以开始开发了

    配置SDK

    新建一个Config类,在里面存储我们的配置

     public class Config
        {
            //应用ID,您的APPID
            public static string AppId = "";
            //支付宝网关
            public static string Gatewayurl = "";
            //商户秘钥,您的原始格式RSA秘钥
            public static string PrivateKey = "";
            //支付宝公钥
            public static string AlipayPublicKey = "";
            //签名方式
            public static string SignType = "RSA2";
            //编码格式
            public static string CharSet = "UTF-8";
    
        }

    这些数据的值,从开放平台都能看到,按照自己的填上

    秘钥是你之前生成的私钥,支付宝公钥是后来在开放平台把商户公钥设置之后,获得的支付宝公钥,别用错了

    添加SDK

    支付宝的SDK其实就是一个类库,直接引用就行了

    Install-Package Alipay.AopSdk.Core

    如果你要看SDK的源码

    源码地址:https://github.com/dotnetcore/Alipay.AopSdk.Core

    支付

    添加一个控制器PayController

    在控制器里写一个 发出支付请求 的方法

         /// <summary>
            /// 发起支付请求
            /// </summary>
            /// <param name="tradeno">外部订单号,商户网站订单系统唯一的订单号</param>
            /// <param name="subject">订单名称</param>
            /// <param name="totalAmout">实付金额</param>
            /// <param name="itemBody">商品描述</param>
            [HttpPost]
            public void PayRequest(OrderModel ordermodel)
            {
                DefaultAopClient client = new DefaultAopClient(Config.Gatewayurl, Config.AppId, Config.PrivateKey, "json", "2.0",
            Config.SignType, Config.AlipayPublicKey, Config.CharSet, false);
    
                // 组装业务参数model
                AlipayTradePagePayModel model = new AlipayTradePagePayModel();
                model.Body = ordermodel.itemBody;
                model.Subject = ordermodel.subject;
                model.TotalAmount = ordermodel.totalAmout;
                model.OutTradeNo = ordermodel.tradeno;
                model.ProductCode = "FAST_INSTANT_TRADE_PAY";
    
                AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
                // 设置同步回调地址
                request.SetReturnUrl("http://localhost:5000/Pay/Callback");
                // 设置异步通知接收地址
                request.SetNotifyUrl("");
                // 将业务model载入到request
                request.SetBizModel(model);
    
                var response = client.SdkExecute(request);
                Console.WriteLine($"订单支付发起成功,订单号:{ordermodel.tradeno}");
                //跳转支付宝支付
                Response.Redirect(Config.Gatewayurl + "?" + response.Body);
            }

    这个方法需要几个参数(外部订单号、订单名称、付款金额、商品描述)

    我们写一个页面,用来填写这些信息,并传给上面的方法

            /// <summary>
            /// 填写支付信息的页面
            /// </summary>
            /// <returns></returns>
            public IActionResult PayInfo()
            {
                return View();
            }    
    <h2>PC网站支付</h2>
    <form action="/Pay/PayRequest" method="post" role="form">
        <div>
            <p>商户订单号:</p>
            <input name="tradeno"  value="" />
        </div>
        <div>
            <p>订单名称:</p>
            <input name="subject" value="一毛钱的py交易" />
        </div>
        <div>
            <p>付款金额:</p>
            <input name="totalAmout" value="0.1" />
        </div>
        <div>
            <p>商品描述:</p>
            <input name="itemBody" value="py交易" />
        </div>
        <input type="submit" value="提交"/>
    </form>

    商户订单号也在开放平台中可以看到,在 选看部分

    填好信息,点击提交

    看到这样的页面就成功了

  • 相关阅读:
    JavaSE:和网络相关的协议
    随机产生四位,任意位或者范围数字方法
    随机产生四位,任意位或者范围数字方法
    如何保留小数精度
    如何保留小数精度
    JDK开发环境搭建及环境变量配置详细教程
    JDK开发环境搭建及环境变量配置详细教程
    排序算法
    html中a标签如何设置行宽高
    MyEclipse10破解详细说明
  • 原文地址:https://www.cnblogs.com/nicopoiduang/p/9076940.html
Copyright © 2011-2022 走看看