现在的位置: 首页 > 综合 > 正文

支付宝 asp.net 接口

2013年09月11日 ⁄ 综合 ⁄ 共 2683字 ⁄ 字号 评论关闭

  不久的将来,网上电子交易将成为一种趋势,很多商业网站都将集成电子支付功能,本篇文章结合Asp.Net技术来说明网站集成支付宝的过程。

如果网站采用GB2312编码,要实现实物物品交易的话,首先,到支付宝官方网站[url]www.alipay.com[/url]下载“实物物品交易服务”的支付宝开发文档和“aspx.net实物物品交易接口(gbk)”的Demo。仔细阅读开发文档,文档中主要的两部分是实物交易接口说明和通知接口说明,在集成的时候我们的大部分疑问都可以从文档中得到解答。

在集成时,货物交易操作将涉及到以下不能为空的参数:

Gateway – 支付宝对外接口

Service –  trade_create_by_buyer

Partner – 商家合作id

sign_type – 签名方式

out_trade_no – 订单流水号,由页面时间生成的一串数字

subject – 商品名称

body - 商品描述

quantity - 购买数量

price - 商品单价

show_url - 商品展示地址

seller_email - 卖家支付宝ID

key - 安全校验码(密钥)

return_url - 页面跳转通知地址

notify_url - 服务器通知地址

logistics_type - 物流类型

logistics_fee - 物流费用

logistics_payment - 物流支付类型

payment_type - 支付类型

        下载的Demo中有一份写好的接口CS文件,我们只要调用CreatUrl方法就可以得到支付宝所接受的调转地址,但是在所有的参数中,并不是所有的参数的数值都是动态产生的,对固定的一个网站而言,许多参数都可以抽取出来放入web.config中,这样做可以适应外部参数的改变。因为部分参数写入了web.config中,我们将重写CreatUrl方法,构造另外一个名为funcCreatUrl的方法。在funcCreatUrl方法中,从web.config读取以下参数值:

Gateway – 支付宝对外接口([url]https://www.alipay.com/cooperate/gateway.do[/url]?)

Service – trade_create_by_buyer

Partner – 商家合作id

sign_type – 签名方式

payment_type - 支付类型

key - 安全校验码(密钥)

return_url - 页面跳转通知

notify_url - 服务器通知地址

获取跳转地址的时候,传给funcCreatUrl的参数就只剩下下面10个参数:

out_trade_no – 订单流水号

subject – 商品名称

body - 商品描述

price - 商品单价

show_url - 商品展示地址

seller_email - 卖家支付宝ID

logistics_type - 物流类型

logistics_fee - 物流费用

logistics_payment - 物流支付类型

quantity - 购买数量

这10个参数都是根据每个所要出售的商品产生或购买者选定产生的动态值。

    集成支付宝的时候有两点需要注意的:一、partner id和key需要到[url]www.alipay.com[/url]上申请;二、注意使用一致的URL编码方式。第二点十分重要,因为发送支付宝请求的时候,支付宝会验证前面的参数所产生的sign值是否与传入的sign值一致,只要有丝毫的不同都不能通过支付宝的验证,下面用例子来说明。

验证不通过时出现下面提示信息:

调试错误,请回到请求来源地,重新发起请求.

错误代码ILLEGAL_SIGN

说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误。
我们来看看接口是如何组织加密的。

经过组织的请求字符串:

Body=马horse. 

&logistics_fee=0.01&logistics_payment=BUYER_PAY&logistics_type=POST&notify_url=http://127.0.0.1/manageru/Alipay_Notify.aspx&out_trade_no=20077212357&partner=2088002029290264&payment_type=1&price=0.01&quantity=1&return_url=http://127.0.0.1/manageru/Alipay_Return.aspx&seller_email=bit-4@163.com&service=trade_create_by_buyer&show_url=http://127.0.0.1/manageru/Prodcontent.aspx?sid=633203732934218750113&subject=马
horse.

上面的字符串加上key(kuip37avpflqhb94zdbxq79cd6jlacti),用CS文件里的GetMD5加密后会得到类似a0b664db915c715052992086cf566e20这样一串字符,最后发出去的请求字符串为:

body=马 horse. 

&logistics_fee=0.01&logistics_payment=BUYER_PAY&logistics_type=POST&notify_url=http://127.0.0.1/manageru/Alipay_Notify.aspx&out_trade_no=20077212357&partner=2088002029290264&payment_type=1&price=0.01&quantity=1&return_url=http://127.0.0.1/manageru/Alipay_Return.aspx&seller_email=bit-4@163.com&service=trade_create_by_buyer&show_url=http://127.0.0.1/manageru/Prodcontent.aspx?sid=633203732934218750113&subject=马
horse.

&sign=a0b664db915c715052992086cf566e20&sign_type=MD5

        请求发出去以后,其他一切交易操作将在支付宝帐号内进行,网站保存的交易状态只限于检查请求是否成功发出,虽然文档里有通知接口,但支付宝论坛内传出来的消息说这个接口已经不能被外部网络使用了,希望支付宝能重开这个接口。

抱歉!评论已关闭.