`
mozhenghua
  • 浏览: 324574 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

支付宝api指南

 
阅读更多

1.业务模型分析

通过支付宝提供的Webservice接口,可以调用支付宝(https://www.alipay.com)提供的服务,这些服务在中有详细说明。

在这些服务中,服务类型大致可以分为以下几类:

  1. WebService查询服务:

    通过服务器后台发起一个http请求,然后从服务器上返回一个Xml类型的返回结果。比如,user_query 服务,支付宝id 或者支付宝的账户email通过服务器后台查询一个支付宝会员信息。

  2. 带有页面跳转的交互服务:

    用户在实现一个web功能的过程中需要调用到支付宝的几个web页面作为,服务流程中的一部分。比如,user_authentication服务需要调用支付宝的一个用户认证页面。Custome_sign 需要使用支付的代扣协议签订页面。

    另外,在支付宝协作页面跳转回原页面的时候,需要对参数签名进行验证,或者对notifyId进行验证是否是合法的web回调请求。

2. 业务场景分析

现在支付宝提供的这些服务接口,调用端只能通过查询支付宝提供api文档,通过api文档进行接口开发。

偶在开发口碑卡项目中需要用到user_query,user_authentication,customer_sign等支付宝服务,以前,口碑的业务也有调用过支付宝的接口,于是我就想重用以前其他同学已经写过的调用支付宝服务的代码。结果发现,有很多参数已经写死了,比如key,partnerid,还有sign的算法。所以代码根本没有办法重用,只能ctrl+C加ctrl+V,而且我在开发过程中为了解决参数签名匹配不上的问题搞了很长时间。

所以,我认为应该开发一个类似淘宝TOP平台提供的API代码接口,这个api接口的开发难度比淘宝open api 应该简单,因为,在和支付宝交互的数据结构比较简单。

2.1.Api所要实现的目标

解决参数签名,调用支付宝服务过程中,参数签名的作用是保证用户请求的参数没有被黑客截取篡改参数值,在所有的请求中都会有参数签名。为了代码实现简单,先默认参数签名方式为MD5签名。参数签名应该像面向切面编程一样,在开发一个具体的结果过程中程序员不用关心参数签名,这也是做这个框架的重要意义所在。当初,我照着api文档的时候为了参数签名真是折腾了好长时间,为了避免其他同学重蹈我的覆辙。必须要将参数签名封装成一个模块能够重复调用。

2.2.支持多种字符集

这个API框架能够在多种字符集环境下使用,所以这个框架要能够支持UTF8,GBK等多种环境,只需要简单配置就能切换。

2.3.新功能容易扩充

现在实现的接口还只是支付宝提供的所有web服务中的小部分,但是已经涵盖到了所有前面提到的所有种类的服务(服务器后台请求,协同页面),如果想通过此框架实现其余的页面只需要实现少部分代码就能实现功能。

3. 实现

3.1.整体类图

3.2.核心类

3.2.1 BasicAlipayToolkit

该类是所有支付宝服务的基类,他提供了一些所有服务接口都要调用的方法。

方法有:

  • urlEncode()

    将传输的值进行编码,按照GBK或者UTF8或者其他编码格式进行编码。

  • sign()

    将传输的参数集合进行签名

  • getPartner()

    取得支付宝分配给用户的partnerid

3.2.2.AlipayApply

支付宝的所有web服务都是通过http协议请求发送的,通过这个类可以通过用户设置的一些基本的参数组装出发送给支付宝的http的url,如果当请求是在页面中需要使用标签<form>来发送的话,就可以通过buildSubmitForm方法生成一个html的form表单。

这些方法有:

  •  prepareParamMap()

    将除partner,_input_charset,service参数字段放到map的数据结构中。

  •  buildSubmitForm()

    创建出一个from表单,可以在html页面中使用,用于在想支付宝发起请求。

  •  getPayGateWay()

    取得支付宝请求地址,如https://www.alipay.com/cooperate/gateway.do

  •  buildHref()

    取得向支付宝请求的url。

3.2.3 BasicWebServiceApply

  • getMapResult()

    解析支付宝远端的返回的XML结果,封装成一个pojo对象。

  • getValueElementName()

    设置支付宝返回结果中代表结果值的xml节点名称。

  • createResult()

    创建一个远端结果对象。

  • resultCallback()

    返回一个结果之后设置返回结果对象的值。

3.2.4 Profile,DefaultProfile

支付宝服务请求的用户信息封装,能够取到PartnerId和getGateway,不同的用户需要通过调用。

3.3. 时序图分析

支付宝提供了两种服务,webService和页面协作,根据两种服务类型,选取两个服务分析一下服务的流程。

3.3.1 user_query服务

  1. 单元测试Test启动,调用BasicAlipayToolkit的静态方法setProfile()设置连接需要用到的key,gateway,和partnerid
  2. 调用者设置查询参数,然后调用getAlipayPojo方法,向支付宝发起查询请求。
  3. 支付宝返回查询结果对象AlipayQuery调用getMapResult()生成查询结果
  4. 封装查询结果的过程中先要生成包装查询结果的对象。
  5. 创建查询结果
  6. 根据支付宝返回的结果设置查询结果是否成功
  7. 如果查询有错误的话设置错误编码
  8. 没够成功拿到查询结果,设置查询结果对象的属性值

3.4. 功能说明

3.4.1.支付宝会员登陆验证

用户需要通过支付宝认证用户信息,代码如下:

在页面上打印超链接

在页面上打印一个form表单

当用户在支付宝用户认证之后,跳转到原网站页面,需要取得支付宝会员信息:

注意:在使用该服务api代码必要代码中设置的CharSet需要和当前tomcat URLencode要一致,否则,跳转会原页面会有sign不一致的问题。

3.4.2. 即时到帐

在页面中要发起一个即时到帐的请求,代码如下:

用户在支付宝完成即时到帐功能之后跳转到原页面

3.4.3.CAE代扣协议

用户完成支付宝代扣协议跳转到口碑页面

如果你需要源代码,请点击下载http://sinaurl.cn/h5k2Rz,如果有任何疑问请发邮件,baisui@taobao.com

分享到:
评论

相关推荐

    支付宝API文档

    支付宝API文档是为开发者提供的一份详尽指南,旨在帮助他们集成支付宝在线支付功能到自己的应用或网站中。这份文档通常包含了一系列接口说明、请求参数、响应格式以及实际的示例代码,使得开发者能够理解并有效地...

    手机网站支付开发指南(支付宝API)

    支付宝API是支付宝为开发者提供的一套完整的支付接口,用于在移动设备上实现商品或服务的在线支付功能。本文将深入探讨支付宝API的开发过程,包括C#、PHP和Java等不同编程语言的API使用,以及如何通过源代码示例进行...

    PayPal api & 支付宝API接口开发相关文档实例

    在本文中,我们将深入探讨如何使用PayPal API和支付宝API进行支付接口的开发,主要针对C#编程语言的开发者。这两个支付系统在全球范围内被广泛应用于电子商务和其他在线交易中,为商家提供安全、便捷的支付解决方案...

    支付宝接口集成指南

    《支付宝接口集成指南》 在数字化时代,支付接口的集成是各类互联网应用不可或缺的一部分,而支付宝作为中国最大的第三方支付平台,其接口的集成对于开发者来说至关重要。本文将深入探讨如何进行支付宝接口的集成,...

    支付宝接口集成指南。

    支付宝接口集成指南是针对开发者和网站运营者提供的一份详细文档,旨在帮助他们将支付宝的支付功能无缝地整合到自己的网站或应用中。这涉及到一系列的技术步骤和注意事项,旨在确保安全、高效的在线交易流程。 首先...

    支付宝支付接口demo和API完整

    支付宝即时到账接口是支付宝提供的一种在线支付服务,它允许商家快速、便捷地处理用户的支付请求。这个接口通常用于电商平台、在线服务提供商等需要...不过,实际使用时还需要遵循支付宝的开发指南和规定,确保合规性。

    支付宝接口继承指南,详细教程

    支付宝接口继承指南是一份深入解析如何在开发过程中有效利用支付宝提供的API和服务的详细教程。这份教程旨在帮助开发者理解和实现支付宝接口的集成,从而在自己的应用或网站中添加支付功能。以下是对教程内容的详尽...

    支付宝微信银联支付API调用封装源码

    本资源提供了针对支付宝、微信以及银联这三大主流支付平台的API调用封装源码,旨在帮助开发者快速集成支付功能,提升开发效率。下面我们将详细探讨这些支付API的调用过程以及封装技术。 首先,支付宝支付API调用...

    基于C# MVC开发的WEB API通用框架 附带 微信 支付宝等支付方式集成实例

    对于想要学习或使用这个框架的开发者来说,他们需要了解C#编程、MVC架构、ASP.NET WEB API的基本概念,以及微信支付和支付宝的API文档。通过阅读“使用须知.txt”文件,可以学习如何配置和运行示例,从而更好地掌握...

    支付宝web接口调用

    这是支付宝提供的一系列API接口,允许开发者通过编程方式与其服务进行集成。这些接口通常包括但不限于交易创建、支付、退款、订单查询等,覆盖了电子商务、生活服务等多种应用场景。 在Java环境下,支付宝提供了...

    基于C# MVC开发的WEB API通用框架 附带 微信 支付宝支付集成.rar

    9. **文档编写**:123.docx可能包含项目介绍、使用指南、API参考等,对于开发者理解和使用框架至关重要。 10. **源代码管理**:提供的源代码包可能是使用版本控制系统(如Git)进行管理,确保代码的版本控制和协同...

    支付宝开发文档开发流程解说

    首先,我们要理解支付宝API(应用程序接口)的概念。API是一组预定义的函数,允许开发者通过调用来执行特定的操作,例如发起支付请求、查询交易状态或处理退款。支付宝API提供了丰富的功能,使得商家可以无缝集成...

    taobo开发指南用于支付宝开发

    《淘宝(Taobao)开发指南:深度解析支付宝接口集成》 在互联网支付领域,支付宝作为全球领先的第三方支付平台,其接口开发与集成是许多开发者必须掌握的重要技能。本指南将聚焦于“淘宝(Taobao)开发”,特别是...

    php与支付宝集成的支付程序_8nhu16_支付宝源码_php_

    - PHP通过调用`alipay_service.php`中的方法,向支付宝API发送请求,如生成支付二维码、发起支付请求等。这些请求通常需要签名,以确保数据的安全性。 - 支付宝API响应后,PHP会接收到交易信息,然后根据业务需求...

    支付宝编程接口示例 C#

    本文将深入探讨支付宝API在C#环境下的应用,帮助开发者理解和掌握如何在自己的网站上集成支付宝支付功能。 首先,支付宝提供了丰富的SDK和API文档,包括沙箱环境供开发者测试。C#开发者需要下载适用于.NET平台的...

    php 支付宝支付方法

    2. **配置安全策略**: 支付宝API需要使用公钥和私钥进行RSA2签名,确保数据传输的安全性。你需要在支付宝开放平台下载公钥,并生成自己的私钥,然后将私钥配置到你的PHP环境中。 3. **构建支付请求**: 使用PHP,...

    垃圾分类引导指南支付宝小程序源码.zip

    开发者可以通过支付宝开放的SDK和API,构建出功能丰富的服务场景,满足用户的各种需求。 二、垃圾分类功能 1. 文字识别:小程序能够识别用户输入的文字信息,对垃圾类型进行判断。这种技术基于自然语言处理(NLP)...

    支付宝接口支付宝接口

    支付宝提供了丰富的API文档,详细介绍了各个接口的调用方式、参数设置和返回格式。常见的接口有: 1. 支付接口:包括即时到账、担保交易、花呗分期等,用于处理用户的支付请求,商家在接收到订单后调用此接口,引导...

    支付宝接口支付宝接口源代码

    支付宝接口是支付宝为开发者提供的一系列API,用于集成支付宝支付、账户管理、营销活动等多种功能。这些源代码通常包括...对于初学者,可以通过官方文档、开发指南以及社区资源来学习和掌握支付宝接口的使用技巧。

Global site tag (gtag.js) - Google Analytics