[转]支付宝接口程序、文档及解读(ASP.NET)

正文转自:http://www.cnblogs.com/blodfox777/archive/2009/11/03/1595223.html

近日用呢网站进入支付宝的充值接口,而当前关于支付宝接口开发之资料比混乱,这里就自己此次开发所用到之素材进行汇总整理,希望能够助需要的情侣。

支出步骤:

1. 规定签约项目

支付宝的接口有多种类型,所以首先你如确定签约的合同项目,确定以的凡谁接口,不至于走错了道道。

此步骤中,可以参见文档:支付宝接口操作教程

2. 下载开发文档

倘是就经常到账的付出,请先下充斥并精心翻阅:规范快速付款接口文档

文档中较详细的介绍了逻辑流程,时序图跟枚举定义等,最好于看示例代码之前通读之

3. 收获签约账号的支付宝安全校验码(key)和合作id:partner

开宝示例程序的调试要商户号和呼应的密钥,否则无法展开次的调节,具体获取方式要查看官方援助,不再赘言

4. 下载支付宝示例程序

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>asp
即经常到账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(31.62
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>php_GBK
就经常至账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(22.02
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>php_UTF-8
即经常至账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(22.02
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>net_05_GBK(post方式)
即时到账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(12.03
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>net_05_UTF-8(post方式)
即时到账接口代码实例: class=”Apple-converted-space”>  style=”color: blue; font-size: 10pt;”>点此下载.rar) class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(10.72
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>java_GBK(get方式)
即时到账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(136.54
KB) 
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>java_UTF-8
(get方式)即经常到账接口代码实例: style=”color: blue; font-size: 10pt;”>点此下载 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; border-collapse: collapse;”>(112.67
KB) 

 5. 支付宝示例程序的解读

 下面内容转自http://dev.alipay.com/devclub/mvnforum/viewthread_thread,161_offset,0

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”>大家兴许都产生这种疑惑——拿到支付宝的接口代码后,尽管其中的次序来注释,接口代码包中也从开发说明,但要么无明了该如何下手。这不难想象是什么原因,因为好并无了解这个接口的行事规律是呀?
那么就篇稿子就是如果向大家到展示关于支付宝接口的持有东西,以便大家会快上手把接口接入自己的路被,也能支援那些早已针对性支付宝接口有所了解的主次开发者们还了解支付宝的局部通用规则、特殊用途等。
主题开始——
一、
结构
  style=”color: blue;”>a)
一般由个别局部构成,接入部分与通返回部分。接入部分即为传送参数等消息整合成超级链接,并因而该链接来进展跳转。通知返回部分则是支付宝服务器对该笔订单处理完毕后,通知和归该笔订单的详细信息到贾服务器,商
户服务器收到至晚,并针对那个进行数据处理。 class=”Apple-converted-space”>  b)
以实物标准双接口ASP代码中的次为例。 class=”Apple-converted-space”>  class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”>i.
接入部分的页面文件包含:配置页alipay_Config.asp、方法详细页alipay/Alipay_Payto.asp、程序入口页index.asp以及MD5加密方法类页alipayto/Alipay_md5.asp。
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”>ii.
通知返回部分的页面文件包含:方法详细页alipay/Alipay_Payto.asp、MD5加密方法类页alipayto/Alipay_md5.asp、支付成功后(支付宝处理完毕后)自动跳反回之自定义页面return_Alipay_Notify.asp、两方服务器间互为交互(肉眼无法观的)通知页Alipay_Notif
y.as style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”>p。
这里大家好洞察,MD5加密方法类与办法详细页不论是啊部分还来叫调用,因此这点儿只公文可就是核心代码有,若想知道接口的办事规律则使起该部分入手。 
c) 以实物标准双接口的ASP.NET C#言语代码程序为条例: i.
接入部分的页面文件包含:无需再次改之ALIPAY的类公事App_Code/AliPay.cs及进口页面文件Default.aspx
ii.
通知返回部分的页面文件包含:两在服务器中互动交互(肉眼无法看到的)通知页Alipay_Notify.aspx、支付完成后(支付宝处理完毕后)自动跳反回的自定义页面Alipay_Return.aspx、
无需更改的ALIPAY的接近公事App_Code/AliPay.cs
这个架构是否更爱懂了?没错,核心组成部分的运算过程就是在AliPay.cs这个文件中。

 

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”color: red;”>次、
工作规律

大家对组织局部就有所了解,那么我们虽从头分析具体的此接口是哪运作的。
a)
接抱部分原理 i.
第一步——选定参数信息: class=”Apple-converted-space”> 
结合技术文档以及接口代码DEMO,选定传递让支付宝服务器的参数,以实物标准双接口为例。如得传项service、partner、seller_email、sign、sign_type、out_trade
_no、price、subject、quantity、payment_type以及至少一组的物流信息参数三单logistics_type、logistics_fee、logistics_payment
等,选填项body、discount、show_url等。 以ASP.NET
C#言语代码程序也例:

string service = "trade_create_by_buyer";         string seller_email = "aaaa@126.com";          string sign_type = "MD5";         string key = "********************************";         string partner = "2088************";         string _input_charset = "utf-8";         string show_url = "http://www.alipay.com/";         string 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_payment = "BUYER_PAY";         string notify_url = "http://www.xxx.com/swnet05utf8/Alipay_Notify.aspx";          string return_url = "http://www.xxx.com/swnet05utf8/Alipay_Return.aspx";

ii. 第二步——排序: class=”Apple-converted-space”> 
把这些参数的变量叫作(即技术文档里给来之变量名,以这种方式组成:service=”trade_create_by_buyer”作为同弄错字符串)按自a到z的次第依次排序。以ASP.NET
C#言语代码程序为条例,该功能于ALIPAY.CS类中;以ASP代码中之主次也条例,该功能在alipayto/Alipay_Payto.asp文件被。
iii. 第三步——加密: class=”Apple-converted-space”> 
目前貌似的加密方法是MD5,不论是啊种加密方法,要加密的音讯是设传于支付宝的消息,且是为技术文档中,而无由定义的变量名。对上述排序好之有着参数(不包括网关参数就:string
gateway = “https://www.alipay.com/cooperate/gateway.do?%22 class=”Apple-converted-space”> ;)以巡回的办法,用‘&’字符拼接成一加上串字符串( style=”color: #dc143c;”>这里要注意,所有的参数都是&字符来拼接的,拼接后直接还拼凑安全校验码Key,在次中大家而看,这个key是直加到该字符串后面要并未因此&字符 class=”Apple-converted-space”> ),之后进展加密。得出的加密字符串集存储于sign这个参数中。
iv.
第四步——拼接字符串成URL链接 class=”Apple-converted-space”> 
我们曾经用到了各个参数、参数所属之价值与加密查获的加密字符串,那么手上现在之具备参数信息的格式,应当都是平等组同样组的service=”trade_create_by_buyer”这种格式的字符串,拼接的话,则借助循环的方遍历所有的这种字符串,因为这次的拼凑是如改成URL链接,所以之前败以外之网关gaetway和加密列参数sig
n_type也还见面吃拼接进来,那么,连接的字符则用大家所熟知的字符’&’,就这样得出一个圆的URL链接地址,如:

https://www.alipay.com/cooperate/gateway.do?s...3d199ba&sign_type=MD5

拖欠链接来自支付宝官的技艺文档“标准实物双接口技术文档” style=”color: #a0522d;”>v. 第五步——自动跳转 class=”Apple-converted-space”> 
第四步着早已运算得出的URL链接字符串,我们则使为该存起来,那么在起来的方式就是——用程序调用它,也就是是所谓的页面自动跳转。这样虽可知超过到支付宝的合法收银台页面。
style=”color: #dc143c;”>可以说,现在一度打响之将支付宝接口融合上了大家好之网站被,且会采取支付宝来开展给付了。 class=”Apple-converted-space”>  style=”color: blue;”>b)
通知返回部分原理 i.
专业术语 
通知返回是简单个页面,即传送给支付宝时的notify_url参数所对应之页面文件(asp.net的凡Alipay_Notify.aspx、asp的是Alipay_Notify.asp)称之为通知页,传递
给支付宝时的return_url参数所对应之页面文件(asp.net的凡Alipay_Return.aspx、asp的是return_Alipay_Notify.asp)称之为返回页。
ii. 通知返回原理 class=”Apple-converted-space”>  style=”color: #a0522d;”>1.
先是步——验证是否是支付宝服务器发来的伸手: class=”Apple-converted-space”>  a) 以asp程序代码为例:

alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?" alipayNotifyURL = alipayNotifyURL &"partner=" & partner & "&notify_id=" & request("notify_id")         Set Retrieval = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")     Retrieval.setOption 2, 13056      Retrieval.open "GET", alipayNotifyURL, False, "", ""      Retrieval.send()     ResponseTxt = Retrieval.ResponseText         Set Retrieval = Nothing

落的就算是ResponseTxt的值,这是下边的步骤要用到之。 b) 以asp.net
C#程序代码为条例:

//获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求     public String Get_Http(String a_strUrl, int timeout)     {         string strResult;         try         {             HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(a_strUrl);             myReq.Timeout = timeout;             HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();             Stream myStream = HttpWResp.GetResponseStream();             StreamReader sr = new StreamReader(myStream, Encoding.Default);             StringBuilder strBuilder = new StringBuilder();             while (-1 != sr.Peek())             {                 strBuilder.Append(sr.ReadLine());             }            strResult = strBuilder.ToString();         }         catch (Exception exp)         {            strResult = "错误:" + exp.Message;         }        return strResult;}

调用部分:

string alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?service=notify_verify";         string partner = "2088************";        alipayNotifyURL = alipayNotifyURL + "&partner=" + partner + "&notify_id=" + Request.Form["notify_id"];        //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的         string responseTxt = Get_Http(alipayNotifyURL, 120000);

取的虽是ResponseTxt的值,这是下面的步调要为此到的。 style=”color: #a0522d;”>2. 次之步——排序: class=”Apple-converted-space”> 
该部分的排序的法则同“接入部分”的原理“排序步骤”一样, style=”color: #dc143c;”>值得注意的是 class=”Apple-converted-space”> ,这里的参数是支付宝通知返回时,传回到的订单信息的各种参数和价值。

  1. 其三步——加密: class=”Apple-converted-space”> 
    该有的加密原理及“接入部分”的规律“加密步骤”一样,依然值得注意的一对是加密的参数信息,这些参数信息是来自上面一样步骤排序好后的参数拼接起来的字符串来加密的。
  2. 季步——判断: class=”Apple-converted-space”> 
    上面我们有获取加密的结果(命名也mysign吧)、检验是不是是开宝发来的信之不利ResponseTxt、以及经过POST或GET的章程取得的sign参数的价,那么这论断的意义就是是打招呼返回里极其着重
    的一部分了,因为其是来考查下面的程序是否履行我们的数额处理的。如何判断也?各语言程序代码中,都是管加密得出的结果mysign与于支付宝那或取得的sign的价进行比较,并且还要让reponseTxt这个的
    值要等true,这样才达到验证成功。 style=”color: #dc143c;”>值得注意的是 class=”Apple-converted-space”> ,大家还发出相逢了这种从,支付有就是属抱部分确实是抓好了,但怎么无法与支付宝的贸易信息并,出现的题材不怕于这个论断及从未有过成,下面的第五有的则会详细说明。
    5.
    第五步——自身网站的数额处理 class=”Apple-converted-space”> 
    终于看清成功了,程序已经实行到了这边。各语言程序代码的这块地方的注释都写在“更新自己数据库的订单语句”或是“这里可以指定你待展示的始末”。如字面上的意思,这块地方就是是要是我们大家来针对这笔交易信息进行多次
    据处理,即编写程序。这个说法大致专业了接触,简单好掌握的说法便是,支付宝的交易得逞的消息和其他的满交易状态,自己之网站为会针对这笔订单同步起来,即开宝里这笔订单的贸易状态是“买家已经会等卖家发货”,
    那么友好网站里亮的这笔状态为以如此,那么就是应于马上中写下诸如:

if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS")//   判断支付状态_买家付款成功,等待卖家发货(文档中有枚举表可以参考)                {                 //更新自己数据库的订单语句,请自己填写一下                 string strOrderNO = Request.Form["out_trade_no"];//订单号                 string strPrice = Request.Form["price"];//金额                 string sql = "update order_table set order_status = ‘买家已付款,等待卖家发货’ where order_no = " + strOrderNO;                 Update(sql);             }

当数据库处理代码。 iii.
存在的界别  1.
豪门仔细阅读代码不难察觉,在通告页中程序运行时,获取参数的办法是为此POST方式,而回到页中程序运行时,获取参数的主意是因此GET方式。由此可知一些主干的音——返回页传递回来的参数信息是储存于URL链接
里之,而通知页的参数信息是勿以URL链接里,也能从中推断出双方在力量及之别。 class=”Apple-converted-space”>  2.
豪门只是看通知页面比返回页中多一个环,那便是Response.Write(“success”);
作用及差之事无巨细说明,大家好拘留下的季片。

 

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”color: red;”>三、
参数

首先大家发出个问号,技术文档中的输入参数列表中为来了诸多参数,而目前拿到的代码里独自写了同片段参数来进展传递信息,这究竟是干什么?那么我们先带在这个疑问向下看。
style=”color: red;”>以下讨论的参数不包含网关gateway、加密参数sign、加密类型sign_type,因为这些都是得的。
以实物标准双接口为例,可拿参数作为几单作用部分组成 style=”color: blue;”>a) 不可少的参数 i. style=”color: red;”>service服务参数,这个是故来分别是接口是为此底呦接口,所以绝对免克改。
ii. style=”color: red;”>partner合作身份者ID、key安全校验码或如私钥这等同组参数是签合同生效后才会用的交,partner是来鉴别是孰企业与支付宝签约,而此Key它如同钥匙般相当重要。
iii. style=”color: red;”>seller_email收款人支付宝账号,支付宝中来手机种类、电子邮件类型的支付宝账号是还可以为此这个参数的。
iv. style=”color: red;”>subject在支付宝的收银台里是直跟商品名称关联在齐的,但是说之更准确些的话,这个参数是这笔交易的称谓,因为这笔交易不肯定就买同样件货物。它的意不仅是于收银台里可清晰的来得出来,而且在支付宝的账
户的交易明细的列表里,它吧是败在第一排列,由这个而想出,它有财务对账、作为市查询的筛选标准相当很多意。非常主要。
v. style=”color: red;”>out_trade_no技术文档中让出底是商人交易号(确保在商户系统受到唯一),顾名思义这就算是咱大家自己网站的订单系统里的唯一订单号,而休支付宝的。这里要强调的,这个订单号要得是绝无仅有的,如何唯一法?自己网站
里订单系统的订单号是纯属唯一的吧,支付宝要求的绝无仅有就是此,为什么非要是唯一?支付宝会根据订单号来判断这笔订单对于这个公司的兼具市面临是否是绝无仅有的。
vi. style=”color: red;”>price金额、quantity数量,这里安装有有限种植方法相同种商品的单价金额,多只数据(即超过等于1)。另种是数也1,金额表示总数,甚至是带有了运费。为什么大部分之客户一旦这么做?原因十分粗略,第一,购物车里的事物不必然是仅仅的
一码或者基本上码相同的货,那么为货品装金额时就生出紧了,因此这里用总额是极端好之,而数据就是默认为1。第二,运费的设置重重客户是与各家快递企业签署、每件物品的快递费也不尽相同,为了省麻烦,在先后计算的
时候干脆拿运费呢加以进去。因此我们只待牢记一码事,这个price的金额就是所谓的总数了。
vii. style=”color: red;”>payment_type支付类,没什么可说的第一手写成1,无需改。
viii. style=”color: red;”>物流信息logistics_type、logistics_fee、logistics_payment这是一样组物流信息,实物标准双接口中必得最少发生一致组物流信息,也就算是负当时三只参数了,最多可发三组,哪三组也?logistics_type_1、logistics_fee_1、logistics_paymen
t_1(第二组);logistics_type_2、logistics_fee_2、logistics_payment_2(第三组)。后少组为可选取项。一般前面来说Price已经是总额了还含了运费,那
么这里物流运费就一直设置成0即可,即logistics_fee=”0”,其他两独的信息可参看技术文档来填写,因为一旦起技术文档中之枚举列表里来选择,所以不用可乱填写。
b) 可加的可行参数 i. style=”color: red;”>物流信息太多三组,最少一组,这曾于前边有有提及,这里就不再细说。
ii. style=”color: red;”>_input_charset,当是UTF-8的编码格式时须得用到且无同意为空的,即_input_charset=”utf-8”
iii. style=”color: red;”>notify_url、return_url,return_url代表支付完毕后可自行从支付宝的法定页面跳反回来,notify_url这个是防备调单的首选最佳工具。
iv. style=”color: red;”>body,在出宝收银台中之货色描述里展示,如果subject是订单名称的话,那么是body则太纯粹之称呼订单描述,其实个人认为它们当做备注之类的更适宜。很多人还很烦支付宝怎么非能够像其它铺面
的接口有只自定义之参数来存放在客户想只要的事物,其实body也颇具类似之这种效应,它不只容纳的消息是所有参数里最为充分之,而且要因为字符串的形式储存,个人认为她事实上也是老主要的不行少的参数有吧。
v. style=”color: red;”>discount折扣,顾名思义如果小于0,则是因此本金额Price*quantity+(discount),实际金额便比原来总额多少了。现在多少商户有支付宝的优惠卷,而优惠卷的用为是当这参数中反映,具体做法与眼前
面无异。 vi. style=”color: red;”>show_url商品展示地方,这个链接的图是在开发宝收银台的货链接旁边发生个下划线“详情”的链接,而点链接弹出之一个新页面就是这个商品展示地方的页面。
vii. style=”color: red;”>收货信息receive_name、receive_address、receive_zip、receive_phone、receive_mobile,这些消息要否装也传送给支付宝的参数有的讲话,那么以开宝收银台点选下一步之时光,本该出现的填写收货信息页面不见踪迹,而直白跨越到了收货信息页面的下一个页面去矣。很多商贩当融洽的网站的购物
流程中都生一个填写收货信息的选取项卡,为了节约到开宝收银台中还要填一糟收货信息的劳动,那么这些收货信息之参数就派上用场了。值得注意的凡,收货人姓名与地点是毫无疑问填项,不然还是会起收货信息填写页。
viii. style=”color: red;”>buyer_email买家支付宝账号,这个装置好后呈现的效益就是,原本是空的支付宝账号的输入框此时曾闹只支付宝账号在其中放。
c) 剩下的参数无需理会
一切实物标准双接口的参数介绍完,那么任何接口的参数还要介绍为?大家从地方分析得出的物比技术文档的参数列表是否观看什么来了?
style=”font-size: 10pt;”>1、
参数列表的末尾一列被“可空”,N代表不容许为空,Y代表允许吗空,结合地方的不足缺失参数和增加的有用参数来进行比较,不难发现,不可少的参数都是为N的。
2、
有些也Y的参数有同一组,例如buyer_email、buyer_id,凡是遇到这种的貌似还是次可是选取同吗只是还不选择,或是二得择同。举例说明:二得选同之凡seller_email、seller_id,二选项同底
是buyer_email、buyer_id。
style=”font-size: 10pt;”>所有的接口的参数如此解析就是能够判断有怎样是任重而道远参数哪些可不要,结合技术文档与程序接口来研究就会一目了然。

 

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”color: red;”>季、
通知返回
style=”font-size: medium;”>a) 返回页
传递给开宝时的return_url参数所对应之页面文件。 具备的特性: style=”color: #a0522d;”>1、支付接口中买家的选购流程已经走至出宝里且支付宝提示支付成功时,页面会自动跳反回自己网站的这个页面里来。
2、同步的,无时差 3、获得参数的办法是为此get方式赢得。
4、不论跳反回来程序判断是真的还是假(if(sign = mysign and responseTxt =
true))只跳反回来一软,不重。
5、这个并无是支付宝服务器调用了该页面,而是通过和重组拼接各参数形成的URL链接原理等与,拼接出来的URL链接,之后先后上举行活动跳转。
6、基于5之缘由,该页面的程序调试可不要在服务器上而是本机上调节、运行。 class=”Apple-converted-space”>  style=”color: blue;”>b)
通知页 传递给开发宝时的notify_url参数所对应的页面文件
具备的习性: style=”color: #a0522d;”>1、这个通知页就是于支付宝调用才会启动之。
2、服务器中的竞相,不像返回页肉眼可以看出,这个是看不到的。
3、获得参数的章程是故POST方式获取。
4、支付宝中的该笔交易是,且该笔交易状态产生了改观,就会见被调用。
5、被调用程序判断(if(sign = mysign and responseTxt =
true)),若我们和好当该论断中来开程序编制,成功则不再为调用,不成功则会频繁给调用。
6、异步的,第一浅收受订单信息(以下且称之为“通知”)是跟归页近乎等以及或雷同的联合时间,在认清不成功之情状下,会接收第二不好第三不良顶次数的通报,时间间隔由初次的一两分钟,到尾的几乎独小时。失效时是4
8钟头。 7、基于6底因由,该页面的程序调试必须在服务器上调节、运行。
8、程序编制时必采取程序执行成功,才写页面response.Write(“success”);,不成功则刻画页面response.Write(“fail”);
支付宝根据success来判断是否如双重又发送通知。
9、该页面的Html页面被得是空白、无其他Html标签、无其它空格。 class=”Apple-converted-space”> 
以C# ASP.NET实物标准双接口代码为条例:

if (mysign == sign && responseTxt == "true")          {             if (Request.Form["trade_status"] == "WAIT_BUYER_PAY")//   判断支付状态_等待买家付款(文档中有枚举表可以参考)                         {                 //更新自己数据库的订单语句,请自己填写一下             }             else if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS")//   判断支付状态_买家付款成功,等待卖家发货(文档中有枚举表可以参考)                {                 //更新自己数据库的订单语句,请自己填写一下                 string strOrderNO = Request.Form["out_trade_no"];//订单号                 string strPrice = Request.Form["price"];//金额                 string sql = "update order_table set order_status = '买家已付款,等待卖家发货' where order_no = @out_trade_no";                 Update(sql,para);             }             else if (Request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS")//   判断支付状态_卖家已发货等待买家确认(文档中有枚举表可以参考)                {                 //更新自己数据库的订单语句,请自己填写一下                 string strOrderNO = Request.Form["out_trade_no"];//订单号                 string strPrice = Request.Form["price"];//金额                 string sql = "update order_table set order_status = '卖家已发货,等待买家确认收货' where order_no = @out_trade_no";                 Update(sql, para);             }             else if (Request.Form["trade_status"] == "TRADE_FINISHED")//   判断支付状态_交易成功结束(文档中有枚举表可以参考)                {                 //更新自己数据库的订单语句,请自己填写一下                 string strOrderNO = Request.Form["out_trade_no"];//订单号                 string strPrice = Request.Form["price"];//金额                 string sql = "update order_table set order_status = '交易成功' where order_no = @out_trade_no";                 Update(sql, para);             }             else             {                 //更新自己数据库的订单语句,请自己填写一下             }            Response.Write("success");         }         else         {             Response.Write("fail");         }

c) 在支付宝的好多接口中,不是享有的接口都有所通知页和归页的。
有的接口只有回页;有的接口有通知页且用XML格式的内容展示在眼前页面被;有的没通页也绝非回到页仅仅只为XML格式的情节展示在时下页面被。所以,我们而基于各国接口的技巧文档与程序实例来举行相应的数据处
理。 d)
大家这里在一个问号,一般大家的做法还是管数据库更新些在返页中,但是洋洋景下冒出了订单不同步即掉就现象。这是为何?
答:返回页是眼下页面自动跳转的,这则跳反的反应速度不错,但人数之手动关闭该页面操作绝对可以要的于没跳转回来之前便闭合了拖欠页面,此时本来该数据库更新的程序并没有叫启动,这样一直促成了掉单,所以一般大商
户, style=”color: red;”>尤其是网络游戏行业之哪怕经常到款充值的技术做法是:返回页中发生订单处理程序,通知页中也发生,当回页中之订单没做过处理时,通知页中之数处理程序便启动;这样即可近乎100%化解掉单题材(还有种掉单原因是豪门温馨之服务器出现问题,比如MS3XML.DLL问题,这个题目由来尚无啊得化解的方式,只能重装或是更换服务器,也有服务器因为中毒才招致的)。

 

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”color: red;”>五、
调试

接抱部分善了,通知返回部分吗抓好了,那么开调试吧。
调试也分为两深组成部分来举行。 a)
部分网站因此了框架模式frame,但此并无适用支付宝的接口程序,因此 style=”color: red;”>绝对不能够将支付宝的接口页面置于整个网站的框架之下。
b)
确定好要就此POST还是GET方式来传递参数,二者不克混用。由于小网站面临无肯定只有一个接口入口,所以一切网站都须保持一致性,不克以此接口用POST,那个接口用GET,这样直接招后续出现同样多样连查找
原因还尽艰苦的景。 c) style=”color: red;”>接抱部分的调剂工作,则是输入支付宝要求的格式的值,如subject、body的值不允发生越轨字符、金额格式必须是多少数点后少位数可能正整数都非是金额格式(即$123.00),以及非常关键之一个尺码,传递的参数要么不传递者参数(即传送的大队人马参数中,这个参数完全不存在),要么是参数不允为空。很多人数在调节时出出现同等系列“调试错误”有大十分的一致有原因就是参
数的安装有问题。 d) 编码格式一定要是肯定还确认, style=”color: red;”>在出时直接出现“调试错误,SIGN不对”只有个别种原因,一是C部分已经涉及的参数的装置问题,另一个便是这个编码格式的问题。编码格式是很重要的,绝对不克是地方用GBK,另个地方因此utf-8。
e)
通过接口走相同糟糕真正的操作,若是支付接口,则运动相同笔真实的市,金额则是0.01首位(支付宝是没有测试环境的,所以要老实的以自己签名的号去运动实交易),不要看格外烦,也休想管这工作交个经理或您的老板娘
来举行,因为它直接涉及及您继承之操作步骤与调节之顺程度。 f)
返回部分以本机电脑及虽可调节了,之前发生涉及不要把开测试工作授自己以外的其他人,这里就是得得充分的求证,不论是啊种语言都负有自己风格的单步监控程序代码的能力, style=”color: red;”>返回部分即使一致步一步监控程序的尽,确保1、是否尽及了“mysign
== sign && responseTxt ==
“true””,这个IF语句的论断;2、是否进入了这讲话里要是非是else里;3、数据库更新程序是否执行成功,而未是卡在不动了;4、数据库更新了后,程序是否动得了。基本出现问题之地方即于首先步,所以无苟
觉得意外为什么掉就? g) style=”color: red;”>通知页的调剂,这个调试就比较累了,首先这支付宝接口就成功还在了服务器上,别人好透过互联网来拓展支付;其次,要把通知页中之“写日记”程序启动起来,日志内容重点记录trade_status、tr
ade_no、out_trade_no、price、sign、mysign、responseTxt等。一般出现的原由依然是“mysign
== sign && responseTxt == “true””这个判断上不吃通过。 style=”color: blue;”>具体检测方法:
1、直接用互联网访问http://www.xxx.com/alipay/notify_url.asp
访问是否会访问获得,且显示”fail”的字眼,其他如空白或是其他程序不当提示等情节,均属于程序执行出错。
2、程序是否尽及,sign=mysgin and responseTxt =
“true”这个论断中,如果履行到此判断时超过到ELSE的判断语句去了,则代表您的接口程序于开时传递的参数信息或是您的编码格式、合作身份者ID与安康校验码的装置有问题。
3、程序已经实行到sign=mysgin and responseTxt =
“true”这个论断中,却尚无实施到response.Write(“success”)这词话,说明您自己编排上的程序代码执行出错,请检查。

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”font-size: large;”>六、
其他
  a)
有些接口,例如支付的接口,是支撑POST或者GET方式传送参数的。 i.
POST传递方式: 这里需要小心的地方是:<form action=” aliay_url”
…>中action的值是网关+编码格式参数,即https://www.alipay.com/cooperate/gateway.do?\_input\_charset=utf-8,GBK的编码格式可以吧:https://www.alipay.com/cooperate/gateway.do?。
ii. GET传递方式:
是用&字符来连接起来的一样加上串URL链接字符串,通过自行跳反不是<form
action=” aliay_url”
…>的法来存放,而是用Response.Redirect(aliay_url)方式来进行跳转。

  1. FAQ文档

支付宝还提供了FAQ文档,如果碰到问题,可以事先查阅:

style=”color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;”> class=”Apple-style-span”
style=”line-height: 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; border-collapse: collapse;”> style=”color: blue;”>集成常见FAQ class=”Apple-converted-space”> (集成错误文档和另外信息): class=”Apple-converted-space”> 合作社工具FAQ.pdf class=”Apple-converted-space”> (391.17 KB)