.NET开发支付宝沙箱支付

以下是支付宝沙箱的环境支付功能的效果图
在这里插入图片描述在这里插入图片描述

新建一个MVC项目,代码结构如下:

第一步:新建项目

在这里插入图片描述
注意红框部分我们需要到支付宝开放平台下载的SDK,下载好后导入项目就可以了。这样也完成了开端。sdk下载地址https://opendocs.alipay.com/open/270/106291
在这里插入图片描述
在这里插入图片描述

第二步:View界面的代码

这是一个完整的前台页面

<h1>电脑扫码支付</h1>
<div>
    <table style="border:1px solid groove red">
        <tr style="border:1px solid groove red">
            <td>订单名称:</td>
            <td><input type="text" width="200" id="orderName", value=""></td>
        </tr>
        <tr style="border:1px solid groove red">
            <td>付款金额:</td>
            <td><input type="text" width="200" id="count" value=""></td>
        </tr>
        <tr style="border:1px solid groove red">
            <td>商品描述:</td>
            <td><input type="text" width="200" id="goodsMs" value=""></td>
        </tr>
        <tr style="border:1px solid groove red">
            <td colspan="2"><input type="button" width="500" id="btnPay" value="付款"></td>
        </tr>
     
    </table>
</div>
@section Scripts
    {
    <script type="text/javascript">
        $().ready(function () {
            $("#btnPay").click(function () {
                var orderName = $("#orderName").val();
                var count = $("#count").val();
                var goodsMs = $("#goodsMs").val();
               
                var dataObj = {
                    "OrderName": orderName,
                    "Count": count,
                    "GoodsMs": goodsMs
                };
                console.log(dataObj)
                $.ajax({
                    cache: false,
                    type: "Post",
                    data: { "Order": dataObj},
                    url: "/Home/index",
                    success: function (data)
                    {
                         //跳转支付宝沙箱扫码的页面
                        window.location.replace(data.pay_url);
                    },
                    error: function (data)
                    {
                        console.log(data)
                        alert('失败!');
                    }

                })
            })
        });
    </script>
}

我这里使用了模型绑定,所以要创建一个商品订单类,

    public class Order
    {
        //商品描述
        public  string GoodsMs { get;  set; }
        //商品名称
        public  string OrderName { get;  set; }
        //商品价格
        public  string Count { get;  set; }
        //订单的编号
        public  string OrderNo { get;  set; } 
    }

Controller中新建一个Action,这个Action中就是调用SDK请求支付宝沙箱环境。这里我目前只研究两个请求方式:1,网站直接请求支付宝支付网站;2.请求支付宝二维码。

创建Action之前,我们需要做些配置就是我在准备篇中写的那些重要的参数。

   //沙箱环境,请求支付链接的地址           
            const string URL ="https://openapi.alipaydev.com/gateway.do";  
            //支付宝正式环境 
            //https://openapi.alipaydev.com/gateway.do   
            //APPID即创建应用后生成,沙箱环境中的AppId
            const string APPID = "*****";
            //这里是我们之前用秘钥工具生成的商户私钥
            const string APP_PRIVATE_KEY = "****";
            //参数返回格式,只支持json
            const string FORMAT = "json";
            //支持GBK和UTF-8
            const string CHARSET = "UTF-8";
            //支付宝公钥
            const string ALIPAY_PUBLIC_KEY =*****";

我们的Controller中的Action代码完成。这只是简单的逻辑,代码中主要注意的几个地方,都已经有解释,如果正式开发需要根据自己实际情况处理。

      [HttpPost]
        public ActionResult index(Order order)
        {
            IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, FORMAT, "2.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:
            AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类,请求返回二维码
            AlipayTradePagePayRequest requestPagePay = new AlipayTradePagePayRequest();//请求返回支付宝支付网页
            AlipayTradePagePayModel model = new AlipayTradePagePayModel();
            //主要注意的是这个地方的值
            model.Body = order.GoodsMs;
            model.Subject = order.OrderName;
            model.TotalAmount = order.Count;
            model.OutTradeNo = DateTime.Now.ToString("yyyyMMddHHmmss"); ;//订单号我们是直接用日期产生的
            model.StoreId = "William001";
            model.ProductCode = "FAST_INSTANT_TRADE_PAY";
            requestPagePay.SetBizModel(model);
            //这是要注意的,支付后就要通过他完成回调,这里填写你要跳转页面的地址
            requestPagePay.SetReturnUrl("http://47.106.255.80:8080/Snail/#/OrderDetailss"); 
            var response = client.SdkExecute(requestPagePay);//Execute(request);
            if (!response.IsError)
            {
                var res = new
                {
                    success = true,
                    out_trade_no = response.OutTradeNo,
                   // qr_code = response.QrCode,    //二维码字符串
                    pay_url = URL + "?" + response.Body
                };
                return Json(res);
            }
            else
            {
                var res = new
                {
                    success = false,
                };
                return Json(res);
            }
            
        }

几点注意的情况:

1.AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类,请求返回二维码

AlipayTradePagePayRequest requestPagePay = new AlipayTradePagePayRequest();//请求返回支付宝支付网页

var response = client.SdkExecute(requestPagePay);//Execute(request);

2.你在沙箱环境中配置商户公钥一定要和你代码的私钥配对,否则无法完成支付请求。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值