本节主要描写叙述支付宝手机站点支付,开发网址:https://b.alipay.com/order/productDetail.htm?productId=2013080604609688,光找这个找了半天,呵呵web
在网页中部有四个标签页,选择“技术集成”,下载集成开发包,里面有相关的技术文档和三种语言的代码演示样例。代码演示样例中差点儿集成了所有的代码逻辑。client及服务端仅仅需要将代码拷入本身的项目就能够。chrome
手机网页支付产品由手机网页即时到帐受权接口(alipay.wap.trade.create.direct)、手机网页即时到帐交易接口(alipay.wap.auth.authandexecute)两个接口组成。浏览器
必须先调用手机网页即时到帐受权接口(alipay.wap.trade.create.direct)得到受权令牌。再调用手机网页即时到帐交易接口(alipay.wap.auth.authandexecute)完毕付款。安全
在手机网页即时到帐受权接口(alipay.wap.trade.create.direct)中,提交方式仅支持POST。在手机网页即时到帐交易接口(alipay.wap.auth.authandexecute)中。提交方式仅支持GET,在webview中加载交易接口的url和请求參数即会转入支付宝网页的支付界面。具体接口和请求參数的说明和使用在开发文档上已经介绍的很是具体了。假设还有不明确的地方可以直接參考代码Demo,Java演示样例可以直接导入到Eclipse中执行起来,可以直接演示整个支付流程。需要注意的地方就是,因为是手机端网页接入,在电脑上用浏览器演示的时候,会提示"为保障用户帐户安全,禁止非手机訪问",我用的是chrome浏览器。直接装上改动uagent的插件,更改成Android或其余clientua就可使用。
异步
支付宝处理完请求后,分两种方式返回处理结果。post
一种是页面跳转同步通知。一种为server异步通知。如下主要讲一下这两种方式的不一样。加密
返回页面(return_url文件)工做原理 (同步通知)
即:商户系统请求/支付宝响应交互模式
1、 构造请求数据
商户经过提供的接口代码演示样例,经过代码演示样例的规则,程序构造与运算获得sign加密结果以及构造后的请求给支付宝的数据集合。GET方式下是URL地址连接,POST方式下是支付宝网关地址及參数集合。
2、 发送请求数据
把构造完毕的数据集合。经过页面连接跳转或表单提交的方式传递给支付宝。
3、 请求的交易
支付宝获得这些集合后,会先作安全校验等验证。一系列验证经过后便会处理完毕此次发送过来的数据请求。
4、 返回对应数据
支付宝对处理完毕的交易,程序上本身主动进行又一次构形成URL地址连接,以本身主动跳转的方式跳回商家在请求时设定好的页面路径地址(參数return_url,商家没设定。则不会跳回)。url
5、 对对应的数据进行处理
商家的返回页面(參数return_url指定页面文件)获得支付宝返回的数据。把这些数据结合自身站点状况。进行数据处理(如:订单更新)。spa
返回页面(notify_url文件)工做原理 (server异步通知)
即:支付宝主动通知交互模式(支付宝反馈数据)
前提:若要支付宝能主动通知。需商户在请求时设定好通知的页面路径(參数notify_url),且该页面文件全然空白。无不论什么字符。
1、 发起通知
一旦交易状态发生变动(如:买家已付款,等待卖家发货),支付宝便会依据本身主动进行数据处理,并主动调用商户在请求时设定好通知的页面路径(參数notify_url)
2、 对通知数据进行处理
商户站点收到支付宝发送过来的通知数据。把这些数据结合自身站点状况。进行数据处理。如:处理返回页(參数return_url)漏掉的订单。作订单更新,即补单措施。
3、 在页面上输出success
商户站点处理完毕所有的数据处理之后,即程序执行最后,返回写页面“success”这7个字符(页面上仅仅赞成输出success),以表示本身已经成功处理完毕本身的业务。
4、 完毕处理该次通知,再也不发送通知
支付宝获得商户反馈回来的“success”7个字符信息,进行核对与验证,结束这次通知流程。
注意:
假设商户反馈给支付宝的字符不是success这7个字符,支付宝server会不断重发通知,直到超过24小时22分钟。普通状况下 25 小时之内完毕8 次通知(通知的间隔频率一般是:2m,10m,10m,1h,2h,6h,15h)。.net
同步返回(return_url)和异步返回(notify_url)的差异【return_url和notify_url參数必须是两个返回处理文件的绝对路径】?
答:同步返回处理(return_url):是一种可视化的返回,浏览器页面跳转通知,仅仅要支付成功。支付宝经过get方式跳转到这个地址,并且带有參数给这个页面。客户获取信息受到买家操做的影响。假设买家支付完
成后客户server响应比較慢,买家在显示支付宝提示的“即时到帐支付成功“时关闭页面,那么客户站点是获取不到信息,咱们这边称为” 掉单“。
而且这个返回处理是一次性调取,即支付成功后才调取同步返回处理。
异步返回处理(notify_url):它的数据交互是经过server间进行数据交互,必须将其放置在server上(公网)測试,serverpost消息到异步返回处理页面,需要客户技术在异步返回处理页面处理相关的数据处理
,而后每一步操做都要返回给支付宝success(不能包括其它的HTML脚本语言,不可以作页面跳转。)这个返回处理假设集成OK。那么基本不会出现掉单,因为支付宝会在24小时以内分6~10次将订单信息返回
个给客户站点,直到支付宝捕获success。
备注:同步返回处理则会受到买家操做的影响:
假如买家在操做的时候,支付宝完成进入支付宝提示成功页面,这个时候由于server对应比較慢。那么买家有可能会关闭这个页面。这个时候您们就会接受不到支付宝返回的信息。还有有些网银支付后也不会调取支付宝的同步返
回处理页面。这样您在同步作数据处理相同接受不到数据。