要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com),在开发者中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。
为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
各语言版本服务端SDK详细使用说明,请参考《服务端SDK使用说明》
在SDK调用前需要进行初始化,代码如下:
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
配置参数 | 示例值解释 | 获取方式/示例值 |
---|---|---|
URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
APPID | APPID 即创建应用后生成 | 获取见上面创建应用并获取APPID |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取详见上面配置密钥 |
FORMAT | 参数返回格式,只支持json | json(固定) |
CHARSET | 编码集,支持GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见上面配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 | RSA2 |
>>接口列表:会员卡模板创建(alipay.marketing.card.template.create)
>>会员卡模板模型介绍
>>SDK调用示例:
/** * 创建会员卡模板 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardTemplateCreateRequest request = new AlipayMarketingCardTemplateCreateRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardTemplateCreateResponse response=alipayClient.execute(request); System.out.println(response.getBody());
>>app_auth_token在ISV代替商户调用接口时使用,商户自己调用,可传null。
>>bizContent Json串示例:
"{" + "\"request_id\":\"20160805100000023100679\"," + "\"card_type\":\"OUT_MEMBER_CARD\"," + "\"biz_no_prefix\":\"prexupdate\"," + "\"biz_no_suffix_len\":\"10\"," + "\"write_off_type\":\"qrcode\"," + "\"template_style_info\":{" + "\"card_show_name\":\"花呗会员卡测试\"," + "\"logo_id\":\"OKWBUiWCQ761MdRzP4PvUwAAACM****\"," + "\"color\":\"rgb(55,112,179)\"," + "\"background_id\":\"OKWBUiWCQ761MdRzP4PvUwAAACMA****\"," + "\"bg_color\":\"rgb(55,112,179)\"}," + "\"template_benefit_info\":[{\"title\":\"消费即折扣\"," + "\"benefit_desc\":[\"消费即折扣\",\"会员日7折扣\"]," + "\"start_date\":\"2016-08-18 15:17:23\"," + "\"end_date\":\"2016-09-14 12:12:12\"}]," + "\"column_info_list\":[{\"code\":\"BENEFIT_INFO\",\"more_info\":{\"title\":\"扩展信息\",\"url\":\"http://www.baidu.com\"," + "\"params\":\"{}\"}," + "\"title\":\"专属权益修改\",\"operate_type\":\"openWeb\",\"value\":\"会员权益\"}," +"{\"code\":\"BALANCE\",\"title\":\"余额\",\"value\":\"\"}," +"{\"code\":\"TELEPHOME\",\"title\":\"手机号码\",\"value\":\"15000784967\"}," +"{\"code\":\"Point\",\"title\":\"积分\",\"value\":\"100\"}" + "]," + "\"field_rule_list\":[{\"field_name\":\"Balance\",\"rule_name\":\"ASSIGN_FROM_REQUEST\",\"rule_value\":\"Balance\"}," + "{\"field_name\":\"Point\",\"rule_name\":\"CONST\",\"rule_value\":\"100\"}]}"
说明:
1.request_id为请求唯一标识,每次请求请保证唯一性;
2.logo_id和background_id通过支付宝图片资料上传接口(alipay.offline.material.image.upload)获取;
3.logo图片规范:1M以内,格式:bmp,png,jpeg,jpg,gif;尺寸不小于500px*500px的等边矩形;请优选使用商户logo;
background图片规范:2M以内,格式:bmp,png,jpeg,jpg,gif;尺寸不小于1020px*643px的等边矩形;图片不得有圆角,不得拉伸变形;
4.具体json字段说明,请查看创建会员卡模板
>>接口列表:会员卡开卡(alipay.marketing.card.open)
>>会员卡模型介绍
会员卡开卡需要根据支付宝端的模板ID,为用户发行商户会员卡。针对商户发行的会员卡,调用会员开卡接口,主要完成商户会员卡的电子化,从而在钱包端展现会员卡,同时将卡信息保存至支付宝系统。
会员卡请求模型主要包含开卡请求基本信息(如外部流水号、会员卡模板等),会员信息,会员卡信息和扩展信息这几个部分。
>>SDK调用示例:
/** * 会员卡开卡 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardOpenRequest request = new AlipayMarketingCardOpenRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardOpenResponse response = alipayClient.execute(request,accessToken); System.out.println(response.getBody());
>>app_auth_token在ISV代替商户调用接口时使用,商户自己调用,可传null;
>>accessToken通过用户信息授权获取,其中第一步url拼接中scope的值必需设置为auth_ecard;
>>bizContent Json串示例:
"{" +"\"out_serial_no\":\"2016100910482088139\","//唯一标识 +"\"card_template_id\":\"2016100900000000001410200030****\","//会员卡模板id,通过模板创建接口返回得到 +"\"card_user_info\":{" +"\"user_uni_id\":\"20884025********\"," //支付宝userid(一般2088开头) +"\"user_uni_id_type\":\"UID\"}," +"\"card_ext_info\":{\"external_card_no\":\"EXT0003\","//商户会员卡卡号 + "\"open_date\":\"2016-10-08 14:20:00\",\"valid_date\":\"2020-02-20 21:20:46\",\"level\":\"VIP1\",\"point\":\"88\",\"balance\":\"124.89\"}," +"\"member_ext_info\":{\"name\":\"萧沫\",\"gende\":\"FEMALE\",\"birth\":\"2016-06-27\",\"cell\":\"13000000000\"}}"
说明:
1.out_serial_no为唯一标识号,每次请求保障唯一;
2.card_template_id为模板id,通过会员卡模板创建接口获取;
3.user_uni_id为支付宝账户userid,为2088开头的16为数字,通过用户信息授权获取;
4.具体json字段说明,请查看会员卡开卡
5.开卡成功后,登录到userid对应账号的支付宝钱包内卡券类目下查看发送成功的会员卡;
>>接口列表:会员卡查询(alipay.marketing.card.query)
>>SDK调用示例:
/** * 会员卡查询 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardQueryRequest request = new AlipayMarketingCardQueryRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardQueryResponse response = alipayClient.execute(request); System.out.println(response.getBody());
>>bizContent Json串示例:
"{" +"\"target_card_no\":\"prex0000001781\"," +"\"target_card_no_type\":\"BIZ_CARD\"," +"\"card_user_info\":{" +"\"user_uni_id\":\"20884025********\"," +"\"user_uni_id_type\":\"UID\"" +"}}"
说明:
1.target_card_no为会员卡业务号,在调用开卡接口成功后支付宝返回的biz_card_no参数的值;
2.user_uni_id为支付宝用户号userid,为2088开头的16位数字;
3.具体json字段说明,请查看会员卡查询
>>接口列表:会员卡更新(alipay.marketing.card.update)
>>SDK调用示例:
/** * 会员卡更新 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardUpdateRequest request = new AlipayMarketingCardUpdateRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardUpdateResponse response = alipayClient.execute(request); System.out.println(response.getBody());
>>bizContent Json串示例:
"{" +"\"target_card_no\":\"prex0000002507\"," +"\"target_card_no_type\":\"BIZ_CARD\"," +"\"occur_time\":\"2016-09-27 12:12:12\"," +"\"card_info\":{" +"\"open_date\":\"2014-02-20 21:20:46\"," +"\"valid_date\":\"2020-02-20 21:20:46\"," +"\"level\":\"VIP1\"," +"\"point\":\"188\"," +"\"balance\":\"128\"}" +"}"
说明:
1.target_card_no为会员卡业务号,在调用开卡接口成功后支付宝返回的biz_card_no参数的值;
2.具体json字段说明,请查看会员卡更新
>>接口列表:会员卡删卡(alipay.marketing.card.delete)
>>SDK调用示例:
/** * 会员卡删除 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardDeleteRequest request = new AlipayMarketingCardDeleteRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardDeleteResponse response = alipayClient.execute(request); System.out.println(response.getBody());
>>bizCotent Json示例:
"{" +"\"out_serial_no\":\"2016100910482088139\"," +"\"target_card_no\":\"prexupdate0000002781\"," +"\"target_card_no_type\":\"BIZ_CARD\"," +"\"reason_code\":\"USER_UNBUND\"" +"}"
说明:
1.out_serial_no为开卡时的唯一标识,调用开卡接口时做保存记录;
2.target_card_no为会员卡业务号,调用开卡接口成功后支付宝返回的biz_card_no参数的值;
3.具体json字段说明,请查看会员卡删卡
>>接口列表:会员卡消费记录同步(alipay.marketing.card.consume.sync)
>>SDK调用示例:
/** * 会员卡消费记录同步 * @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardConsumeSyncRequest request = new AlipayMarketingCardConsumeSyncRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardConsumeSyncResponse response = alipayClient.execute(request); System.out.println(response.getBody());
>>bizContent Json示例:
"{" +"\"target_card_no\":\"prexupdate0000003281\"," +"\"target_card_no_type\":\"BIZ_CARD\"," +"\"trade_type\":\"DEPOSIT\"," +"\"trade_no\":\"201606270000000001\"," +"\"trade_time\":\"2012-11-22 10:47:20\"," +"\"trade_name\":\"预付卡充值100元\"," +"\"trade_amount\":67.5," +"\"act_pay_amount\":23.9," +"\"shop_code\":\"201606270000001\"," +"\"memo\":\"用户门店充值100\"," +"\"use_benefit_list\":[{\"benefit_type\":\"COUPON\",\"amount\":\"10\",\"description\":\"消费1000元,赠送10元代金券\",\"count\":\"5\"}]," +"\"gain_benefit_list\":[{\"benefit_type\":\"COUPON\",\"amount\":\"10\",\"description\":\"消费1000元,赠送10元代金券\",\"count\":\"5\"}]," +"\"card_info\":{\"external_card_no\":\"EXT0009\",\"open_date\":\"2014-02-20 21:20:46\",\"valid_date\":\"2020-02-20 21:20:46\",\"level\":\"VIP1\",\"point\":\"88\",\"balance\":\"124.89\"}," +"\"swipe_cert_type\":\"ALIPAY\"" +"}"
说明:
1.target_card_no为会员卡业务号,调用开卡接口成功后支付宝返回的biz_card_no参数的值;
2.external_card_no为商户会员卡号,如果在开卡的时候传了,这里就不需要保证和开卡接口中一致;
3.具体json字段说明,请查看会员卡消费记录同步
>>接口列表:会员卡模板修改(alipay.marketing.card.template.modify)
>>SDK调用示例:
/** * 会员卡模板修改 @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardTemplateModifyRequest request = new AlipayMarketingCardTemplateModifyRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent(bizContent); AlipayMarketingCardTemplateModifyResponse response=alipayClient.execute(request); System.out.println(response.getBody());
bizContent Json示例:
"{" + "\"request_id\":\"201608051001121023100679\"," + "\"template_id\":\"20161009000000000014102000300197\"," + "\"biz_no_prefix\":\"prexupdate\"," + "\"write_off_type\":\"qrcode\"," + "\"template_style_info\":{" + "\"card_show_name\":\"花呗会员卡测试\"," + "\"logo_id\":\"OKWBUiWCQ761MdRzP4PvUwAAACMAAQED\"," + "\"color\":\"rgb(55,112,179)\"," + "\"background_id\":\"OKWBUiWCQ761MdRzP4PvUwAAACMAAQED\"," + "\"bg_color\":\"rgb(55,112,179)\"}," + "\"template_benefit_info\":[{\"title\":\"消费即折扣\"," + "\"benefit_desc\":[\"消费即折扣\",\"会员日7折扣\"]," + "\"start_date\":\"2016-08-18 15:17:23\"," + "\"end_date\":\"2016-09-14 12:12:12\"}]," + "\"column_info_list\":[{\"code\":\"BENEFIT_INFO\",\"more_info\":{\"title\":\"扩展信息\",\"url\":\"http://www.baidu.com\"," + "\"params\":\"{\\\"cardNo\\\":\\\"$CardNo$\\\"}\"}," + "\"title\":\"专属权益修改\",\"operate_type\":\"openWeb\",\"value\":\"会员权益\"}," +"{\"code\":\"BALANCE\",\"title\":\"余额\",\"value\":\"\"}," +"{\"code\":\"TELEPHOME\",\"title\":\"手机号码\",\"value\":\"15000784967\"}," +"{\"code\":\"Point\",\"title\":\"积分\",\"value\":\"100\"}" + "]," + "\"field_rule_list\":[{\"field_name\":\"Balance\",\"rule_name\":\"ASSIGN_FROM_REQUEST\",\"rule_value\":\"Balance\"}," + "{\"field_name\":\"Point\",\"rule_name\":\"CONST\",\"rule_value\":\"100\"}]}"
1.request_id为请求唯一标识,每次请求请保证唯一性;
2.logo_id和background_id通过支付宝图片资料上传接口(alipay.offline.material.image.upload)获取;
3.具体json字段说明,请查看会员卡模板修改
>>接口列表:会员卡模板查询接口(alipay.marketing.card.template.query)
>>SDK调用示例:
/** * 会员卡模板查询 @param appAuthToken如ISV代替商户调用接口,需将商户授权后获取的app_auth_token带上;如商户自己调用,则传null。 * @param bizContent 因该接口业务参数复杂,请详见接口文档 * @return * @throws AlipayApiException 请处理异常 */ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipayMarketingCardTemplateQueryRequest request = new AlipayMarketingCardTemplateQueryRequest(); request.putOtherTextParam("app_auth_token", appAuthToken); request.setBizContent("{" +"\"template_id\":\""+templateid+"\"" +"}"); AlipayMarketingCardTemplateQueryResponse response=alipayClient.execute(request); System.out.println(response.getBody());
说明:
1.template_id为模板id,通过会员卡模板创建接口获取
2.具体json字段说明,请查看会员卡模板查询
支付宝会员卡包含以下接口
接口英文名 | 接口中文名 | 接口描述 |
---|---|---|
alipay.marketing.card.template.create |
会员卡模板创建 |
创建会员卡模板 |
alipay.marketing.card.template.modify |
会员卡模板修改 |
修改会员卡模板 |
alipay.marketing.card.template.query |
会员卡模板查询接口 |
查询会员卡模板 |
alipay.marketing.card.open |
会员卡开卡 |
根据会员卡模板,向用户发行指定会员卡,会员卡接口需要用户授权 |
alipay.marketing.card.update |
会员卡更新 |
更新会员卡信息 |
alipay.marketing.card.delete |
会员卡删卡 |
删除会员卡,会同步删除支付宝端的卡信息以及钱包端的电子卡 |
alipay.marketing.card.query |
会员卡查询 |
查询已存在会员卡信息 |
alipay.marketing.card.consume.sync |
会员卡消费记录同步 |
同步用户的会员卡消费记录,同时更新卡信息 |
1.会员卡模板创建接口
2.会员卡模板修改接口
3.会员卡模板查询接口
4.会员卡开卡接口
5.会员卡删卡接口
6.会员卡消费记录同步接口