asp教程银行卡支付页面书(ASP.net如何实现网上支付功能)

本文目录
- ASP.net如何实现网上支付功能
- ASP网站的建行网银接口怎么弄啊
- 工商银行,asp.net的支付接口,完整代码谢谢了,高分
- asp.net实现网上银行在线交易是怎么实现的说的详细一点最好说出具体的流程还有代码!谢谢!
- asp如何做支付宝接口,代码怎么写
- asp如何实现在线充值
ASP.net如何实现网上支付功能
1.支付只需要下载支付宝的ASP.NET语言的接口插件,用你的程序去调用即可(如果他提供了的话) 2.我简单说一下在线支付的原理: 假如您要使用支付宝的在线支付服务,您必须拥有一个支付宝的帐户,这是前提。 你的客户在线支付的时候,你的程序要把支付信息(如:要支付多少钱)、本次交易的编号(或者是密钥)、你的支付宝帐户、密码等信息(这些信息是支付宝接口规定的,按照他的说明去调用即可)通过支付宝插件接口提交给支付宝,这些信息对于用户来说都是不可见的,只是随后用户看见的就是支付宝网站的支付界面了,整个支付过程是在支付宝的网站上发生的。支付完成以后,支付宝会按照他的接口插件刚才使用的地址跳回你的网站,给用户显示支付成功。 所以用户是去支付宝的网站上支付的,你的网站只是通过官方的插件接口告诉支付宝,把钱支付到你的支付宝帐户而已,用户也没有什么不放心。 现在大多数支付都是这个原理,所以你也不必担忧,去找找支付宝的支付插件吧,不要下载第三方的,为了安全去支付宝网站上找,应该是个DLL文件,请参考一下这片文章: http://www.book52.com/article/sort02/sort0161/info-21759.html
ASP网站的建行网银接口怎么弄啊
建行的接口相对于支付宝,Q业务充值和移动,联通,电信,缴费接口要复杂一些,接口分为两块,一块是商户到银行,另外一块是银行到商户
1) 客户登录商户网站,选择商户网站商品。
2) 客户将选好的商品放入购物车,并下订单。商户提供商户代码、订单号、合计金额等信息;
3) 客户选择代理付款的银行-建行,确认后,商户代码、订单信息、合计金额通过浏览器URL传到建行网上银行站点; 网上银行自动显示支付页面,客户首先选择是否使用建行证书,然后输入龙卡号和密码,选择“确定”。支付信息经加密后传送到网银中心;
4) 网银中心接收客户支付信息,转发到银行后台业务处理系统;
5) 银行后台业务系统处理后,返回处理结果给网银;
6) 网银通知客户支付(扣帐)是否成功。如果扣帐成功,提示客户注意接收商户返回的送货信息;对于不需要立即响应的商户, 跳过步骤7、8;
7) 对于需要立即响应的商户,如果支付成功,网银将成功结果反馈给商户。若支付失败,不返回给商户信息
8) 对于需要立即响应的商户,收到银行扣帐成功的通知后,发给客户送货信息。如客户收到银行支付(扣帐)成功通知(步骤6), 但未收到商户送货信息,则需向商户查询。 日终时,商户与开设结算帐户的建设银行(网银成员行)进行流水核对,对已支付但未得到商户确认的交易进行退款处理。
商户到银行
--------------------------------------------------------------------------------
其实这一步是把自己卡里的钱转到商户的帐上,就是转账,
代码实现其实很简单,我们先来分析一上要传的参考吧
个人客户在商户网站选择商品后,商户网站生成以下信息,传送到建行网站:
域名
名称
类型
备注
MERCHANTID
商户代码
CHAR(9)
由建行统一分配
POSID
商户柜台代码
CHAR(9)
由建行统一分配,缺省为000000000
BRANCHID
分行代码
CHAR(9)
由建行统一指定
ORDERID
定单号
CHAR(30)
由商户提供,最长30位,按实际长度给出
PAYMENT
付款金额
NUMBER(16,2)
由商户提供,按实际金额给出
CURCODE
币种
CHAR(2)
缺省为01-人民币
REMARK1
备注1
CHAR(30)
网银不处理,直接传到城综网
REMARK2
备注2
CHAR(30)
网银不处理,直接传到城综网
TXCODE
交易码
CHAR(6)
由建行统一分配为520100
MAC
MAC校验域
CHAR(32)
采用标准MD5算法,由商户实现
注:商户要保证定单号的唯一性。
为了加快站点间接口开发,站点间接口的参数传送采用普通的URL方式,商户将以上信息包含在FORM中,在SUBMIT后将生成URL,如下所示:
这是建行文档说的说明,很明显这是使用Http的方式来实现的
下面我们动手来实现 一下吧,
我是把所有的参数生成了一个实体类这样方便,而且规范化,
来看看这个Model吧
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClientSystem.AliPay
{
///
/// 工行传入参数
///
public class CBBTextModel
{
private string _MERCHANTID = ““;
///
/// 商户代码 由建行统一分配
///
public string MERCHANTID
{
get { return _MERCHANTID; }
set { _MERCHANTID = value; }
}
private string _POSID = ““;
///
/// 商户柜台代码 由建行统一分配,缺省为000000000
///
public string POSID
{
get { return _POSID; }
set { _POSID = value; }
}
private string _BRANCHID = ““;
///
/// 分行代码 由建行统一指定
///
public string BRANCHID
{
get { return _BRANCHID; }
set { _BRANCHID = value; }
}
private string _ORDERID = ““;
///
/// 定单号 由商户提供,最长30位,按实际长度给出
///
public string ORDERID
{
get { return _ORDERID; }
set { _ORDERID = value; }
}
private decimal _PAYMENT = 0m;
///
/// 付款金额 由商户提供,按实际金额给出
///
public decimal PAYMENT
{
get { return _PAYMENT; }
set { _PAYMENT = value; }
}
private string _CURCODE = ““;
///
/// 币种 缺省为01-人民币
///
public string CURCODE
{
get { return _CURCODE; }
set { _CURCODE = value; }
}
private string REMARK1 = ““;
///
/// 备注1 网银不处理,直接传到城综网
///
public string REMARK11
{
get { return REMARK1; }
set { REMARK1 = value; }
}
private string REMARK2 = ““;
///
/// 备注2 网银不处理,直接传到城综网
///
public string REMARK21
{
get { return REMARK2; }
set { REMARK2 = value; }
}
private string _TXCODE = ““;
///
/// 交易码 由建行统一分配为520100
///
public string TXCODE
{
get { return _TXCODE; }
set { _TXCODE = value; }
}
private string _MAC = ““;
///
/// MAC校验域 采用标准MD5算法,由商户实现
///
public string MAC
{
get { return _MAC; }
set { _MAC = value; }
}
private string _url = ““;
///
/// URL
///
public string Url
{
get { return _url; }
set { _url = value; }
}
}
}
我们来准备两个方法吧,一个是Http连接来使用的一个是Md5加密,因为在文档里写到要使用Md5加密哦
代码
#region //预定义方法或是变量
///
/// 请求指定 URL 资源,并获取响应结果
///
/// 需要请求的 URL 资源
///
/// 响应结果;
/// 出现任意异常,均返回字串“Runtime Error“
///
private string RequestContent(string url)
{
string content = string.Empty;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
content = reader.ReadToEnd();
reader.Close();
}
catch (Exception)
{
content = “Runtime Error“;
}
return content;
}
///
/// 传入明文,返回用MD%加密后的字符串
///
/// 要加密的字符串
/// 用MD5加密后的字符串
public static string ToMD5(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, “md5“);
}
#endregion
看一下充值按钮下面实现吧
代码
if (textBox1.Text.Trim() == ““ || textBox1.Text.Trim() == null)
{
MessageBoxForm objm = new MessageBoxForm(“您输入的金额不能为空!!!“, “提示信息“);
objm.ShowDialog();
return;
}
string orid = OfficeInfo.ofId.ToString().Trim() + “_“ + DateTime.Now.Ticks.ToString();
Alipay objalipay = new Alipay();
objalipay.APID = orid;
objalipay.addTime = DateTime.Now;
objalipay.total_fee = Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status = “客户端提交“;
objalipay.Text1 = DateTime.Now.ToString();
objalipay.Text2 = “建行接口“;
objalipay.Text3 = ““;
objalipay.Text4 = ““;
objalipay.Text5 = ““;
decimal money = Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if (money 》 Convert.ToDecimal(textBox1.Text.Trim()))
{
MessageBoxForm objm = new MessageBoxForm(“你输入的最小金额不能低于“ + money + “元!!!“, “提示信息“);
objm.ShowDialog();
return;
}
if (user.AddAlipay(OfficeInfo.ofPara1, objalipay))
{
CBBTextModel objcbbText = new CBBTextModel();
//商户代码 由建行统一分配
objcbbText.MERCHANTID = “105411248160006“;
//商户柜台代码 由建行统一分配,缺省为000000000
objcbbText.POSID = “768362719“;
//分行代码 由建行统一指定
objcbbText.BRANCHID = “410000000“;
// 定单号 由商户提供,最长30位,按实际长度给出
objcbbText.ORDERID = orid.Trim();
//付款金额 由商户提供,按实际金额给出
objcbbText.PAYMENT = Convert.ToDecimal(textBox1.Text.Trim());
//币种 缺省为01-人民币
objcbbText.CURCODE = “01“;
//备注1 网银不处理,直接传到城综网
objcbbText.REMARK11 = ““;
//备注2 网银不处理,直接传到城综网
objcbbText.REMARK21 = ““;
//交易码 由建行统一分配为520100
objcbbText.TXCODE = “520100“;
//MAC校验域 采用标准MD5算法,由商户实现
objcbbText.MAC = “qwertyuioplkjhgfdsazxcvbnm901234“;
//URL
objcbbText.Url = “https://ibsbjstar.ccb.com.cn/app/ccbMain“;
//要加密的串
string canshu = “MERCHANTID=“ + objcbbText.MERCHANTID.Trim() +
“&POSID=“ + objcbbText.POSID.Trim() + “&BRANCHID=“ + objcbbText.BRANCHID.Trim()
+ “&ORDERID=“ + objcbbText.ORDERID.Trim() + “&PAYMENT=“ + objcbbText.PAYMENT.ToString().Trim()
+ “&CURCODE=“ + objcbbText.CURCODE + “&TXCODE=“ + objcbbText.TXCODE.Trim()
+ “&REMARK1=&REMARK2=“;
objcbbText.MAC = ToMD5(canshu.Trim()).ToLower().Trim();
string strURl = objcbbText.Url + “?“ + canshu + “&MAC=“ + objcbbText.MAC.Trim();
webBrowser1.Url = new Uri(strURl.Trim());
}
}
在这里大家一定要注意把 objcbbText.MAC = ToMD5(canshu.Trim()).ToLower().Trim();
加密后的字符串改成小写的
上面所提到的
代码
string orid = OfficeInfo.ofId.ToString().Trim() + “_“ + DateTime.Now.Ticks.ToString();
Alipay objalipay = new Alipay();
objalipay.APID = orid;
objalipay.addTime = DateTime.Now;
objalipay.total_fee = Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status = “客户端提交“;
objalipay.Text1 = DateTime.Now.ToString();
objalipay.Text2 = “建行接口“;
objalipay.Text3 = ““;
objalipay.Text4 = ““;
objalipay.Text5 = ““;
decimal money = Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if (money 》 Convert.ToDecimal(textBox1.Text.Trim()))
{
MessageBoxForm objm = new MessageBoxForm(“你输入的最小金额不能低于“ + money + “元!!!“, “提示信息“);
objm.ShowDialog();
return;
}
if (user.AddAlipay(OfficeInfo.ofPara1, objalipay))
{
这一部分代码是记录日志的,大家可以参考一下
我们现在只要运行程序就会出现如下界面所显示的内容
下面的操作就是输入你的卡号密码就可以了,
转账成功后我们这一步的工作就算是做完了
工商银行,asp.net的支付接口,完整代码谢谢了,高分
先分析原因。
你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。
1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个《a》标签。
2,为什么你的写法不会转换呢?因为首先 传递给Literal1.Text 的值在asp.net中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。
解决办法:
知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:
Literal1.Text = “《li》“ + ((users)Session[“users“]).Name.ToString() + “《/li》《li》 《/li》《li》《a ID=’LinkButton1’ onclick=’LinkButton1_Click1’》注销《/a》《/li》《li》 《/li》《li》信息修改《/li》《li》 《/li》“;
但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?
因为你的LinkButton1_Click1 事件并没有在asp.net中被解析为可供浏览器识别的js代码。
如何解决?
在aspx页面中写一个asp:LinkButton按钮:
《asp:LinkButton ID=’LinkButton2’ runat=’server’ onclick=’LinkButton1_Click1’》注销《/asp:LinkButton》
运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下
《a id=“LinkButton2“ onclick=“xxxxx“》《/a》
将新加的linkbutton 设置不可见属性
《asp:LinkButton ID=’LinkButton2’ runat=’server’ visible=“false“ onclick=’LinkButton1_Click1’》注销《/asp:LinkButton》
重新修改后台代码
Literal1.Text = “《li》“ + ((users)Session[“users“]).Name.ToString() + “《/li》《li》 《/li》《li》《a ID=’LinkButton1’ onclick=’xxxxx’》注销《/a》《/li》《li》 《/li》《li》信息修改《/li》《li》 《/li》“;
//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。
希望对你有帮助
asp.net实现网上银行在线交易是怎么实现的说的详细一点最好说出具体的流程还有代码!谢谢!
各大银行基本不会为你提供在线支付接口的 除非你的网站够大够强。
试试第三方支付平台接口使用 其实和银行的接口程序使用方式一样。
说说支付宝接口吧。要收费的。现在没有免费的了。最低套餐 -- 一年600元。36000元的现金交易流量。最便宜的了。
主类:
AliPay.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Security.Cryptography;
/// 《summary》
/// New Interface for AliPay
/// 《/summary》
namespace Gateway
{
/// 《summary》
/// created by sunzhizhi 2006.5.21,sunzhizhi@msn.com。
/// 《/summary》
public class AliPay
{
public static string GetMD5(string s, string _input_charset)
{
/// 《summary》
/// 与ASP兼容的MD5加密算法
/// 《/summary》
MD5 md5 = new MD5CryptoServiceProvider();
byte t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i 《 t.Length; i++)
{
sb.Append(t[i].ToString(“x“).PadLeft(2, ’0’));
}
return sb.ToString();
}
public static string BubbleSort(string r)
{
/// 《summary》
/// 冒泡排序法
/// 《/summary》
int i, j; //交换标志
string temp;
bool exchange;
for (i = 0; i 《 r.Length; i++) //最多做R.Length-1趟排序
{
exchange = false; //本趟排序开始前,交换标志应为假
for (j = r.Length - 2; j 》= i; j--)
{
if (System.String.CompareOrdinal(r[j + 1], r[j]) 《 0) //交换条件
{
temp = r[j + 1];
r[j + 1] = r[j];
r[j] = temp;
exchange = true; //发生了交换,故将交换标志置为真
}
}
if (!exchange) //本趟排序未发生交换,提前终止算法
{
break;
}
}
return r;
}
public string CreatUrl(
string gateway,
string service,
string partner,
string sign_type,
string out_trade_no,
string subject,
string body,
string payment_type,
string total_fee,
string show_url,
string seller_email,
string key,
string return_url,
string _input_charset,
string notify_url,
string logistics_type,
string logistics_fee,
string logistics_payment,
string logistics_type_1,
string logistics_fee_1,
string logistics_payment_1,
string quantity
)
{
/// 《summary》
/// created by sunzhizhi 2006.5.21,sunzhizhi@msn.com。
/// 《/summary》
int i;
//构造数组;
string Oristr ={
“service=“+service,
“partner=“ + partner,
“subject=“ + subject,
“body=“ + body,
“out_trade_no=“ + out_trade_no,
“price=“ + total_fee,
“show_url=“ + show_url,
“payment_type=“ + payment_type,
“seller_email=“ + seller_email,
“notify_url=“ + notify_url,
“_input_charset=“+_input_charset,
“return_url=“ + return_url,
“quantity=“+quantity,
“logistics_type=“+logistics_type,
“logistics_fee=“+logistics_fee ,
“logistics_payment=“+logistics_payment,
“logistics_type_1=“+logistics_type_1,
“logistics_fee_1=“+logistics_fee_1,
“logistics_payment_1=“+logistics_payment_1
};
//进行排序;
string Sortedstr = BubbleSort(Oristr);
//构造待md5摘要字符串 ;
StringBuilder prestr = new StringBuilder();
for (i = 0; i 《 Sortedstr.Length; i++)
{
if (i == Sortedstr.Length - 1)
{
prestr.Append(Sortedstr[i]);
}
else
{
prestr.Append(Sortedstr[i] + “&“);
}
}
prestr.Append(key);
//生成Md5摘要;
string sign = GetMD5(prestr.ToString(), _input_charset);
//构造支付Url;
char delimiterChars = { ’=’};
StringBuilder parameter = new StringBuilder();
parameter.Append(gateway);
for (i = 0; i 《 Sortedstr.Length; i++)
{
parameter.Append(Sortedstr[i].Split(delimiterChars) + “=“ + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)) + “&“);
}
parameter.Append(“sign=“ + sign + “&sign_type=“ + sign_type);
//返回支付Url;
return parameter.ToString();
}
}
}
支付宝上提供源程序 和说明文档
asp如何做支付宝接口,代码怎么写
1、打开Config.asp 配置文件好您的支付宝帐号,注意!必须是要通过身份认证的方能使用,收款手续费千分之十。
2、把ASP代码发布到IIS 服务器中,直接访问index.asp文件为网银行直连,访问alipay.asp是直接到就可以到支付宝的收银台。
3、对支付成功的订单信息,进行数据库的操作。
返回的机制有两种:
一种 return_url 即时返回,此返回是get方式。
二种 notify_url 通知返回,此返回时post方式,进行服务器点对点的通知机制。
注意:返回的地址中不能自定义携带参数。
4、如果获得返回信息。
在指定的两种返回接收的文件中 get或post获得。
例如:return_url:返回设置文件中的return_Alipay_Notify.asp,商户网站中传递给支付宝的订单号码-------request(“out_trade_no“)价格-------request(“price“)notify_url:返回设置文件中的Alipay_Notify.asp,商户网站中传递给支付宝的订单号码request(“out_trade_no“) ,价格request(“price“)。
5、如果两种方式都设置,就要判断交易的订单是否有更新过,因为两种返回机制不同。可能同时返回、或者有先后,注意订单更新时候要判断订单不能个重复更新。
买家付完款(trade_status=TRADE_FINISHED)在此状态下进行数据库的更新。并返回给支付宝success。若没有得到success。
asp如何实现在线充值
电子支付,你指的是网上网蓝。
其实很简单,和我们日常的转账差不多。
以支付宝为例:支付宝需要在银行有一个账户,作为收款账户,当客户发起交易,使用网上银行支付,这时候就会跳转到银行网上支付页面,客户完成支付后,钱就从客户账户转入支付宝账户。
同时,支付宝内部也为客户开立了个人账户(你注册的账户),等客户收到商品后,再发起付款,这时钱就从支付宝账户转入卖家的支付宝账户了。jlg

更多文章:
another time(another time和other time的区别)
2026年10月11日 05:00









