文档库 最新最全的文档下载
当前位置:文档库 › windonws RT移动快捷支付接入文档

windonws RT移动快捷支付接入文档

支付宝(中国)网络技术有限公司

Windows RT移动快捷支付接入文档

服务名称:alixpay

版本号:1.0

2013/3/12

支付宝(中国)网络技术有限公司版权所有

目录

1 文档说明 (1)

1.1 功能描述 (1)

1.2 阅读对象 (1)

1.3 业务术语 (1)

1.4 技术服务 (1)

支付宝论坛接口集成专区: (1)

支付宝商户客服热线:0571-******** (2)

2移动快捷支付客户端介绍 (2)

3 接口框架图 (2)

4接入步骤描述 (2)

4.1集成支付宝快捷支付SDK (3)

4.1.1SDK包 (3)

4.1.2客户端支付结果处理 (7)

5请求参数说明 (8)

6客户端返回参数说明 (10)

7服务器异步通知参数说明 (11)

8签名机制:RSA详解 (13)

8.1 RSA和OpenSSL介绍 (13)

8.1.1什么是RSA (13)

8.1.2为什么要用RSA (13)

8.1.3什么是OpenSSL (13)

8.1.4为什么要用OpenSSL (14)

8.2 RSA密钥详解* (14)

8.2.1找到生成RSA密钥工具 (14)

8.2.2生成密钥并获取支付宝公钥 (15)

8.3 RSA签名和验签* (17)

8.3.1 RSA签名 (18)

9建议与意见 (19)

10FAQ (19)

附录版本修改历史 (19)

1 文档说明

1.1 功能描述

移动快捷支付是安装在本地操作系统上的一个程序,主要用来向其它的应用程序提供便捷、安全以及可靠的支付服务。正如操作系统上所提供的其它服务。通过安全支付接口,商户可以安全快捷的通过windows RT客户端收款。

1.2 阅读对象

本文档面向具有一定客户端开发能力,了解客户端的开发和管理人员。

1.3 业务术语

1.4 技术服务

在开发或使用支付宝接口时,产生疑问或出现问题,可点击下面的链接填写表单,提交技术问题,支付宝技术支持人员会主动联系并及时处理。

https://https://www.wendangku.net/doc/1712907871.html,/support/helperApply.htm?action=supportHome

支付宝论坛接口集成专区:

https://www.wendangku.net/doc/1712907871.html,/thread.php?fid=703

在论坛中可以下载接口资料,查找解决方案自主解决问题,或是发帖寻求帮助。

支付宝商户客服热线:0571-********

2 移动快捷支付客户端介绍

快捷支付目的是为众多windows 8应用提供应用内支付的场景,提升用户的支付体验。

3 接口框架图

4 接入步骤描述

独立的第三方调用支付宝快捷支付客户端进行支付需要包含满足:

●集成了支付宝快捷支付SDK的第三方应用;

●安装支付宝快捷支付独立应用;

4.1 集成支付宝快捷支付SDK

4.1.1 SDK包

4.1.1.1 SDK包中修改文件列表:

1、增加文件AlipaySdk.cs

2、修改文件app.xaml.cs

3、修改文件package.appxmanifest

4.1.1.2 应用配置步骤

1.加入app处理事件

首先,打开文件,找到函数OnActivated(如果没有,

增加一个),添加代码AlixPay.AlipayProcessProtRsp(args);

protected override void OnActivated(IActivatedEventArgs args)

{

AlixPay.AlipayProcessProtRsp(args);

//应用自身的业务逻辑处理,如果需要的话

...

}

其次,在文件App.xaml.cs中增加名字空间,添加代码using AlipaySdk;

2.记下package name

首先,打开文件;

其次,切换到Packaging标签页,

找到package name,例如:

Package name为98783a3f-c318-48c2-a573-a1c188a5beea 3.启动支付宝外部商户DEMO程序

4.在如下图页面中,输入package name,就能立即从最下方拿到Protocol

Name;

如图,获取到的Protocol Name:ali1125383067

5.增加协议

打开文件,切换到Declarations标签页,增加一

个协议,将步骤4获取的协议名字(ali1125383067)填写到name栏

4.1.1.3 SDK接口调用说明

Alipay快捷支付在名字空间AlipaySdk中的类AlixPay中提供一个对外接口,第三方可以根据自己的业务需求选择对应的接口完成支付:

1.异步支付接口: public static void AlixpayAsync(string

orderInfo,AlipayCallback callback ,string protocol)

参数:orderInfo是string类型的订单信息,请参看(5.请求参数说明);

Callback是应用接收支付结果的异步回调委托;

Protocol是前述步骤获取到的protocol name,在此处传入;

返回值:无

备注:orderInfo参数传入的值如果和上次调用时相同的话,就可以实现

被中断的支付场景恢复的功能;如果不相同,就被认为是一次新的订单。

如果有支付结果,一定可以从callback中获取到;如果没有获取或者没有等到支付结果,您可以传入相同的orderInfo以恢复上次支付场

景;

建议:建议用户调用时保存orderInfo,便于场景恢复。

AlipayCallback的定义:

public delegate void AlipayCallback(string val);

参数:val的格式请参考客户端参数说明。

2.判断快捷支付程序是否存在的接口。

接口定义:async static void TestFastPayExist(string protocolname,

AlipayCallback callback)

参数:protocolname是调用者应用(外部商户应用)的protocolname,

如何获取protocolname请参考章节3.1.1.2

Callback是应用接收支付结果的异步回调委托;

返回值:无。

功能:如果快捷支付存在,就会调起快捷支付提示用户:支付模块正常,

5秒后返回(用户也可以直接点击“返回”)。5秒(或者点击“返回”)

会自动返回到调用程序。

备注:如果callback中接收到这样的信息:“resultStatus={7100};memo={当

前系统已经安装移动快捷支付应用。}”表明已经安装好移动快捷支付应

用。

●Sample code

参见附件SDK的sample code

4.1.2 客户端支付结果处理

●加入订单支付未知的状态(可以定义状态7000),如果APP收到这个通知,

表明支付宝快捷支付被异常中断,订单结果需要APP自己去同步服务器查询;

●其它状态按照其它平台定义。

●表A-1 系统定义的错误代码表

5 请求参数说明

含义

请求参数是商户在与支付宝客户端进行数据交互时,提供给支付宝客户端的请求数据,以便支付宝客户端根据这些数据进一步处理

列表

说明:

部分参数类型为String,未指明长度范围,表明系统不校验该参数的长度。

subject、body、notify_url 参数的值中,不能存在影响请求或返回的数据结构的特殊字符,如:“””、“&”、“{”、“}”、“+”、“\”等。

样例:

6 客户端返回参数说明

本次操作返回的订

单支付结果数据。字符

串格式,形式一般如下:

partner=""&seller=""&out

_trad

e_no=""&subject=""&bod

y=""

&total_fee=""¬ify_url

=""&s

uccess="true"&sign_type=

"R SA"&sign="xxx" 其中:

&success="true"&sign_ty

p e="RSA"&sign="xxx" 之

前的部分为商户的原始

请求数据,原样返回。

用来标识本次

支付结果(true 或

false)。为

支付宝对本次支付结果

(红色部分)的签

名,商户可以使用签

约时支

付宝提供的公钥进行验

证。

样例:

7服务器异步通知参数说明

含义

支付宝对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。

通知业务数据,xml

格式,请参考“表

6-2 notify_data 参

数说明”。

:根节点

:交易

状态

:交易金

额:商

品名称

:商

户网站唯一订单号

:通知时间

:支付宝交易号

交易当前所处的状态,取值范围:TRADE_FINISHED:表示交易成功完成WAIT_BUYER_PAY:表示等待付款

说明:

本样例仅供参考,实际网关为商户域名。

8签名机制:RSA详解

以下内容加*号为重点

8.1 RSA和OpenSSL介绍

8.1.1什么是RSA

RSA是一种非对称的签名算法,即签名密钥(私钥)与验签密钥(公钥)是不一样的,私钥用于签名,公钥用于验签。

在与支付宝交易中,会有2对公私钥,即商户公私钥,支付宝公钥。

商户公私钥:由商户生成,商户私钥用于对商户发往支付宝的数据签名;商户公钥需要上传至支付宝,当支付宝收到商户发来的数据时用

该公钥验证签名。

支付宝公钥:支付宝提供给商户,当商户收到支付宝发来的数据时,用该公钥验签。

8.1.2为什么要用RSA

使用这种算法可以起到防止数据被篡改的功能,保证支付订单和支付结果不可抵赖(商户私钥只有商户知道)。

8.1.3什么是OpenSSL

一句话概括:OpenSSL是基于众多的密码算法、公钥基础设施标准以及SSL 协议安全开发包。

8.1.4为什么要用OpenSSL

通过OpenSSL生成的签名和内置的算法可以做到跨平台,这样在不同的开发语言中均可以签名和验签。

8.2 RSA密钥详解*

8.2.1找到生成RSA密钥工具

(1)下载开发指南和集成资料,如下图,您能看到此文档说明指南和集成包已

经下载了。

图3- 1 文档下载

(2)解压下载的压缩包(WS_SECURE_PAY),找到并解压

openssl-0.9.8k_WIN32(RSA密钥生成工具).zip工具包

图3- 2 openssl

8.2.2生成密钥并获取支付宝公钥

(1)生成RSA 私钥PEM文件

假设您解压后的目录在C:\alipay目录下,命令行执行”openssl genrsa -out rsa_private_key.pem 1024”命令生成rsa_private_key.pem文件,该文件会生成在C:\alipay\bin文件夹下

图3- 3 商户私钥生成

(2)生成公钥,命令行执行”openssl rsa -in rsa_private_key.pem -pubout -out

rsa_public_key.pem”命令生成rsa_public_key.pem文件,该文件会生成在C:\alipay\bin文件夹下。

(3)将RSA私钥转换成PKCS8格式,命令行执行” openssl pkcs8 -topk8 -inform

PEM -in rsa_private_key.pem -outform PEM –nocrypt”命令得到下图红色方框内的私钥,并COPY出来保管好,在支付的时候需要使用到。

图3- 4 pkcs8转换

上面(2)和(3)生成的公钥和私钥是商户自己的公钥和私钥,将商户的公钥复制到TXT文本文件中,删除文件头”-----BEGIN PUBLIC KEY-----“与文件尾”-----END PUBLIC KEY-----“还有空格、换行,如下图变成一行字符串并保存该TXT文件

图3- 5 公钥格式修改

(4)将该TXT文件提交到支付宝无线签约平台,详细步骤是浏览器访问

https://https://www.wendangku.net/doc/1712907871.html,/index.htm并用签约帐号登录,点击菜单栏”我的产品”,右侧点击”密钥管理”,见下图红色框内

图3- 6 公钥上传

(5)浏览本地TXT文件并上传,并且复制出支付宝公钥保存,见下图

备注:获取支付宝公钥时字符串中含有空格,程序配置中需先把空格删除

图3- 7 支付宝公钥获取

8.3 RSA签名和验签*

建议:签名和验签尽量在商户服务器端进行,同时一些敏感数据(如公私钥等)

也应存储在服务器端,避免可能的安全隐患。

8.3.1 RSA签名

(1) 生成商品订单:

可参考Demo中MainPage.xaml.cs的方法getOrderInfo.

例子:出售商品(subject)“iPhone4”,价格(total_fee)“1”元,外部交易号(out_trade_no)“zzzz”,商品描述(body)为“秒杀”,订单支付完成通知URL(notify_url)为“https://www.wendangku.net/doc/1712907871.html,/index.jsp”则生成如下商品信息字串:

备注:notify_url的值需要进行URLEncode编码。

(4) 对商品信息进行RSA签名

可使用Demo中MainPage.xaml.cs的方法:

public static String rsaEncoding(String content, String privateKey)

String content:代签名字符串(红色部分)

String privateKey:商户私钥(pkcs8转换后的商户私钥)

返回值:签名值(蓝色部分)

备注:notify_url字段传入的值请做url_encode

相关文档