流程参考《实物商品交易服务集成技术文档2.0.pdf》
网关地址http://paytest.rupeng.cn/AliPay/PayGate.ashx

网关参数说明:
partner:商户编号
return_url:回调商户地址(通过商户网站的哪个页面来通知支付成功!)
subject:商品名称
body:商品描述
out_trade_no:订单号!!!(由商户网站生成,支付宝不确保正确性,只负责转发。)
total_fee:总金额
seller_email:卖家邮箱
sign:数字签名。
为按顺序连接 (总金额、 商户编号、订单号、商品名称、商户密钥)的MD5值。

重定向的url("http://paytest.rupeng.cn/AliPay/PayGate.ashx?partner="
                + partner + "&return_url=" + Server.UrlEncode(return_url) 
+ "&subject=" 
+ Server.UrlEncode(subject) 
+ "&body=" + Server.UrlEncode(body) 
+ "&out_trade_no=" + out_trade_no 
+ "&total_fee=" + total_fee + "&seller_email=" 
+ Server.UrlEncode(seller_email) + "&sign=" + sign)

回调商户接口地址参数说明:
out_trade_no :订单号。给PayGate.ashx传过去的out_trade_no再传回来
returncode :返回码,字符串。ok为支付成功,error为支付失败。
total_fee :支付金额
sign  :数字签名。为按顺序连接 (订单号、返回码、支付金额、商户密钥)为新字符串的MD5值。

(每个商户的密钥是商户自己设置的,每个人的都不一样,只有支付宝和商户知道,所以无法猜测、假冒)

MD5算法要用以下的,大小写都不能错:
        /// <summary>
        /// 得到字符串的MD5散列值
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static String GetMD5(this string input)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
            bs = x.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }
            return s.ToString();
        }

/// <summary>

/// 付款
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            string partner = "2";//商户编号
            string return_url = "http://localhost:5059/ReturnPage.ashx";//回调商户地址(通过商户网站的哪个页面来通知支付成功!)
            string subject = "飞机"; //商品名称
            string body = "非常大的飞机";  //商品描述
            string out_trade_no = "aaabbb888";  //订单号!(由商户网站生成,支付宝不确保正确性,只负责转发。)
            string total_fee = "9"; //总金额
            string seller_email = "719862911@qq.com";//卖家邮箱  
            //商户密钥 abc123//不要写到url中
            //为按顺序连接 (总金额、 商户编号、订单号、商品名称、商户密钥)的MD5值。
            string sign = CommonHelper.getMD5Str(total_fee + partner + out_trade_no + subject + "abc123");//数字签名。

Response.Redirect("http://paytest.rupeng.cn/AliPay/PayGate.ashx?partner="
                + partner + "&return_url=" + Server.UrlEncode(return_url) + "&subject=" + Server.UrlEncode(subject) + "&body=" + Server.UrlEncode(body) + "&out_trade_no=" + out_trade_no + "&total_fee=" + total_fee + "&seller_email=" + Server.UrlEncode(seller_email) + "&sign=" + sign);

}

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            context.Response.Write("支付宝消息返回到了我的商户网站的这个页面\r\n");

string out_trade_no = context.Request["out_trade_no"];//订单号。给PayGate.ashx传过去的out_trade_no再传回来
            string returncode = context.Request["returncode"];//返回码,字符串。ok为支付成功,error为支付失败。
            string total_fee = context.Request["total_fee"];//支付金额
            string sign = context.Request["sign"];//支付宝端返回 的数字签名
            string MySign = CommonHelper.getMD5Str(out_trade_no + returncode + total_fee + "abc123");//为按顺序连接 (订单号、返回码、支付金额、商户密钥)为新字符串的MD5值。
            if (sign!=MySign)
            {
                //提交的数据 =验证失败
                context.Response.Write("提交的数据 =验证失败");
                return;
            }
            if (returncode=="ok")
            {
                context.Response.Write("支付成功");
            }
            else if (returncode == "error")
            {
                context.Response.Write("支付失败");
            }
        }

转载自:https://blog.csdn.net/u014297475/article/details/52419202

.net实现支付宝在线支付的更多相关文章

  1. php支付宝在线支付接口开发教程【转】

    php支付宝在线支付接口开发教程 这篇文章主要为大家详细介绍了php支付宝在线支付接口开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   1.什么是第三方支付 所谓第三方支付,就是一些和各 ...

  2. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  3. php实现支付宝在线支付和扫码支付demo

    ### php实现支付宝在线支付和扫码支付demo 背景:在做一个公众号时增加了h5端,需要接入支付,非微信环境,选择了支付宝,以下简单记录下实现过程,并做了简单的封装,拿来即可使用,注意:本项目只是 ...

  4. Python实现支付宝在线支付

    windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS\system32>pip3 install virtuale ...

  5. Python支付宝在线支付API

    一.蚂蚁金服开发平台申请测试账号 a. 登陆蚂蚁金服开放平台https://open.alipay.com/platform/manageHome.htm,在“开发中心”—“研发服务”下拉处选择沙箱作 ...

  6. 微信小程序在线支付功能使用总结

    最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出 ...

  7. Android集成支付宝接口 实现在线支付

    手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统互联网将会大放光彩的一个功能. 人人有手机,人人携带手机,花钱买东西,不再需要取钱付现,不再需要回家上网银,想买什么,扫 ...

  8. 在线支付接口之PHP支付宝接口开发简单介绍

    php100:92:在线支付接口之PHP支付宝接口开发 支付接口一般是第三方提供的代收款.付款的平台,可以通过支付接口帮助企业或个人利用一切可以使用的支付方式.常见支付平台:支付宝.快钱.云网支付.财 ...

  9. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

随机推荐

  1. 201771010142 张燕《面向对象程序设计(java)》第三周学习总结

    实验三 Java基本程序设计(2) 实验时间 2018-9-13 1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3) ...

  2. HTML-表格-列表-结构标记-表单

    1.表格  1.表格语法    1.标记      1.表格        <table></table>      2.行        <tr></tr& ...

  3. suse下修改主机名

    export HOSTNAME=主机名 echo $HOSTNAME>/etc/HOSTNAME /etc/rc.d/boot.localnet stop /etc/rc.d/boot.loca ...

  4. 利用python同步windows和linux文件

    写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,然后再利用网络copy,重复性很大,就想着能不能写一个小脚本帮我同步 逻辑:比对本地和服务器文件的 ...

  5. 编译与解释(java)

    计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种方式只是翻译的时间不同 计算机不 ...

  6. 背水一战 Windows 10 (81) - 全球化

    [源码下载] 背水一战 Windows 10 (81) - 全球化 作者:webabcd 介绍背水一战 Windows 10 之 全球化 Demo 格式化数字 示例1.演示全球化的基本应用Locali ...

  7. 一个简单的将Markdown二级标题进行排序的脚本

    我在写博客<Linux的1000个命令>的时候,相对二级标题进行一下排序,方便阅读和查找,于是就有了这个小程序. #! /usr/bin/env python3 import os imp ...

  8. cad2012卸载/安装失败/如何彻底卸载清除干净cad2012注册表和文件的方法

    cad2012提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2012失败提示cad2012安装未完成,某些产品无法安装,也有时候想重新安装cad2012 ...

  9. Java实现大数相加、相乘(不使用BigInteger)

    大数相加: package algorithm; //使用BigInteger类验证 import java.math.BigInteger; public class BigAdd { public ...

  10. 通过shell快速配置J2EE运行环境

    虽然可以通过已经配置好的docker镜像来快速运行相关环境, 但是 现实往往就是这么残酷+有钱很任性的时候 就是给出了一个装好系统的电脑让配置环境,每次的配置环境变量真的很烦 纯体力活 就简单的写个脚 ...