本文介绍如何配置小程序模板的客户端和服务端的开发环境,以及小程序模板的调试方法。
产品绑定
支付宝为满足开发者的业务诉求,将支付宝的各项业务能力以接口的形式开放,完成开发者的应用与支付宝服务端的交互,最终实现业务逻辑。
在第三方应用中绑定产品(例如,当面付、花呗分期等)后,通过小程序模板实例化的商家小程序就可以获取支付宝提供的相关产品权限。
- 登录 ,在第三方应用详情页 > 产品绑定,点击 绑定产品,添加小程序模板需使用到的开放能力。
说明:必须在第三方应用的产品列表添加 服务市场基础包,否则无法正常使用服务市场相关功能。
- 若产品是 需开通 的,服务商需开通相关产品,才能在生产环境调试时正常使用产品,服务商开通产品的流程和商家开通产品的流程一致,可查看 开通产品。
- 某些产品(例如 获取会员手机号)需要获取用户敏感信息(例如 手机号、姓名、生日等)时,商家必须先申请获取用户信息的权限。
- 模板开发模式中,服务商需先为小程序模板申请获取用户信息的权限,在第三方应用详情页 > 产品绑定 的产品列表,选择对应产品,点击 代申请用户信息 按钮,选择小程序模板进行申请。
- 申请用户信息后需配置小程序隐私政策,可查看 小程序隐私政策。
代码开发
客户端
客户端研发,与普通自研小程序相同,需下载并安装 小程序开发者工具(简称 ide)的最新版本,在 ide 中开发客户端代码,可查看 开发文档。
注意:登录 ide 后,需选择小程序模板进行开发。
服务端
服务端研发,需下载对应语言版本的 开放平台服务端 sdk 并引入开发工程。
按照 小程序场景开放能力 介绍,进行相关 open api 调用,实现业务逻辑。
注意:
- 构建 alipayclient 时,应传入第三方应用的 appid、密钥。
alipayconfig alipayconfig = new alipayconfig(); // 设置网关地址 string gateway = null; alipayconfig.setserverurl(gateway); // 设置第三方应用 appid string app_id = null; alipayconfig.setappid(app_id); // 设置应用私钥 string private_key = null; alipayconfig.setprivatekey(private_key); // 设置应用公钥证书路径 string app_cert_path = null; alipayconfig.setappcertpath(app_cert_path); // 设置支付宝公钥证书路径 string alipay_cert_path = null; alipayconfig.setalipaypubliccertpath(alipay_cert_path); // 设置支付宝根证书路径 string alipay_root_cert_path = null; alipayconfig.setrootcertpath(alipay_root_cert_path); // 设置请求格式,固定值json alipayconfig.setformat("json"); // 设置字符集 string charset = null; alipayconfig.setcharset(charset); // 设置签名类型 string sign_type = null; alipayconfig.setsigntype(sign_type); // 设置加密类型 alipayconfig.setencrypttype("aes"); // 设置 aes 密钥 string encryp_key = null; alipayconfig.setencryptkey(encryp_key); // 构造client defaultalipayclient alipayclient = new defaultalipayclient(alipayconfig);
- 第三方应用代小程序模板调用接口,需在 request 中传入模板授权第三方应用的 app_auth_token,授权方式可查看下方 将模板授权给第三方应用。
request.putothertextparam("app_auth_token", "201903bb61c87d68fee1456cac3bb65b6d515d88");
下方以第三方应用代小程序模板调用获取支付宝会员标识(user_id)接口为例,演示调用接口的方法,获取支付宝会员标识接口参数说明,可查看 alipay.system.oauth.token(换取授权访问令牌)。
java 示例代码
alipayconfig alipayconfig = new alipayconfig(); alipayconfig.setserverurl(gateway); alipayconfig.setappid(app_id); //第三方应用appid alipayconfig.setprivatekey(private_key); alipayconfig.setappcertpath(app_cert_path); alipayconfig.setalipaypubliccertpath(alipay_cert_path); alipayconfig.setrootcertpath(alipay_root_cert_path); alipayconfig.setformat("json"); alipayconfig.setcharset(charset); alipayconfig.setsigntype(sign_type); alipayconfig.setencrypttype("aes"); alipayconfig.setencryptkey(encryp_key); defaultalipayclient alipayclient = new defaultalipayclient(alipayconfig); alipaysystemoauthtokenrequest request = new alipaysystemoauthtokenrequest(); request.putothertextparam("app_auth_token", "201903bb61c87d68fee1456cac3bb65b6d515d88"); //第三方应用代小程序模板调用接口必须传入 app_auth_tokenrequest.setgranttype("authorization_code"); request.setcode("4b203fe6c11548bcabd8da5bb087a83b"); alipaysystemoauthtokenresponse response = alipayclient.execute(request); if(response.issuccess()){ system.out.println("调用成功"); } else { system.out.println("调用失败"); }
php 示例代码
$aop = new aopclient (); $aop->gatewayurl = 'https://openapi.alipay.com/gateway.do'; $aop->appid = '第三方应用 app_id'; $aop->rsaprivatekey = '第三方应用私钥'; $aop->alipayrsapublickey='第三方应用支付宝公钥'; $aop->apiversion = '1.0'; $aop->signtype = 'rsa2'; $aop->postcharset='gbk'; $aop->format='json'; $request = new alipaysystemoauthtokenrequest (); $request->setgranttype("authorization_code"); $request->setcode("4b203fe6c11548bcabd8da5bb087a83b"); $result = $aop->execute ( $request, null, app_auth_token); //第三方应用代小程序模板调用接口必须传入 $responsenode = str_replace(".", "_", $request->getapimethodname()) . "_response"; $resultcode = $result->$responsenode->code; if(!empty($resultcode)&&$resultcode != 10000){ echo "失败"; } else { echo "成功"; }
.net 示例代码
iaopclient client = new defaultaopclient("https://openapi.alipay.com/gateway.do", "第三方应用app_id", "第三方应用私钥merchant_private_key", "json", "1.0", "rsa2", "第三方应用支付宝公钥alipay_public_key", "gbk", false); alipaysystemoauthtokenrequest request= new alipaysystemoauthtokenrequest() ; request.granttype = "authorization_code"; request.code = "4b203fe6c11548bcabd8da5bb087a83b"; alipaysystemoauthtokenresponse response=client.execute(request,"",app_auth_token);//第三方应用代小程序模板调用接口必须传入 app_auth_tokenconsole.writeline(response.body);
说明:
- 若需在小程序模板中接入插件,可查看 小程序模板使用插件。
- 若需修改模板名称、类目等信息,可在第一次提审模板时修改,模板上线后不允许再修改名称等信息。
沙箱环境调试
可在 ide 中切换沙箱环境,从而测试数据不会干扰正式环境,安全且轻松地验证支付等关键场景,可查看 沙箱环境。
生产环境调试
将模板授权给第三方应用
调试小程序模板的服务端接口,需将模板授权给第三方应用,让第三方应用可代模板调用 open api。开发过程中,可模拟第三方应用代商家小程序调用接口。
说明:由于第三方应用、小程序模板都是服务商的账号创建的,所以模板授权操作由服务商的账号完成,不需要商家参与。
- 打开小程序模板所在的第三方应用详情页,选择 商家授权,点击 邀请授权商家。
- 输入服务商自己的支付宝账号,点击 发起授权。
- 勾选该第三方应用下的小程序模板应用进行授权。
- 移动端:服务商登录支付宝客户端扫描授权二维码,选择小程序模板应用进行授权。
- pc 端:服务商登录商家平台打开授权链接,选择小程序模板应用进行授权。
- 授权第三方应用后,可在第三方应用详情页,选择 商家授权 > 授权token 中,获得该模板授权的 app_auth_token。
说明:若是需要取消模板授权,可登录 > 应用授权和代扣 > 第三方应用授权,选择要取消授权的第三方应用,点击 取消授权。
上传版本前调试
- 更新授权参数
将调用服务端接口时传入的 app_auth_token 参数配置为模板授权第三方应用后所得的 token 值。
request.putothertextparam("app_auth_token", "201903bb61c87d68fee1456cac3bb65b6d515d88");
- 调试小程序模板
小程序模板的调试方法与普通自研小程序相同,主要有如下方法: