支付宝 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个参数都是根据每个所要出售的商品产生或购买者选定产生的动态值。
    集成支付宝的时候有两点需要注意的:一、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
        请求发出去以后,其他一切交易操作将在支付宝帐号内进行,网站保存的交易状态只限于检查请求是否成功发出,虽然文档里有通知接口,但支付宝论坛内传出来的消息说这个接口已经不能被外部网络使用了,希望支付宝能重开这个接口。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ASP.NET MVC中调用支付宝支付的API接口,需要执行以下步骤: 1. 注册并获取支付宝开发者账号,并创建应用程序,获取应用程序的APPID、商户私钥和支付宝公钥。 2. 在MVC项目中添加支付宝SDK的引用,可以使用Nuget安装“Alipay.AopSdk”。 3. 创建一个Controller,并在其中编写一个Action方法,用于处理支付宝支付请求。 4. 在Action方法中,构造一个AlipayTradePagePayModel对象,设置支付参数,包括订单号、订单金额、商品名称等。 5. 创建一个AlipayTradePagePayRequest对象,将AlipayTradePagePayModel对象作为参数传入,并设置其他请求参数。 6. 调用AlipayClient的Execute方法,将AlipayTradePagePayRequest对象作为参数传入,即可向支付宝发起支付请求。 7. 处理支付宝返回的支付结果,包括成功、失败和未知状态等,并更新订单状态。 下面是一个简单的示例代码: ```csharp public ActionResult Alipay() { // 初始化AlipayClient IAopClient client = new DefaultAopClient( "https://openapi.alipay.com/gateway.do", "APPID", "商户私钥", "json", "1.0", "RSA2", "支付宝公钥", "utf-8", false); // 构造AlipayTradePagePayModel对象 AlipayTradePagePayModel model = new AlipayTradePagePayModel { OutTradeNo = "订单号", TotalAmount = "订单金额", Subject = "商品名称", Body = "商品描述", ProductCode = "FAST_INSTANT_TRADE_PAY" }; // 构造AlipayTradePagePayRequest对象 AlipayTradePagePayRequest request = new AlipayTradePagePayRequest { ReturnUrl = "支付完成后跳转的页面", NotifyUrl = "支付结果异步通知的页面" }; request.SetBizModel(model); try { // 调用支付宝API AlipayTradePagePayResponse response = client.Execute(request); if (response.Code == "10000" && response.Body != null) { // 处理支付宝返回的结果 // ... return Content(response.Body); } else { // 处理支付宝返回的错误信息 // ... return Content("支付宝支付失败"); } } catch (Exception ex) { // 处理异常 // ... return Content("支付宝支付异常:" + ex.Message); } } ``` 注意:以上代码仅为示例,需要根据实际情况修改参数和处理方式。同时,支付宝API的使用需要遵循支付宝的开发文档和规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值