
支付宝wap开发指南.pdf
15页WAP 支付开发指南 版本 1.02 修订历史 版本号 作者 内容提要 核准人 发布日期 0.1 胡叶军(薛刚) 支付宝 wap 开发指南 0.2 陈枫(炎汐) 新增接口描述、通知部分说明 2009-09-20 0.3 陈枫(炎汐) 修改线上服务器接入地址 2009-11-06 0.4 陈枫(炎汐) 交易创建接口新增out_user 参数与zero_pay 参数 2009-11-26 1.0 丁朗、曹腾 内容梳理修订 2010-09-27 1.01 曹腾 新增 pay_expire 参数 2010-10-28 1.02 曹腾 buyer_account_name 参数屏蔽 2010-12-27 版权信息版权信息 本手册中所有的信息为支付宝公司提供未经过支付宝公司书面同意,接收本手册的人不能复制,公开,泄露手册的部分或全部的内容 目录目录 1. 前言........................................................................................................................................................................... 3 2. 接口介绍 .................................................................................................................................................................. 3 3. 接口详细说明 .......................................................................................................................................................... 4 3.1. 交易创建(alipay.wap.trade.create.direct) ................................................................................... 4 3.2. 授权并执行(alipay.wap.auth.authAndExecute) .............................................................................. 5 3.3. 处理支付宝系统通知。
notify_url) ....................................................................................................... 6 4. 附录........................................................................................................................................................................... 8 4.1. 所有参数查询列表 ..................................................................................................................................... 8 4.2. 错误代码列表 ........................................................................................................................................... 11 4.3. 签名规范 .................................................................................................................................................... 11 1. 前言前言 1. 目标 该文档目的是帮助商户 WAP 应用开发人员准确、快速完成支付宝接口集成。
2. 面向读者 本文档主要面向接入支付宝 WAP 支付的外部商户的开发人员 3. 术语 名称 说明 外部商户、合作伙伴 和支付宝进行业务合作的商户 合作伙伴 ID 签约后,为商家自动分配的唯一编号 密钥信息 主要用来对 request 和 response 中数据做签名、 验签、 解密 之用, 自助签约系统为每个商户都配置了三种类型密钥信息: MD5、RSA、DSA. 商户可根据本接口的支持种类择一用之 无线商户签约平台 可供商户 web 页面访问,集签约、开通接口、获取资料信息 等功能于一体的系统URL: 4. 操作流程 从商户签约平台中获取: 合作伙伴 ID(partnerId) 和 密钥信息 根据开发指南集成支付宝接口可参考已发布官方 Demo) 5. 商户交流平台 商户如果在接入过程中碰到疑问,可以通过以下形式进行咨询,支付宝工作人员会给予答复 支付宝官方论坛: 2. 接口介绍接口介绍 1. 商户开发内容描述 步骤一 : 调用接口 alipay.wap.trade.create.direct, 提交订单信息,获取 token 串 步骤二 : 调用接口 alipay.wap.auth.authAndExecute, 提交 token 串,跳转到支付宝收银台。
步骤三 : 处理支付宝系统通知详见 2. 交互模式(调用形式) 基于 http/https 的 请求/响应模式建议使用 http 请求已适配更多机型 http 请求地址: https 请求地址: :443/service/rest.htm 3. 接口详细说明接口详细说明 3.1. 交易创建(交易创建(alipay.wap.trade.create.direct)) 该接口由支付宝提供给商户调用 3.2.1. 请求样例(request) 为方便展示故写成 GET 形式,正式请求时必须使用 POST 形式,以避免请求内容过长而丢失信息 以下样例分为三类参数(下划线参数为最外层参数, 共 8 个 只有 req_data 参数值中包含内层 xml 标签参数 ): 蓝色参数---- 表示该参数为必传,值可自定义详见参数列表) 红色参数---- 表示该参数非必传详见参数列表) 绿色参数---- 表示该参数为必传,并且参数值须和示例一致详见参数列表) 样例 String sign = DigestUtils.md5Hex(content.getBytes(“utf-8“)); 验签时商户只需用 response 中的参数签名后和 sign 值比较,一致说明验签成功。
4.3.6. RSA 算法签名 定义:RSA 是一种非对称的签名算法,即签名密钥(私钥)与验签名密钥(公钥)是不一样的,私钥用于签名,公钥用于验签名使用这种算法签名在起到防数据篡改功能的同时,还可以起到防抵赖的作用,因为私钥只有签名者知道 用集成文档压缩包中 openssl 工具生成一套 RSA 公私钥登录 无线商户签约平台,把公钥用txt 文件上传至我的产品>>密钥管理>>安全校验码(RSA)>>商户公钥 并获取 安全校验码(RSA)>>支付宝公钥 RSA 密钥生成命令: 生成 RSA 私钥 openssl genrsa -out rsa_private_key.pem 1024 生成 RSA 公钥 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 将 RSA 私钥转换成 PKCS8 格式 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 生成 sign 值的示例代码(非真实代码仅供参考): content: 按 4.3.2 生成。
privateKey: openssl 生成的私钥 public String sign(String content, String privateKey) throws Exception { java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance(“RSA“); byte[] encodedKey = StreamUtil.readText(new ByteArrayInputStream( privateKey.getBytes())).getBytes(); // 先base64解码 encodedKey = Base64.decodeBase64(encodedKey); java.security.PrivateKey prikey = keyFactory.generatePrivate(new java.security.spec.PKCS8EncodedKeySpec(encodedKey)); java.security.Signature signature = java.security.Signature.getInstance(“SHA1WithRSA“); signature.initSign(prikey); signature.update(content.getBytes(“utf-8“)); byte[] signBytes = signature.sign(); String sign = new String(Base64.encodeBase64(signBytes)); return sign; } 验签 JAVA 示例代码(非真实代码仅供参考): content: 按4.3.2 或 4.3.3 生成。
sign : 支付宝返回给商户的sign值 publicKey :登录无线商户签约平台获取 安全校验码(RSA)>>支付宝公钥 public boolean verify(String content, String sign, String publicKey) throws Exception { java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance(“RSA“); StringWriter writer = n。
