C#实现支付宝沙箱支付的项目实践

 更新时间:2022年05月10日 11:44:57   作者:IT_YAO  
本文主要介绍了C#实现支付宝沙箱支付的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一,准备沙箱环境

1,登录支付宝,进入 应用列表界面 https://openhome.alipay.com/dev/workspace

2,如下图选择进入沙箱

在这里插入图片描述

进入如下页面:

在这里插入图片描述

1,这里的APPID很有用
2,在这里只测试网页支付,用系统默认的密钥
3,查看公钥有如下界面:

在这里插入图片描述

需要用到的是应用私钥(非JAVA)和支付宝公钥

二,认识官方提供的Demo示例

1,下载demo示例
进入网页 https://opendocs.alipay.com/open/270/106291

在这里插入图片描述

下载.NET版的demo,如下:

在这里插入图片描述

在这里插入图片描述

App_Code下有Config.cs文件

在这里插入图片描述

关于参数:
1,app_id 就填写沙箱界面的APPID
2,需要将gatewayUrl 改为:https://openapi.alipaydev.com/gateway.do 这才是测试版本
3,商户私钥 复制沙箱界面系统默认密钥的 应用私钥
4,支付宝公钥 复制沙箱界面的支付宝公钥

在这里插入图片描述

  • wappay里是具体的调用API接口
  • wappay是发送调用支付接口
  • close是关闭订单接口
  • query是查询订单接口
  • refund是退款接口

三,编写一个ASP.NET的程序

1,创建ASP.NET web项目
2,解决方案导入Demo示例中的AopSdk模块,如下:

在这里插入图片描述

3,前台代码:

<table>
                <tr>
                    <td>订单名称:</td>
                    <td>
                        <asp:TextBox ID="tbxOrderName" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>订单金额:</td>
                    <td>
                        <asp:TextBox ID="tbxOrderAmount" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>订单描述:</td>
                    <td>
                        <asp:TextBox ID="tbxOrderDesc" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Button ID="btn" runat="server" Text="支付"  OnClick="btn_Click"/>
                    </td>
                </tr>
            </table>

4,后台代码:

// 应用ID,您的APPID           
        public static string app_id = "20210******";
        // 支付宝网关
        public static string gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
        // 商户私钥,您的原始格式RSA私钥
        public static string private_key = "MIIE******";
        // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
        public static string alipay_public_key = "MIIBI******";
        // 签名方式
        public static string sign_type = "RSA2";
        // 编码格式
        public static string charset = "UTF-8";

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btn_Click(object sender, EventArgs e)
        {
            DefaultAopClient client = new DefaultAopClient(gatewayUrl, app_id, private_key, "json", "1.0", sign_type, alipay_public_key, charset, false);

            // 外部订单号,商户网站订单系统中唯一的订单号
            string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");
            // 订单名称
            string subject = this.tbxOrderName.Text;
            // 付款金额
            string total_amout = this.tbxOrderAmount.Text;
            // 商品描述
            string body = this.tbxOrderDesc.Text;
            // 支付中途退出返回商户网站地址
            string quit_url = "https://localhost:44334/PayFailed.aspx?tradeNo=" + out_trade_no;
            // 支付成功返回商户网站页面
            string return_url = "https://localhost:44334/PaySuccess.aspx?tradeNo=" + out_trade_no;
            // 设置支付完成异步通知接收地址
            string notify_url = "https://localhost:44334/Notify.aspx";

            // 组装业务参数model
            AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
            model.Body = body;
            model.Subject = subject;
            model.TotalAmount = total_amout;
            model.OutTradeNo = out_trade_no;
            model.ProductCode = "QUICK_WAP_WAY";
            model.QuitUrl = quit_url;

            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
            // 设置支付完成同步回调地址
            request.SetReturnUrl(return_url);
            // 设置支付完成异步通知接收地址
            request.SetNotifyUrl(notify_url);
            // 将业务model载入到request
            request.SetBizModel(model);

            AlipayTradeWapPayResponse response = null;
            try
            {
                response = client.pageExecute(request, null, "post");
                Response.Write(response.Body);
            }
            catch (Exception exp)
            {
                throw exp;
            }

说明:
1,这里的app_id等配置,就是来源于 Demo示例中的config.cs文件 需要从自己的支付宝沙箱中将相应的值复制进来
2,https://localhost:44334 这个地址和端口号是当前自己的项目的端口号
3,分别建立PaySuccess.aspx PayFailed.aspx 两个个窗体 分别用于支付成功和失败的跳转页面
4,Notify.aspx用于支付成功的异步通知用,可以不加

四,开始测试

在这里插入图片描述

调用成功,则进入如下界面

在这里插入图片描述

点击继续浏览器付款

在这里插入图片描述

点击支付宝账号登录

在这里插入图片描述

注意!这里不是真实的支付宝账号,需要用沙箱环境的支付宝账号,在沙箱界面中找:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

支付成功后,点击右上角完成,则进入代码中设定的PaySuccess.aspx页面,同时也将订单编号等信息带过去。

在这里插入图片描述

至此,模拟支付成功,更多相关C# 支付宝沙箱支付内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解c# 并行计算

    详解c# 并行计算

    本文主要介绍了并行计算的简单使用,并行循环的中断和跳出、并行循环中为数组/集合添加项、返回集合运算结果/含有局部变量的并行循环、、PLinq(Linq的并行计算)等相关内容。
    2020-12-12
  • C#中GraphicsPath的Widen方法用法实例

    C#中GraphicsPath的Widen方法用法实例

    这篇文章主要介绍了C#中GraphicsPath的Widen方法用法,实例分析了Widen方法的使用技巧,需要的朋友可以参考下
    2015-06-06
  • C#委托初级使用的实例代码

    C#委托初级使用的实例代码

    这篇代码介绍了C#中委托的初级使用实例,有需要的朋友可以参考一下
    2013-06-06
  • C#图像边缘检测(Roberts)的方法

    C#图像边缘检测(Roberts)的方法

    这篇文章主要介绍了C#图像边缘检测(Roberts)的方法,涉及C#操作图像的相关技巧,需要的朋友可以参考下
    2015-04-04
  • C#中结构体和字节数组转换实现

    C#中结构体和字节数组转换实现

    这篇文章主要介绍了C#中结构体和字节数组转换实现,本文直接给出了字节数组与结构体的转换代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • Extjs4如何处理后台json数据中日期和时间

    Extjs4如何处理后台json数据中日期和时间

    本文给大家分享Extjs4如何处理后台json数据中日期和时间,通过代码示例给大家剖析,感兴趣的朋友快来围观
    2015-08-08
  • C# 实现对PPT文档加密、解密及重置密码的操作方法

    C# 实现对PPT文档加密、解密及重置密码的操作方法

    这篇文章主要介绍了C# 实现对PPT文档加密、解密及重置密码的操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • C#泛型委托的用法实例分析

    C#泛型委托的用法实例分析

    这篇文章主要介绍了C#泛型委托的用法,以实例形式较为详细的分析了C#委托的功能与相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • c#关于非托管内存的释放问题及解读

    c#关于非托管内存的释放问题及解读

    这篇文章主要介绍了c#关于非托管内存的释放问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • c# 异步编程基础讲解

    c# 异步编程基础讲解

    这篇文章主要介绍了c# 异步编程的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04

最新评论