支付宝Payto接口的c#.net实现

支付宝Payto接口的c#.net实现,第1张

它现在这种支付方式比较多象网银在线等使用的方法都是url验证 就是通过url参数和一个这些url参数的md 编码来确认这个连接的正确性 支付宝在你购买成功后跳转自定义连接的时候会传 次过来 第一次是数据底层请求 第二次是web请求 而只有第一次有验证码 这个只能通过记录下来才看的到 因为两次请求间隔很小 如果光显示的话最后的结果是被第二次覆盖了的 所以在接收的时候就要设定接收条件 一种是没有notify_type参数的 一种是有的

我们先来看一下创建一个连接地址

t =ConfigurationSettings AppSettings[ interface ] //支付接口 就是给的一个连接地址

t =ConfigurationSettings AppSettings[ account ] //支付宝帐户你的帐户

t =ConfigurationSettings AppSettings[ password ] //安全校验码 设置的商家验证码

t = images/logo_zfb *** all gif //按钮图片地址

t = test //悬停说明

cmd= //默认

subject= item //商品名称

body= decrip //描述

order_no= //定单号 用户自己生成 方便自己管理                prices= //价格 ~

rurl= //商品展示网址

types= // 商品购买 服务购买 网络拍卖 捐赠

number= //购买数量

transport= // 平邮 快递 虚拟物品

ordinary_fee= //平邮运费

express_fee= //快递运费

readonlys= true //交易信息是否只读

buyer_msg= //买家给卖家的留言

buyer= //买家Email

buyer_name= //买家姓名

buyer_address= //买家地址

buyer_zipcode= //买家邮编

buyer_tel= //买家电话号码

buyer_mobile= //买家手机号码

partner=ConfigurationSettings AppSettings[ partenid ] //合作伙伴ID 这个是固定的

上面就是要提供得基本信息 然后就是生成支付宝得连接 也就是给支付宝提供一条带验证的购买信息

public string creatAlipayItemURL(string t string t string t string t string t string cmd string subject string body string order_no string prices string rurl string types string number string transport string ordinary_fee string express_fee string readonlys string buyer_msg string buyer string buyer_name string buyer_address string buyer_zipcode string buyer_tel string buyer_mobile string partner)

{

string itemURL str CreateAc acCode

string INTERFACE_URL sellerEmail keyCode imgsrc imgtitle AlipayItemURL

//初始化各必要变量

INTERFACE_URL=t +t //支付接口

sellerEmail=t //商户支付宝账户(改成你自己的)

keyCode=t //安全校验码(改成你自己的)

imgsrc=t //支付宝按钮图片

imgtitle=t //按钮悬停说明

str CreateAc= cmd + cmd + subject + subject

str CreateAc=str CreateAc + body + body

str CreateAc=str CreateAc + order_no + order_no

str CreateAc=str CreateAc + price + prices

//str CreateAc=str CreateAc + url + rurl

str CreateAc=str CreateAc + type + types

str CreateAc=str CreateAc + number + number

str CreateAc=str CreateAc + transport + transport

/*str CreateAc=str CreateAc + ordinary_fee + ordinary_fee

str CreateAc=str CreateAc + express_fee + express_fee

str CreateAc=str CreateAc + readonly + readonlys

str CreateAc=str CreateAc + buyer_msg + buyer_msg */

str CreateAc=str CreateAc + seller + sellerEmail

/*str CreateAc=str CreateAc + buyer + buyer

str CreateAc=str CreateAc + buyer_name + buyer_name

str CreateAc=str CreateAc + buyer_address + buyer_address

str CreateAc=str CreateAc + buyer_zipcode + buyer_zipcode

str CreateAc=str CreateAc + buyer_tel + buyer_tel

str CreateAc=str CreateAc + buyer_mobile + buyer_mobile */

str CreateAc=str CreateAc + partner + partner

str CreateAc=str CreateAc + keyCode

//acCode=FormsAuthentication HashPasswordForStoringInConfigFile(str CreateAc MD )

acCode=this GetMD (str CreateAc gb )

itemURL=INTERFACE_URL + ?cmd= + cmd

itemURL=itemURL + &subject= + HttpUtility UrlEncode(subject)

itemURL=itemURL + &body= + HttpUtility UrlEncode(body)

itemURL=itemURL + &order_no= + order_no

itemURL=itemURL + &price= + prices

//itemURL=itemURL + &url= + rurl

itemURL=itemURL + &type= + types

itemURL=itemURL + &number= + number

itemURL=itemURL + &transport= + transport

/*itemURL=itemURL + &ordinary_fee= + ordinary_fee

itemURL=itemURL + &express_fee= + express_fee

itemURL=itemURL + &readonly= + readonlys

itemURL=itemURL + &buyer_msg= + HttpUtility UrlEncode(buyer_msg)

itemURL=itemURL + &buyer= + HttpUtility UrlEncode(buyer)

itemURL=itemURL + &buyer_name= + HttpUtility UrlEncode(buyer_name)

itemURL=itemURL + &buyer_address= + HttpUtility UrlEncode(buyer_address)

itemURL=itemURL + &buyer_zipcode= + buyer_zipcode

itemURL=itemURL + &buyer_tel= + buyer_tel

itemURL=itemURL + &buyer_mobile= + buyer_mobile */

itemURL=itemURL + &partner= + partner

itemURL=itemURL + &ac= + acCode

AlipayItemURL=itemURL

return AlipayItemURL

}

这个函数就是返回生成的地址 里面注释掉的看你自己需要可以添加进去 然后就是md 码的问题 现在用默认的md 生成程序对中文的支持只限于GB 而支付宝使用的是GBK 虽然两个编码的内容GBK兼容GB 但是毕竟两个编码方式不同 所以会产生错误 如果用英文或者数字不会有问题 上面下载里面带的一个md asp的算法支持中文

现在已经可以跳转到支付宝的页面了 而我们这边就要自己记录用户的信息已经生成的定单编号 这样在支付宝返回信息的时候来查询 在设定了返回地址后 我们就要看接收页面了

string msg_id order_no gross buyer_email buyer_name buyer_address buyer_zipcode buyer_tel buyer_mobile action s_date ac notify_type

string returnTxt //返回给支付宝通知接口的结果

string alipayNotifyURL //支付宝查询接口URL

string myalipayEmail //商户的支付宝Email

string ResponseTxt=

returnTxt            = N

alipayNotifyURL        = ConfigurationSettings AppSettings[ interfaceback ] //支付宝查询接口地址

myalipayEmail        = ConfigurationSettings AppSettings[ account ] //填写您的支付宝帐号

//检查支付宝通知接口传递过来的参数是否合法

msg_id            = newop DelStr(Request[ msg_id ])

order_no        = newop DelStr(Request[ order_no ])

gross            = newop DelStr(Request[ gross ])

buyer_email        = newop DelStr(Request[ buyer_email ])

buyer_name        = newop DelStr(Request[ buyer_name ])

buyer_address    = newop DelStr(Request[ buyer_address ])

buyer_zipcode    = newop DelStr(Request[ buyer_zipcode ])

buyer_tel        = newop DelStr(Request[ buyer_tel ])

buyer_mobile    = newop DelStr(Request[ buyer_mobile ])

action            = newop DelStr(Request[ action ])

s_date            = newop DelStr(Request[ date ])

ac                = newop DelStr(Request[ ac ])

notify_type     = newop DelStr(Request[ notify_type ])

alipayNotifyURL    = alipayNotifyURL + msg_id= + msg_id + &email= + myalipayEmail + &order_no= + order_no

System Net WebClient isClient= new System Net WebClient()

Stream isStream = isClient OpenRead(alipayNotifyURL)

StreamReader isReader = new StreamReader(isStream System Text Encoding GetEncoding( GB ))

ResponseTxt = isReader ReadToEnd()

if(action == test )//测试商户网站URL是否正确安装

{

returnTxt    = Y

}

else if((action== sendOff )&&(msg_id!= ))//发货通知

{

returnTxt        = N

if((ResponseTxt == true )||(ResponseTxt == false ))

{

//更新数据在商户系统里的订单数据 如果已经发货 则将returnTxt置为Y 否则为N

}

else

{

//非法数据 不做更新

returnTxt= Error

}

}

else if((action== sendOff )&&(notify_type== web ))

{

//检查是否已经付帐 并记录            }

else if((action== checkOut )&&(msg_id!= ))//交易结束通知

{

returnTxt    = Y

if((ResponseTxt== true )||(ResponseTxt == false ))

{

//更新数据在商户系统里的订单数据 如果数据更新成功 则将returnTxt置为Y 否则为N

//更新数据

//你的代码 更新你这边数据

returnTxt= Y

}

else

{

//非法数据 不做更新

returnTxt    = Error

}

}

else

{

returnTxt= Error

}

lishixinzhi/Article/program/net/201311/12472

这个工作应该是银行做的。回忆一下,银行方面都有自己的网站,网站上面可以实现你的付费啊,xyk啊,等等很多功能。

类似的,他们的服务器会提供淘宝这种网站相应的API,用来方便的和网站实现对接,所以不是你单方面能够实现的。

网站加入支付宝功能需要和支付宝进行签约,具体步骤如下:

1、准备好介入支付宝的网站;

2、准备好签约的支付宝账户;

3、完成支付宝实名认证;

4、挑选合适的支付产品&费率;

5、在线提交签约订单;

6、完成订单付款;

7、等待订单审核;

8、审核通过之后,就接入成功了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8135079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存