ASP支付宝接口实现Word下载.docx

上传人:b****5 文档编号:21812632 上传时间:2023-02-01 格式:DOCX 页数:21 大小:191.22KB
下载 相关 举报
ASP支付宝接口实现Word下载.docx_第1页
第1页 / 共21页
ASP支付宝接口实现Word下载.docx_第2页
第2页 / 共21页
ASP支付宝接口实现Word下载.docx_第3页
第3页 / 共21页
ASP支付宝接口实现Word下载.docx_第4页
第4页 / 共21页
ASP支付宝接口实现Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ASP支付宝接口实现Word下载.docx

《ASP支付宝接口实现Word下载.docx》由会员分享,可在线阅读,更多相关《ASP支付宝接口实现Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

ASP支付宝接口实现Word下载.docx

///按照字母序列从a到z的顺序排列

publicstaticstring[]BubbleSort(string[]r)

inti,j;

//交换标志

stringtemp;

boolexchange;

for(i=0;

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;

returnr;

///生成URL链接或加密结果

paramname="

para"

>

参数加密数组<

/param>

_input_charset"

编码格式<

sign_type"

加密类型<

key"

安全校验码<

returns>

字符串URL或加密结果<

/returns>

publicstaticstringCreatUrl(

//stringgateway,//GET方式传递参数时请去掉注释

string[]para,

string_input_charset,

stringsign_type,

stringkey

inti;

//进行排序;

string[]Sortedstr=BubbleSort(para);

//构造待md5摘要字符串;

StringBuilderprestr=newStringBuilder();

Sortedstr.Length;

if(i==Sortedstr.Length-1)

prestr.Append(Sortedstr[i]);

else

prestr.Append(Sortedstr[i]+"

&

"

);

prestr.Append(key);

//生成Md5摘要;

stringsign=GetMD5(prestr.ToString(),_input_charset);

//以下是POST方式传递参数

returnsign;

//以下是GET方式传递参数

//构造支付Url;

//char[]delimiterChars={'

='

};

//StringBuilderparameter=newStringBuilder();

//parameter.Append(gateway);

//for(i=0;

//{//UTF-8格式的编码转换

//parameter.Append(Sortedstr[i].Split(delimiterChars)[0]+"

="

+HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1])+"

//}

//

//parameter.Append("

sign="

+sign+"

sign_type="

+sign_type);

////返回支付Url;

//returnparameter.ToString();

//获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求

publicstaticstringGet_Http(stringa_strUrl,inttimeout)

stringstrResult;

try

HttpWebRequestmyReq=(HttpWebRequest)HttpWebRequest.Create(a_strUrl);

myReq.Timeout=timeout;

HttpWebResponseHttpWResp=(HttpWebResponse)myReq.GetResponse();

StreammyStream=HttpWResp.GetResponseStream();

StreamReadersr=newStreamReader(myStream,Encoding.Default);

StringBuilderstrBuilder=newStringBuilder();

while(-1!

=sr.Peek())

strBuilder.Append(sr.ReadLine());

strResult=strBuilder.ToString();

catch(Exceptionexp)

strResult="

错误:

+exp.Message;

returnstrResult;

}

而我们一般不用管这个类,只要保证能调用的到就行了,不用管他

我们要做的很少,他是怎么工作的呢,

这是开发文档里的工作图

其实我们要处理的只有三个Aspx的文件,

先看第一个吧Default.aspx

这是一个请求的界面

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Web.Security;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

usingSystem.Web.UI.HtmlControls;

usingGateway;

publicpartialclass_Default:

System.Web.UI.Page

protectedvoidPage_Load(objectsender,EventArgse)

protectedvoidBtnAlipay_Click(objectsender,EventArgse)

//业务参数赋值;

stringgateway="

//支付接口

stringservice="

create_direct_pay_by_user"

;

//服务名称,这个是识别是何接口实现何功能的标识,请勿修改

stringseller_email="

写自己的"

//商家签约时的支付宝帐号,即收款的支付宝帐号

stringsign_type="

MD5"

//加密类型,签名方式“不用改”

stringkey="

//安全校验码,与partner是一组,获取方式是:

用签约时支付宝帐号登陆支付宝网站,在商家服务我的商家里即可查到。

stringpartner="

//商户ID,合作身份者ID,合作伙伴ID

string_input_charset="

utf-8"

//编码类型,完全根据客户自身的项目的编码格式而定,千万不要填错。

否则极其容易造成MD5加密错误。

stringshow_url="

//展示地址,即在支付页面时,商品名称旁边的“详情”的链接地址。

stringout_trade_no=TxtOrderno.Text.Trim();

//客户自己的订单号,订单号必须在自身订单系统中保持唯一性

stringsubject="

4.0系统支付宝充值"

//商品名称,也可称为订单名称,该接口并不是单一的只能买一样东西,可把一次支付当作一次下订单

stringbody="

商户:

+TxtOrderno.Text.Trim()+"

通过支付宝给自己充值:

+TxtTotal_fee.Text.Trim()+"

元"

//商品描述,即备注

stringtotal_fee=TxtTotal_fee.Text.Trim();

//商品价格,也可称为订单的总金额

//服务器通知url(Alipay_Notify.aspx文件所在路经),必须是完整的路径地址

stringnotify_url=http:

//0.0.6.108/Alipay/Alipay_Notify.aspx;

//服务器返回url(Alipay_Return.aspx文件所在路经),必须是完整的路径地址

stringreturn_url=http:

//0.0.6.108/Alipay/Alipay_Return.aspx;

//构造数组;

//以下数组即是参与加密的参数,若参数的值不允许为空,若该参数为空,则不要成为该数组的元素

string[]para={

service="

+service,

partner="

+partner,

seller_email="

+seller_email,

out_trade_no="

+out_trade_no,

subject="

+subject,

body="

+body,

total_fee="

+total_fee,

show_url="

+show_url,

payment_type=1"

notify_url="

+notify_url,

return_url="

+return_url,

_input_charset="

+_input_charset

//支付URL生成

stringaliay_url=AliPay.CreatUrl(

//gateway,//GET方式传递参数时请去掉注释

para,

_input_charset,

sign_type,

key

//Response.Redirect(aliay_url);

Response.Write("

<

formname='

alipaysubmit'

method='

post'

action='

inputtype='

hidden'

name='

service'

value="

+service+"

partner'

+partner+"

seller_email'

+seller_email+"

out_trade_no'

+out_trade_no+"

subject'

+subject+"

body'

+body+"

total_fee'

+total_fee+"

show_url'

+show_url+"

return_url'

+return_url+"

notify_url'

+notify_url+"

payment_type'

value=1>

sign'

+aliay_url+"

sign_type'

+sign_type+"

/form>

script>

document.alipaysubmit.submit()"

/script>

下面的操作就是在支付平台的完成了,跟咱的程序没有关系了

现在我们应该想,那付完钱之后呢?

我们有两个界面来处理这个问题一个是

Alipay_Return.aspx

usingSystem.Collections;

usingSystem.Collections.Specialized;

///创建该页面文件时,请留心该页面文件是可以对其进行美工处理的,原因在于支付完成以后,当前窗口会从支付宝的页面跳转回这个页面。

///该页面称作“返回页”,是同步被支付宝服务器所调用,可当作是支付完成后的提示信息页,如“您的某某某订单,多少金额已支付成功”。

publicpartialclassAlipay_Return:

stringalipayNotifyURL="

//stringalipayNotifyURL="

//partner的对应交易安全校验码(必须填写)

//partner合作伙伴id(必须填写)

//编码类型,完全根据客户自身的项目的编码格式而定,千万不要填错。

alipayNotifyURL=alipayNotifyURL+"

¬

ify_id="

+Request.QueryString["

notify_id"

];

//获取支付宝ATN返回结果,true是正确的订单信息,false是无效的

stringresponseTxt=AliPay.Get_Http(alipayNotifyURL,120000);

//*******加密签名程序开始//*******

NameValueCollectioncoll;

//LoadFormvariablesintoNameValueCollectionvariable.

coll=Request.QueryString;

//Getnamesofallformsintoastringarray.

String[]requestarr=coll.AllKeys;

string[]Sortedstr=AliPay.BubbleSort(requestarr);

if(Request.Form[Sortedstr[i]]!

="

&

Sortedstr[i]!

sign"

+Request.QueryString[Sortedstr[i]]);

+Request.QueryString[Sortedstr[i]]+"

stringmysign=AliPay.GetMD5(prestr.ToString(),_input_charset);

//*******加密签名程序结束*******

stringsign=Request.QueryString["

//Response.Write(prestr.ToString());

//调试用,支付宝服务器返回时的完整路径。

if(mysign==sign&

responseTxt=="

true"

)//验证支付发过来的消息,签名是否正确

//更新自己数据库的订单语句,请自己填写一下

stringstrOrderNO=Request.QueryString["

out_trade_no"

//订单号

stringstrPrice=Request.QueryString["

total_fee"

//金额

stringstrTradeStatus=Request.QueryString["

TRADE_STATUS"

//订单状态

//生成对象

//OfficeFinanceServicesobjOfficeFinanceServices=newOfficeFinanceServices();

//订单信息

string[]login=strOrderNO.Split(newstring[]{"

_"

},StringSplitOptions.RemoveEmptyEntries);

////查询当前的余额

//decimalobjdm=objOfficeFinanceServices.OfficeFinanceSelect(Convert.ToInt32(login[0].ToString().Trim()),true);

//OfficeFinanceobjofficeFinance=newOfficeFinance();

//objofficeFinance.ofId=Convert.ToInt32(login[0].ToSt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1