.net调用支付宝的沙箱测试接口 完美调通(网页支付)

最近做金融行业的项目,需要有支付功能,现在支持最多的就是支付宝和微信支付。支付宝在审核中,微信暂时不开发。
看了看支付宝的开放平台,有个沙箱环境,不就是公共测试的环境吗?那就顺便调通一下。看看原理。
前提是在支付宝开放平台有账号
首先在沙箱中创建应用,支付宝会帮你生成一个APPID(待会会作为参数传递到沙箱)和其他一些商户信息和应用信息。支付宝网关也是自动生成的,也是固定的。
这里写图片描述
接下来是填写应用公钥,将鼠标悬浮在可以查看生成方法。生成的时候注意选择PKCS1格式,这个是非JAVA适用的,密码长度官方建议使用2048。把商户应用公钥复制到上面的图片中的设置应用公钥,注意,每次点击生成密钥生成的都不一样,传参数的时候要和你设置到沙箱中的公钥一致。如果忘记了可以查看保存在本地的文件,每次生成都保存在本地。
这里写图片描述
至于下边的RSA密钥,应用网关,等等都可以不设置。

接下来就是写代码了
第一步:在支付宝官网下载关于.net的SDK demo案例
网址:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Zpe5To&treeId=270&articleId=106291&docType=1
第二步:下载完后解压并新建自己的测试项目,添加现有项目‘找到解压好的文件添加后缀名为.csproj的文件’
然后添加相应的引用这里写图片描述
或者添加引用 在sdk中的bin文件夹下的AOpSdk.dll文件
这里写图片描述


配置参数
/// <summary>
        /// 因为嫌麻烦都写在web.config中
        /// </summary>
        static string URL = ConfigurationManager.AppSettings["url"];//沙箱的支付宝网网关
        static string APP_ID = ConfigurationManager.AppSettings["appid"];//沙箱中的APPID
        static string APP_PRIVATE_KEY = ConfigurationManager.AppSettings["APP_PRIVATE_KEY"];//自己生成的应用私匙
        static string ALIPAY_PUBLIC_KEY = ConfigurationManager.AppSettings["ALIPAY_PUBLIC_KEY"];//沙箱中的支付宝公匙
        static string AliPayReturn_url = ConfigurationManager.AppSettings["AliPayReturn_url"];//需要回调的地址支付成功后会直接调到此页面进行处理

参数完成,开始写实现前台有按钮的事件调到后台下面的代码

[HttpPost]
        public void index()
        {
             DefaultAopClient client = new DefaultAopClient(URL, APP_ID, APP_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, "utf-8", false);

            // 外部订单号,商户网站订单系统中唯一的订单号
            string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");

            // 订单名称
            string subject = "我靠";

            // 付款金额
            string total_amout = "0.01";

            // 商品描述
            string body = "12321345645";

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

            AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
            // 设置同步回调地址
            request.SetReturnUrl(AliPayReturn_url);
            // 设置异步通知接收地址
            request.SetNotifyUrl("");
            // 将业务model载入到request
            request.SetBizModel(model);

            AlipayTradePagePayResponse response = null;
            try
            {
                response = client.pageExecute(request, null, "post");
                Response.Write(response.Body);
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }///上面的代码可以在sdk源码中的pagepay文件夹下的pagepay.aspx.cs找到

然后是设置回调的页面的逻辑

public ActionResult ReturnUrl()
        {
            SortedDictionary<string, string> sPara = GetRequestGet();
            int Result = 0;
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool flag = AlipaySignature.RSACheckV1(sPara, ALIPAY_PUBLIC_KEY, "utf-8", "RSA2", false);

                if (flag)//验证成功
                {
                    #region 验证成功对数据库执行操作

                    return Content("<script>alert('dfsalkfjl');</script>");

                    #endregion
                }
                else//验证失败
                {
                    Result = 0;
                    // Cmn.Log.Write("异步支付验证失败!" + Request.Form);
                }
            }
            else
            {
                return Content("<script>location.href='/pay/Index'</script>");
            }
            return View();
        }

OK!
测试一下:
这里写图片描述

这里写图片描述
接着会回调到实现指定的回调页面如图
1、
这里写图片描述
2、这里写图片描述
3、就是咱们自己的页面
这里写图片描述
我配置文件的回掉地址:图
这里写图片描述
接下来就可以在自己的页面进行数据的处理了

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值