编程用支付宝接口

上传人:第*** 文档编号:38794990 上传时间:2018-05-07 格式:DOC 页数:15 大小:66.50KB
返回 下载 相关 举报
编程用支付宝接口_第1页
第1页 / 共15页
编程用支付宝接口_第2页
第2页 / 共15页
编程用支付宝接口_第3页
第3页 / 共15页
编程用支付宝接口_第4页
第4页 / 共15页
编程用支付宝接口_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《编程用支付宝接口》由会员分享,可在线阅读,更多相关《编程用支付宝接口(15页珍藏版)》请在金锄头文库上搜索。

1、大家想必都有这种困惑拿到支付宝的接口代码后,尽管里面的程序有注释,接口代码包中也附有开发说明,但还是不知道该如何入手。这不难想象是什么原因,因为自己并不了解这个接口的工作原理是什么?那么这篇文章就是要向大家全面展示关于支付宝接口的所有东西,以便大家能快速上手把接口接入自己的项目中,也能帮助那些已经对支付宝接口有所了解的程序开发者们更了解支付宝的一些通用规则、特殊用途等。正题开始一、 结构 a) 一般由两部分组成,接入部分与通知返回部分。接入部分即为传递参数等信息组合成超级链接,并用该链接来进行跳转。通知返回部分则是支付宝服务器对该笔订单处理完毕后,通知与返回该笔订单的详细信息到商户服务器,商户

2、服务器接收到后,并对其进行数据处理。 b) 以实物标准双接口 ASP 代码中的程序为例。 i. 接入部分的页面文件包含:配置页 alipay_Config.asp、方法详细页 alipay/Alipay_Payto.asp、程序入口页 index.asp 以及 MD5 加密方法类页 alipayto/Alipay_md5.asp。ii. 通知返回部分的页面文件包含:方法详细页 alipay/Alipay_Payto.asp、MD5 加密方法类页 alipayto/Alipay_md5.asp、支付完成后(支付宝处理完毕后)自动跳转回的自定义页面 return_Alipay_Notify.asp

3、、两方服务器间相互交互(肉眼无法见到的)通知页 Alipay_Notify.asp。这里大家可以一目了然,MD5 加密方法类与方法详细页不论是哪部分都有被调用,因此这两个文件可视为核心代码部分,若想理解接口的工作原理则要从该部分入手。 c) 以实物标准双接口的 ASP.NET C#语言代码程序为例:i. 接入部分的页面文件包含:无需更改的 ALIPAY 的类文件 App_Code/AliPay.cs 及入口页面文件 Default.aspxii. 通知返回部分的页面文件包含:两方服务器间相互交互(肉眼无法见到的)通知页 Alipay_Notify.aspx、支付完成后(支付宝处理完毕后)自动跳

4、转回的自定义页面 Alipay_Return.aspx、无需更改的 ALIPAY 的类文件 App_Code/AliPay.cs这个架构是否更容易理解了?没错,核心部分的运算过程就在 AliPay.cs 这个文件中。二、 工作原理大家对结构部分已经有所了解,那么我们就开始分析具体的这个接口是如何运作的。a) 接入部分原理i. 第一步选定参数信息: 结合技术文档以及接口代码 DEMO,选定传递给支付宝服务器的参数,以实物标准双接口为例。如必传项 service、partner、seller_email、sign、sign_type、out_trade_no、price、subject、quant

5、ity、payment_type 以及最少一组的物流信息参数三个 logistics_type、logistics_fee、logistics_payment等,选填项 body、discount、show_url 等。以 ASP.NET C#语言代码程序为例:string service = “trade_create_by_buyer“;string seller_email = ““; string sign_type = “MD5“;string key = “*“;string partner = “2088*“;string _input_charset = “utf-8“;str

6、ing show_url = “http:/ out_trade_no = TxtOrderno.Text.Trim();string subject = TxtSubject.Text.Trim();string body = TxtBody.Text.Trim();string price = TxtPrice.Text.Trim();string quantity = TxtQua.Text.Trim();string logistics_type = “POST“;string logistics_fee = TxtPost.Text.Trim();string logistics_p

7、ayment = “BUYER_PAY“;string notify_url = “http:/ tify.aspx“; string return_url = “http:/ turn.aspx“;ii. 第二步排序: 把这些参数的变量名(即技术文档里给出的变量名,以这种方式组合:service=”trade_create_by_buyer”作为一串字符串)按从 a 到 z 的顺序依次排序。以 ASP.NET C#语言代码程序为例,该功能在 ALIPAY.CS 类中;以 ASP 代码中的程序为例,该功能在 alipayto/Alipay_Payto.asp 文件中。iii. 第三步加密: 目

8、前一般的加密方式是 MD5,不论是哪种加密方式,要加密的信息是要传给支付宝的信息,且存在于技术文档中,而非自定义的变量名。对以上排序好的所有参数(不包括网关参数即:string gateway = “https:/ ;)以循环的方式,用tryHttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Cre ate(a_strUrl);myReq.Timeout = timeout;HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetRes ponse();Stream myStream =

9、 HttpWResp.GetResponseStream();StreamReader sr = new StreamReader(myStream, Encoding.Def ault);StringBuilder strBuilder = new StringBuilder();while (-1 != sr.Peek()strBuilder.Append(sr.ReadLine();strResult = strBuilder.ToString();catch (Exception exp)strResult = “错误:“ + exp.Message;return strResult;

10、 调用部分:string alipayNotifyURL = “https:/ eway.do?service=notify_verify“;string partner = “2088*“;alipayNotifyURL = alipayNotifyURL + “/获取支付宝 ATN 返回结果,true 是正确的订单信息,false 是无效 的string responseTxt = Get_Http(alipayNotifyURL, 120000);得到的便是 ResponseTxt 的值,这是下面的步骤要用到的。2. 第二步排序: 该部分的排序的原理与“接入部分”的原理“排序步骤”一样,

11、值得注意的是 ,这里的参数是支付宝通知返回时,传回来的订单信息的各种参数以及值。3. 第三步加密: 该部分的加密原理与“接入部分”的原理“加密步骤”一样,依然值得注意的部分是加密的参数信息,这些参数信息是来源于上面一步骤排序好后的参数拼接起来的字符串来加密的。4. 第四步判断: 上面我们有得到加密的结果(命名为 mysign 吧)、检验是否是支付宝发来的消息的正确性 ResponseTxt、以及通过 POST 或 GET 的方式得到的 sign 参数的值,那么这个判断的含义便是通知返回里最重要的部分了,因为它是来检验下面的程序是否执行我们的数据处理的。如何判断呢?各语言程序代码中,都是把加密得

12、出的结果 mysign 与从支付宝那或得到的 sign 的值进行比较,并且还要让 reponseTxt 这个的值要等于 true,这样才达到验证成功。值得注意的是 ,大家都有遇到过这种事,支付部分即接入部分的确是做好了,但为什么无法与支付宝的交易信息同步,出现的问题就在这个判断上没有成功,下面的第五部分则会详细说明。5. 第五步自身网站的数据处理 终于判断成功了,程序已经执行到了这里。各语言程序代码的这块地方的注释都写着“更新自己数据库的订单语句”或是“这里可以指定你需要显示的内容”。如字面上的意思,这块地方就是要我们大家来对这笔交易信息进行数据处理,即编写程序。这个说法大概专业了点,简单易懂

13、的讲法便是,支付宝的交易成功的信息和其他的一切交易状态,自己的网站也能够对这笔订单同步起来,即支付宝里这笔订单的交易状态是“买家已付款等待卖家发货”,那么自己网站里显示的这笔状态也因如此,那么就应当在这里面写下诸如:if (Request.Form“trade_status“ = “WAIT_SELLER_SEND_GOOD S“)/ 判断支付状态_买家付款成功,等待卖家发货(文档中有枚举表可以参 考) /更新自己数据库的订单语句,请自己填写一下string strOrderNO = Request.Form“out_trade_no“;/订单号string strPrice = Reques

14、t.Form“price“;/金额string sql = “update order_table set order_status = 买家已付款,等待卖家发货 where order_no = “ + strOrderNO;Update(sql);等数据库处理代码。iii. 存在的区别 1. 大家仔细阅读代码不难发现,在通知页中程序运行时,获取参数的方法是用 POST 方式,而返回页中程序运行时,获取参数的方法是用 GET 方式。由此可知一些基本的信息返回页传递回来的参数信息是储存在 URL 链接里的,而通知页的参数信息是不在 URL 链接里,也能从中推断出二者在功能上的差异。 2. 大家

15、可看到通知页面比返回页中多一个环节,那就是 Response.Write(“success“);作用上不同的详细说明,大家可以看下面的第四部分。三、 参数首先大家有个疑问,技术文档中的输入参数列表中给出了诸多参数,而手上拿到的代码里只写了一部分参数来进行传递信息,这究竟是为什么?那么我们先带着这个疑问往下看。以下讨论的参数不涵盖网关 gateway、加密参数 sign、加密类型 sign_type,因为这些都是必须的。以实物标准双接口为例,可把参数看做几个功能部分组成a) 不可缺少的参数i. service 服务参数,这个是用来区别这个接口是用的什么接口,所以绝对不能修改。ii. partner 合作身份者 ID、key 安全校验码或称私钥这一组参数是签约合同生效后才能拿的到,partner 是来鉴别是哪个商家与支付宝签约,而这个 Key 它如同钥匙般相当重要。iii. seller_email 收款人支付宝账号,支付宝中有手机类型、电子邮件类型的支付宝账号是都可以用这个参数的。iv. subject 在支付宝的收银台里是直接与商品名称关联在一起的,但是说的更准确些的话,这个参数是这笔交易的名称,因为这笔交易不一定只买一件商品。它的作

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号