ASP.NET网站集成支付宝过程

        不久的未来,网上电子交易将成为一种趋势,不少商业网站都将集成电子支付功能,本篇文章结合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个参数都是根据每一个所要出售的商品产生或购买者选定产生的动态值。
    集成支付宝的时候有两点须要注意的:1、partner id和key须要到 [url]www.alipay.com[/url]上申请;2、注意使用一致的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         请求发出去之后,其余一切交易操做将在支付宝账号内进行,网站保存的交易状态只限于检查请求是否成功发出,虽然文档里有通知接口,但支付宝论坛内传出来的消息说这个接口已经不能被外部网络使用了,但愿支付宝能重开这个接口。