1. 生成认证请求 URL
使用服务端接口:zhima.customer.certification.certify
。接口详情参照 开始认证文档。
必须要传回调地址 return_url
,回调支持在支付宝 App 打开(示例:alipays://www.taobao.com
)、在浏览器打开(示例:https://www.taobao.com
)、在商户 App 打开(使用商户 schema
协议)。
ZhimaCustomerCertificationCertifyRequest request = new ZhimaCustomerCertificationCertifyRequest();
request.setPlatform("zmop");
request.setBizNo("ZM201612013000000242400404124269");// 必要参数
// 设置回调地址,必填. 如果需要直接在支付宝APP里面打开回调地址使用alipay协议
// alipay://www.taobao.com 或者 alipays://www.taobao.com,分别对应http和https请求
request.setReturnUrl("http://www.taobao.com");// 必要参数
DefaultZhimaClient client = new DefaultZhimaClient(
"https://zmopenapi.zmxy.com.cn/openapi.do";, "app_id", "your private_key",
"zhima_public_key");
try {
String url = client.generatePageRedirectInvokeUrl(request);
System.out.println("generateCertifyUrl url:" + url);
} catch (ZhimaApiException e) {
e.printStackTrace();
}
2. 示例认证 URL
生成的 URL 必须包含回调地址
https://zmopenapi.zmxy.com.cn/openapi.do?sign=rr8lb07UarEXFp2gckiAc28y%2BeHHdq%2BYwWFBW3bl1iYMKK2ScHFYtZRdOxWwBgbqBily5P6455c4QjumfF%2BRQhHgFr6DrA7RfMDp3tQMbTAn7wtAR8vGE8o%2BuCKAgDMzF2lfqCSn%2BGcOtbhSwnNbJDJAsNWerlezkSTu0YrMLvA%3D&signtype=RSA&charset=UTF-8&appid=1000509&method=zhima.customer.certification.certify&version=1.0?ms=TNjy6EwBUey02QxJF4VUB4UjkRL1NjLHrK7XKD1J9sGvjvVPXGT7e1cupoxr%2BBZS1OXbhpf4LTRVzPIgROiyk6az%2BFFU7ud0378ugHn8UbqHu%2FvbeTRsEY0FDAekCv6AmY6xbVZRDkClVuM9k1KlZ6bVRvs%2F1zUgvjP8iSivKA0%3D
3. 开始认证方式 1:商户有自己的 App 使用 native 的方式唤起支付宝客户端(可选)
在商户 App 使用如下示例代码(传入认证 URL)使用 native 代码唤起支付宝客户端进行认证:
iOS 示例代码:
- (void)doVerify:(NSString )url {
// 这里使用固定appid 20000067
NNSString alipayUrl = [NSString stringWithFormat:@"alipays://platformapi/startapp?appId=20000067&url=%@",
[self URLEncodedStringWithUrl:url]];
if ([self canOpenAlipay]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:alipayUrl] options:@{} completionHandler:nil];
} else {
UIAlertView alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"是否下载并安装支付宝完成认证?"
delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"好的", nil];
[alertView show];
}
}
- (NSString )URLEncodedStringWithUrl:(NSString )url {
NSString encodedString = (NSString )CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)url,NULL,(CFStringRef) @"!'();:@&=+$,%#[]|",kCFStringEncodingUTF8));
return encodedString;
}
- (void)alertView:(UIAlertView )alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
NSString appstoreUrl = @"itms-apps://itunes.apple.com/app/id333206289";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appstoreUrl] options:@{} completionHandler:nil];
}
}
- (BOOL)canOpenAlipay {
return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"alipays://"]];
}
// 并且在Info.plist文件中配置alipays到LSApplicationQueriesSchemes参数中
Android 示例代码:
/**
* 启动支付宝进行认证
* @param url 开放平台返回的URL
*/
private void doVerify(String url) {
if (hasApplication()) {
Intent action = new Intent(Intent.ACTION_VIEW);
StringBuilder builder = new StringBuilder();
// 这里使用固定appid 20000067
builder.append("alipays://platformapi/startapp?appId=20000067&url=");
builder.append(URLEncoder.encode(url));
action.setData(Uri.parse(builder.toString()));
startActivity(action);
} else {
// 处理没有安装支付宝的情况
new AlertDialog.Builder(this)
.setMessage("是否下载并安装支付宝完成认证?")
.setPositiveButton("好的", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent action = new Intent(Intent.ACTION_VIEW);
action.setData(Uri.parse("https://m.alipay.com"));
startActivity(action);
}
}).setNegativeButton("算了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
}
/**
* 判断是否安装了支付宝
* @return true 为已经安装
*/
private boolean hasApplication() {
PackageManager manager = getPackageManager();
Intent action = new Intent(Intent.ACTION_VIEW);
action.setData(Uri.parse("alipays://"));
List list = manager.queryIntentActivities(action, PackageManager.GET_RESOLVED_FILTER);
return list != null && list.size() > 0;
}
4. 开始认证方式 2:商户没有自己的 App 使用 H5 页面的方式唤起支付宝客户端(可选)
在商户的 H5 页面跳转到认证 URL,进入芝麻认证引导页,芝麻认证引导页会唤起支付宝客户端。
5. 开始认证方式 3:根据认证 URL 生成二维码让用户打开支付宝客户端扫描(可选)
商户根据认证 URL 生成二维码,然后提供二维码让用户使用支付宝客户端扫码进入认证引导页。二维码生成示例代码点此 链接 下载。