该文档主要面向需要入驻蚂蚁开放平台的产品、架构、开发等相关人员, 需要有基本的程序开发背景。通过该文档能够快速集成(借呗分期)功能,接入前需要入驻开放平台并创建了应用,应用已申请该接口权限并配置RSA密钥。
要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com),在管理中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能正常使用有权限调用的开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
开发者调用接口前需要先生成RSA密钥,包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY),并进行密钥配置,把开发者公钥与支付宝交换获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。
1. 下载服务端SDK
开发语言 | 资源下载 | 环境要求 |
---|---|---|
JAVA版资源 | SDK1.5 | 适用于Java语言、jdk版本1.5及以上的开发环境 |
SDK1.4 | 适用于Java语言、jdk版本1.4及以下的开发环境 | |
.NET版资源 | SDK | 适用于Visual studio 2010及以上版本、Framework3.5及以上版本的开发环境 |
PHP版资源 | SDK | 适用于php全系列开发环境 |
各语言版本服务端SDK详细使用说明,请参考《服务端SDK说明》
2. 接口调用配置
在SDK调用前需要进行初始化,以Java代码为示例如下:
AlipayClient alipayClient = newDefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY);
关键参数说明:
- https://openapi.alipay.com/gateway.do 线上支付宝开放平台网关(固定)
- APP_ID 即创建应用后生成,获取见上面“第一步:创建应用”
- APP_PRIVATE_KEY 获取详见上面“第二步:密钥配置”
- ALIPAY_PUBLIC_KEY 获取详见上面“第二步:密钥配置”
借呗分期产品包含以下接口:
接口名称 | 接口描述 |
---|---|
用户申贷 |
在商户生成二维码时使用,约定了二维码中的业务参数,对应下述序列图的1 |
商户退款 |
商户发起退款时调用,对应下述序列图中的7 |
接口调用序列图如下:
接口调用示例大致分为3步:
1.用户申贷
开发者根据此接口的参数生成url,示例代码如下:
String privateKey = "";// 开放平台应用私钥
Map<String, String> map = new HashMap<String, String>();
map.put("scene", "000201"); // 场景码
map.put("out_biz_no", "2016082200001"); // 商户订单号
map.put("name", "张三"); // 姓名
map.put("cert_no", "1215"); // 身份证后四位
map.put("ratio", "1"); // 贴息率
map.put("apply_amt", "5000.00"); // 申贷金额
String sign = AlipaySignature.rsaSign(map, privateKey, "UTF-8");
String signEncoder = URLEncoder.encode(sign, "utf-8");
map.put("open_id", "2016081000054375"); // 开放平台应用id
map.put("sign", signEncoder);
map.put("sign_type", "RSA");
String paramet = "/www/jiebei/pages/openScene.htm?" + getUrlParamsByMap(map);
String parametEncoder = URLEncoder.encode(paramet, "utf-8");
Map<String, String> parametMap = new HashMap<String, String>();
parametMap.put("appId", "20000180");
parametMap.put("url", parametEncoder);
String url = "alipays://platformapi/startapp?" + getUrlParamsByMap(parametMap);
/**
* 将map转换成url
* @param map
* @return
*/
public static String getUrlParamsByMap(Map<String, String> map) {
if (map == null) {
return "";
}
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey() + "=" + entry.getValue());
sb.append("&");
}
String s = sb.toString();
if (s.endsWith("&")) {
s = org.apache.commons.lang.StringUtils.substringBeforeLast(s, "&");
}
return s;
}
2.商户退款
示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayPcreditLoanRefundCreateRequest request = new AlipayPcreditLoanRefundCreateRequest(); request.setBizContent("{" + " \"req_id\":\"100000001\"," + " \"out_biz_no\":\"2016060300001\"," + " \"loan_apply_no\":\"2016081810193018140000000000140000031347\"," + " \"repay_amt\":2000.00" + " }"); AlipayPcreditLoanRefundCreateResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败");