简介
沙箱环境是支付宝开放平台为开发者提供的安全低门槛的测试环境,开发者在沙箱环境中调用接口无需具备所需的商业资质,无需绑定和开通产品,同时不会对生产环境中的数据造成任何影响。
合理使用沙箱环境,可以让研发流程与商业流程并行,降低联调资损风险,加速项目的交付。
前提条件
- 已经入驻支付宝开放平台,详情请参见 开发者账号注册。
- 已经创建一个应用,例如小程序应用,详情请参见 小程序应用文档指引。
操作步骤
前端开发过程使用沙箱
步骤一:开发示例小程序
- 打开 小程序开发者工具,基于空白模板创建一个支付宝小程序。
- 使用 线上支付宝APP 扫码登录后,选择需要开发的小程序应用,示例应用为:测试小程序本地开发。
- 建议使用 my.env 的 clientEnv 动态获取支付宝 APP 的环境信息,来决定网络请求接口的目标地址。以 my.request 接口为例,示例如下:
步骤二:下载沙箱支付宝APP并登录
- 安装沙箱支付宝APP 10.3.90.8030及以上版本(如果不是,可以去 沙箱工具 下载)。
- 使用沙箱环境默认分配的商家或者买家账号登录沙箱支付宝APP,请前往 沙箱账号
获取。
说明:
- 沙箱默认创建的应用和线上同步到沙箱的应用,默认都归属到商家账号,买家账号只有访问权限。
- 在使用过程中,建议使用买家账号来模拟客户端用户。
步骤三:使用沙箱支付宝APP调试小程序
- 在小程序开发者工具上,点击真机调试生成调试码。(为了方便沙箱调试,建议取消勾选 小程序自动推送给支付宝 选项)。
- 使用沙箱支付宝 APP 直接扫描调试码,进行调试。
说明:沙箱支付宝 APP 支持在小程序开发者工具上,直接进行支付宝小程序/插件的预发或真机调试,沙箱支付宝 APP 会自动拉取线上环境同步到沙箱环境的小程序/插件包。
后端开发过程使用沙箱
步骤一:获取应用配置和支付宝网关信息
- 从 支付宝开放平台 进入 沙箱控制台
。
- 选择需要调试的应用,获取应用配置信息,包括:APPID、应用私钥、支付宝公钥、支付宝网关信息。
说明:点击公钥模式里面的 查看,可以快速拷贝应用私钥和支付宝公钥。
步骤二:获取产品接入指南
- 以接入 JSAPI支付 为例,在沙箱控制台应用信息下的产品列表,找到 JSAPI支付,点击 查看文档。
- 参考 调试文档 中的示例进行代码开发。
步骤三:开发代码发起调用
- 参考如下示例代码,调用接口 alipay.trade.create 创建交易单。
String APP_ID = "线上应用同步到沙箱后的APPID,该APPID跟线上应用一致"; String APP_PRIVATE_KEY = "沙箱分配的默认应用私钥"; String ALIPAY_PUBLIC_KEY = "沙箱分配的默认支付宝公钥"; String BUYER_ID = "建议使用开发平台默认分配的沙箱账号下面的买家信息"; AlipayClient alipayClient = new DefaultAlipayClient("https://openapi-sandbox.dl.alipaydev.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY,"RSA2"); AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); request.setNotifyUrl(""); JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", "20210817010101003X02"); bizContent.put("total_amount", 0.01); bizContent.put("subject", "测试商品"); bizContent.put("buyer_id", BUYER_ID); bizContent.put("timeout_express", "10m"); bizContent.put("product_code", "JSAPI_PAY"); request.setBizContent(bizContent.toString()); AlipayTradeCreateResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); }
云调用使用沙箱
步骤一:学习云开发,创建云环境
说明:请务必完成云开发中文档 快速入门、 云调用、 IDE使用 中的使用和学习。
- 进入 小程序云环境管理
,点击 新建环境,完成云环境的创建。
步骤二:打开沙箱云调用开关,开发支持云调用的云函数
- 进入 环境管理 > 云调用,打开 沙箱云调用能力开关。
说明:
- 开放接口服务的开关和沙箱云调用能力的开关相互独立互不影响。
- 沙箱云调用能力开关 打开后,用户可以直接调用沙箱环境支持的 OPENAPI 接口,不需要进行接口密钥授权。
- 新建云函数。例如调用沙箱环境的 alipay.trade.create 接口,注意配置
sandbox:true
标记。
index.js 示例代码
const cloud = require('@alipay/faas-server-sdk'); cloud.init(); exports.main = async (event, context) => { const res = await cloud .openapi({ sandbox:true }) // 当存在{ sandbox:true }标记时,表示该openapi接口调用沙箱环境 .alipayTradeCreate.request({ biz_content: { out_trade_no: '20210817010101003X23', // 订单外部交易号,关联商家系统的订单号 total_amount: 0.01, subject: '沙箱测试商品', buyer_id: '2088622997162666', // 付钱的用户id,请使用沙箱环境默认分配给你的买家UID product_code: 'JSAPI_PAY', }, }); console.log('云调用沙箱结果:', res); return { res, nodeVersion: process.version, runtimeVersion: process.env['runtime-version'] } };
package.json 示例代码
{ "name": "testOpenAPI", "version": "1.0.0", "description": "", "main": "index.js", "scripts": {}, "author": "", "license": "ISC", "dependencies": { "@alipay/faas-server-sdk": "1.1.13-alpha.1" } }
- 发布 接口,并点击 测试,发起接口调用。
步骤三:IDE 关联云环境,调用云函数
- 打开小程序开发者工具,以小程序云开发示例创建项目,并且使用线上支付宝 APP 扫描登录 IDE。
- 点击 真机调试,使用 沙箱支付宝APP 说明:在 IDE 上的调试过程,建议参考小程序云的 IDE使用 中的示例代码进行调试。 (注意:沙箱支付宝 APP 版本要求大于等于 10.3.90.8030 版本),扫描进行调试。
后续操作
应用开发配置
配置证书模式
- 点击 启用,打开证书模式。
- 获取调用需要的应用私钥、应用公钥证书、支付宝公钥证书、支付宝根证书。
- 基于证书模式,发起对支付宝网关的调用。
AlipayConfig config = new AlipayConfig(); config.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do"); config.setAppId("发起调用的应用的APPID,例如:2021xxx"); config.setPrivateKey("应用私钥信息"); config.setAlipayPublicCertPath("支付宝公钥证书本地地址,例如:/Users/xx/Downloads/alipayPublicCert.crt"); config.setAppCertPath("应用公钥证书本地地址,例如:/Users/xx/Downloads/appPublicCert.crt"); config.setRootCertPath("支付宝根证书本地地址,例如:/Users/xx/Downloads/alipayRootCert.crt"); config.setCharset("UTF8"); config.setSignType("RSA2"); AlipayClient alipayClient = new DefaultAlipayClient(config); String alipayUserId = "被查询的用户支付宝UID,例如:2088xx" AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest(); AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel(); model.setAlipayUserId(alipayUserId); model.setAccountType("ACCTRANS_ACCOUNT"); request.setBizModel(model); AlipayFundAccountQueryResponse response = alipayClient.certificateExecute(request); if (response.isSuccess()) { System.out.println("调用成功"); } else { System.out.println("调用失败"); }
自定义秘钥/证书
开发者如需自定义密钥/证书信息,可在 开发信息 中选择 自定义密钥。
说明:若开发者没有证书或者密钥对,可查看 常见问题 > 如何获取加签密钥/证书。
WebSocket 长链接接入
在沙箱环境使用 WebSocket 长链接接入需要将消息接口的订阅方式修改为 WebSocket,SDK 配置方式可以参考 WebSocket 长连接接入。
说明:
- 沙箱环境的
serverHost
为openchannel-sandbox.dl.alipaydev.com
。 - 将连接支付宝网关代码修改为:
alipayMsgClient.setConnector(serverHost, false)
。
应用网关配置
应用网关用于接收支付宝沙箱环境的异步通知(对接 From 蚂蚁消息),如创建门店的被动通知。
注意:仅 HTTP 订阅模式的 From 蚂蚁消息才需要配置应用网关,WebSocket 订阅模式的 From 蚂蚁消息无需配置应用网关。
授权回调地址配置
第三方应用授权或获取用户信息中用于接收授权回调信息的地址。使用相关产品时需进行配置:
- 第三方应用授权:授权 URL 中的 redirect_uri 必须与此值相同。
- 获取用户信息:授权 URL 中的 redirect_uri 的域名必须与此值相同(例如:授权回调地址配置:
https://auth.example.com/authCallBack
高亮部分需和授权 URL 相同)。
接口内容加密方式配置
加密后,接口的请求内容和响应内容将会由明文内容变为密文内容,可以提升接口内容传输的安全性。若不设置,则接口内容不会被加密。更多信息请参见 AES 加密说明。
服务器域名白名单配置
小程序如需访问支付宝客户端域外服务,需配置服务器域名白名单(例如 my.request、my.uploadFile)。配置的方法和规格跟线上一致。
H5 域名配置
针对小程序内打开 H5 页面,提供 web-view 组件内嵌,需配置 H5 页面的域名地址。配置的方法和规格跟线上一致。
openURL 配置
针对小程序不能通过 web-view 组件内嵌,提供 openURL 接口在小程序外打开 H5 页面。跟线上配置不同,沙箱控制台的 openURL 配置将在 1 分钟左右自动过审。
SPI开发接入
在沙箱产品列表的已发布产品中添加 SPI 产品。
完成产品添加后点击去开发,进入到 SPI 配置页。
在 API 列表中选择 SPI 接口并点击接入。
配置 SPI 测试地址并保存。
实现所有必须实现的 SPI 接口后,点击上线。
订阅消息
在沙箱应用页面下拉到 消息服务,在 From 平台 和 TO 平台 标签页即可订阅所需监听的消息接口。