文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

一,准备沙箱环境

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,支付宝公钥 复制沙箱界面的支付宝公钥

在这里插入图片描述

三,编写一个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# 支付宝沙箱支付内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯