支付宝小程序:消费红包
小编:啊南 45阅读 2020.12.28
消费红包是开放平台提供给商户的一种优惠营销工具,发放消费红包的商户需提前出资。用户在特定的交易场景下用支付宝付款时,可以使用消费红包抵用付款金额。对于收到用户付款的商户(可以不是发放红包的商户),订单的实际收入不会受到影响,如下图所示。
发放红包的商户可指定用户收到的红包在支付宝任意支付场景或者商户下核销,详见下文的 基础功能 -> 创建红包模板 部分。
对用户来说,相比于其他的营销工具,消费红包有如下优势:
-
支持拆分多次使用:例如,10元红包,用户付款1元,可以先用红包抵扣1元;剩余9元可以继续在支付时抵扣。
-
支持一笔订单最多 10 个红包叠加使用:例如,商户A发送 1 元红包(限制到店付款可用)给用户,用户又在支付宝扫码领了一个 2 元红包(限制到店付款可用),到门店付款 10 元;此时,用户可以同时使用 1 元红包 和 2 元红包,用户实际仅需支付 7 元。
-
消费红包可退款:在红包有效期内,用户在使用消费红包后发生交易退款,红包继续退还给用户,红包仍可以继续使用;如果用户在退款时,红包已过期,则资金退还到发放红包的原商户的出资支付宝账户。
-
红包逾期未核销可退:如果消费红包在被用户领取后,在有效期内没有核销,则资金退还给发放红包的原商户的出资支付宝账户。一般为实时退回,最长时间不会超过一个工作日。
-
开放接口,免费使用;
-
红包营销效果好,活跃老用户,拉取新用户,提升交易量;
-
支持指定其他商户、支付宝任意场景核销的券:如,限制花呗还款可用,限制支付宝的某些支付产品(APP 支付、电脑网站支付等)才可用等场景。
-
在各种大中型节庆日,提前给圈定的用户发放支付宝红包,用户拿到后,在符合红包的使用条件下,使用支付宝付款时,可以自动抵扣;
-
异业营销:如品牌商出资,广告商帮助品牌商做活动或者品牌宣传,向用户发放花呗还款红包、指定商户使用的红包等。
该能力对企业支付宝账户和个人支付宝账户(含个体工商户)均开放。
计费模式免费
使用说明使用流程消费红包(消费时抵扣)的主要使用流程如下图所示:
注意:
创建红包模板成功后,同步返回红包模板资金付款收银台地址,商户打开付款地址登录支付宝账户支付,登录收银台的支付宝账户需保证与创建券模板接口中指定的出资账户相同(fund_account)。
添加到卡包商户调用支付宝发券(红包)成功后,需要引导用户添加券(红包)到卡包。不论用户是否添加到卡包,券(红包)已经发给用户,只是用户添加后才能在卡包内露出展示;不添加也不影响用户支付时核销。 在添加到卡包时,需要券(红包)ID 对应的用户在支付宝 APP 中打开。
支付 APP 内引导添加:
如商户需要用户添加到卡包,可在商户端发放活动中引导用户直接添加,拼接支付宝用户添加券(红包)到卡包地址的方式:
拼链接(https://render.alipay.com/p/s/mygrace/ndetail.html?__webview_options__=sms%3DYES%26pd%3DNO&type=VOUCHER&id=)+券 id(发券成功后接口同步返回商户)。
示例: https://render.alipay.com/p/s/mygrace/ndetail.html?__webview_options__=sms%3DYES%26pd%3DNO&type=VOUCHER&id=2017101200073002254500AVEV0E
完成添加到卡包后的页面效果如下图所示:
-
无资金商户优惠券
-
现金抵价券
-
营销活动送红包
-
用户信息授权
本文档展示了如何从零开始,使用开放平台服务端 SDK 快速接入?消费红包(消费时抵扣)功能。
注意: 文档中的代码示例和 Demo 是用来阐述 API 基本使用方法的,仅针对大众场景,供 ISV(系统服务商) 参考,特殊情况还请 ISV 自行扩展,确保符合自身业务需求。
第一步:创建小程序要在您的小程序内使用消费红包功能,您需要首先完成 开发者入驻 并 创建小程序。
第二步:添加功能小程序创建完成后,开发者在 功能列表 部分可以点击 添加功能 来给创建的小程序添加功能。如下图所示,开发者勾选 消费红包?功能后,点击左下角 确定 即完成添加功能。功能无需签约即可使用。
添加功能包截图
第三步:集成并配置 SDK服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用。
下载服务端 SDK为了帮助开发者调用开放接口,我们提供了 开放平台服务端 SDK ,包含 JAVA、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名 & 验签、HTTP 接口请求等基础功能。请先下载对应语言版本的 SDK 并引入您的开发工程。
接口调用配置在 SDK 调用前需要进行初始化,以 JAVA 代码为例:
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 即创建应用后生成 | 获取见 创建应用 |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取见 配置密钥 |
FORMAT | 参数返回格式,只支持 json | json(固定) |
CHARSET | 编码集,支持 GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见 配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2 | RSA2 |
接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。
注意:
ISV /开发者可以通过 第三方应用授权 得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力。
第四步:接口调用完成接入指引的准备工作后,您就可以通过调用接口实现以下功能,完成消费红包的发放。
基础功能用户授权参见?用户授权?以此获取用户支付宝 user_id 等基础信息用于发送消费红包,如果商家已经获取用户的 user_id,可以跳过用户授权步骤。
创建红包模板场景描述在商户产生面向支付宝用户的红包发放需求时,需要首先调用该接口进行红包模板的创建。
接口调用流程
?
注意: 上图接入流程中,商户如果与开发者为同一角色,可省略掉授权环节。
使用 SDK 快速接入以 JAVA 语言为例,调用 创建红包模板接口(alipay.marketing.coupon.template.create)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient( "https://openapi.alipay.com/gateway.do" , "app_id" , "your private_key" , "json" , "GBK" , "alipay_public_key" , "RSA2" );AlipayMarketingCouponTemplateCreateRequest request = new AlipayMarketingCouponTemplateCreateRequest(); request.setBizContent( "{" +""voucher_type":"COUPON"," +//类型.暂时只支持"红包"(COUPON)""voucher_use_scene":"HUABEI_COUPON_REPAYMENT"," +//红包使用场景。""fund_account":"13040045386"," +//出资人登录账号。""brand_name":"支小宝"," +//品牌信息,由商户自定义,在通用模板中展示在红包LOGO下方。""publish_start_time":"2018-06-10 00:00:01"," +//发放开始时间,早于该时间不能发红包。""publish_end_time":"2018-07-29 23:59:59"," +//发放结束时间,晚于该时间不能发红包。红包的发放结束时间和发放开始时间跨度不能大于90天。""voucher_valid_period":"{"type": "ABSOLUTE", "start": "2018-06-10 00:00:00","end": "2018-07-13 23:59:59"}"," +//红包有效期""floor_amount":0," + //最低额度。设置红包使用门槛""voucher_description":"["1、本红包不可兑换现金,不可转赠。","2、可以叠加使用,不限使用次数。"]"," +//红包使用说明。""out_biz_no":"20180601000001654bb46ba"," +//外部业务单号。""total_amount":100.05," +//模板总金额。该数值不能小于1.00元,小数点以后最多保留两位。""redirect_uri":"https://www.yourdomain.com/alipay/pay/success"," + //重定向地址。支付成功后需要重定向的地址,如果为空则不做重定向。""notify_uri":"https://www.yourdomain.com/reieve/voucher/flux"," +//红包变动异步通知地址,传入此字段后,红包的核销将会进行异步通知""rule_conf":"{"PID": "2088512417841101,2088512417841102", "STORE": "123456,678901"}"," + //pid的值需要调用商户使用场景规则 PID 查询接口查询""extension_info":"{"coupon_AppActiveUrl":"http://www.yourdomain.com"}"" +" }" );AlipayMarketingCouponTemplateCreateResponse response = alipayClient.execute(request); if (response.isSuccess()){System.out.println( "调用成功" );} else {System.out.println( "调用失败" );}
关键入参说明:
-
voucher_type:券类型。可枚举,暂时只支持"红包"(COUPON)。 使用示例: voucher_type=COUPON。
-
红包可以拆分多次使用,例如,1元红包,可以先用掉 0.5 元,剩余的 0.5 元可以继续使用;
-
可以多个红包叠加使用,一笔支付最多叠加 10 个红包;
-
红包被使用后发生退款,如果红包有效期还在,会退还给用户红包,如果有效期已过,就会将资金退回原红包模板出资账户。
-
voucher_use_scene:红包使用场景。场景值会关联当前红包的展示模板,默认描述等信息。具体设置如下表:
红包使用场景参数设置 (voucher_use_scene) |
场景说明 |
使用规则 (场景默认) |
使用规则(自定义) |
支付宝通用全场红包(ALIPAY_COUPON_ALL) |
该场景设置后,使用规则字段允许为空,只要支付宝支付产品支持核销此类型的红包,用户红包就可以核销,无需填入 rule_conf。如淘宝、天猫、其他商户、花呗还款等。 |
默认规则 |
商户无需指定使用规则 |
花呗还款红包(HUABEI_COUPON_REPAYMENT) |
该场景设置后,会自动填充花呗还款对应的规则,无需填入 rule_conf,代表仅花呗还款场景可以核销此红包。 |
默认规则 |
商户无需指定使用规则 |
支付宝普通场景(ALIPAY_COUPON_COMMON) |
该场景红包支持在用户使用支付宝付款时使用,支持通过券创建接口中使用规则字段(rule_conf)限定支持核销的商户、支付宝交易产品场景、交易收款账户、门店等 |
无默认规则 |
设置的使用规则需要保证支付宝交易订单中的信息一致,红包才可以使用成功。 支持设置的规则类型1:交易PID (对应支付宝交易订单中:合作伙伴ID); 支持设置的规则类型2:门店ID ; 线下门店支付相关产品码: 新支付宝当面付(ALIPAY_F2F_PAYMENT)、线下扫码(QR_CODE_OFFLINE)、反向扫码支付(BARCODE_PAY_OFFLINE)、阿里集团线下当面付(TB_FACE_TO_FACE_PAY)、声波离线支付(SOUNDWAVE_PAY_OFFLINE)、当面付(FACE_TO_FACE_PAYMENT) 线下支付(一般为小商户):转账码(TRANSFER_QRCODE_PAY) 线上支付产品码: 电脑网站支付(FAST_INSTANT_TRADE_PAY)、手机网站支付(QUICK_WAP_WAY)、APP支付(QUICK_MSECURITY_PAY)、盒马-淘宝即时到账(TAOBAO_FAST_PAY ) |
-
fund_account:出资人登录账号,用于发红包的资金会从该账号划拨到发红包专用账户上。入参支付账号即可,不强制为商户账号。
-
notify_uri:红包变动异步通知地址,传入此字段后,红包的核销将会进行异步通知。
注意:
当调用创建接口成功后,会返回付款订单页面,仅当前传入资金账号可进行付款,付款完成后红包由草稿状态变更为生效状态,可进行发放。
-
brand_name:创建红包模板时录入的品牌信息,由商户自定义,在通用模板中展示在红包 logo 下方。根据红包使用场景的不同,该信息的展示位置可能会有不同。
-
total_amount:模板总金额。本次发放模板设置的总金额。币种为人民币,单位为元。该数值不能小于1.00元,小数点以后最多保留两位。
更多参数详情参见?创建红包模板接口?文档。
关键出参说明:
-
template_id:红包模板 ID。
-
fund_order_no:资金订单号,模板支付时需要。
-
confirm_uri:模板支付确认链接 。
创建消费红包模板成功后请打开出参的 confirm_uri 链接进行支付,如下图所示。只有使用发红包账户(fund_account)登录后完成支付,红包由草稿状态变更为生效状态,可进行发放。
在商户或开发者完成支付宝红包模板创建,并付款激活后,即可向用户发放该红包用于营销支持。在发放红包前,请先完成上图步骤支付发放红包的金额(total_amount),否则会出现 40004 的业务报错。
在发放红包完成后,可以按照 使用说明 章节中的介绍,引导用户将收到的红包添加到支付宝卡包。
接口调用流程
上图流程中,若开发者已通过其他渠道获取到了用户账号/ID,可跳过授权流程:用户信息授权。
使用 SDK 快速接入以 JAVA 语言为例,调用 发券接口(alipay.marketing.voucher.send )的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingVoucherSendRequest request = new AlipayMarketingVoucherSendRequest();//创建API对应的request类rrequest.setBizContent("{" +r""template_id":"20140601000730010040000000EB"," +r""login_id":"13196215350"," +//支付宝登录 IDr""taobao_nick":"yue54333"," +//淘宝昵称r""user_id":"2088302001456115"," +//支付宝用户 IDr""out_biz_no":"2016122814164328aadaee_1aee_4"," +r""amount":"9.99"," +//红包金额,请传入 String 类型,单位为“元”,请不要超过 total_amount(创建红包模板时传入的总金额)r""memo":"红包"" +//发红包备注r"}");//设置业务参数rAlipayMarketingVoucherSendResponse response = alipayClient.execute(request);rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
注意:
红包金额(amount)请不要超过在 创建红包模板?时传入的总金额(total_amount),否则会报错金额不足。
关键入参说明:
-
template_id:红包模板 ID。
-
login_id:支付宝登录 ID,手机或邮箱。user_id, login_id, taobao_nick 不能同时为空,优先级依次降低。
-
amount:红包金额,单位是元,类型为 String。红包发放时填写,其它情形不能填。
更多参数详情参见?发券接口 文档。
关键出参说明:
-
voucher_id:红包 ID。
-
user_id:支付宝用户 ID。
在商户红包被核销时,将对红包创建的开发者设置的服务地址进行异步调用通知。
异步调用流程
回调参数说明:
参数名称 | 参数说明 |
alipay_biz_no | 核销交易的支付宝业务号 |
biz_time | 业务发生时间 |
flux_amount | 变动金额 |
voucher_id | 被核销的红包 id |
partner_id | 核销对应商户 id |
partner_name | 核销对应商户名称 |
当创建的红包模板草稿信息有误,或需要提前进行已激活的红包模板过期,可进行红包模板信息修改。
接口调用流程
以 JAVA 语言为例,调用 修改券模板接口(alipay.marketing.cashvoucher.template.modify)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingCashvoucherTemplateModifyRequest request = new AlipayMarketingCashvoucherTemplateModifyRequest();//创建API对应的request类rrequest.setBizContent("{" +r""template_id":"20140601000730010040000000EB"," +//券模板ID r""slogan":"四川移动"," +//券标语,用于拼接券名称,最多6个字符,券名称=券标语+券面额+’元代金券’。仅草稿状态可修改r""publish_start_time":"2017-01-01 00:00:01"," +//发放开始时间,早于该时间不能发券。r""publish_end_time":"2017-01-29 23:59:59"," +//发放结束时间,晚于该时间不能发券。r""voucher_valid_period":"{"type":"ABSOLUTE","start":"2017-01-1000:00:00","end":"2017-01-1323:59:59"}"," +//券有效期。r""out_biz_no":"2017000xxx_modify"" +//外部业务单号r"}");//设置业务参数rAlipayMarketingCashvoucherTemplateModifyResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:
-
slogan:券标语,用于拼接券名称,最多6个字符,券名称=券标语+券面额+’元代金券’。仅草稿状态可修改。
-
publish_start_time:发放开始时间,早于该时间不能发券。发放开始时间不能大于当前时间15天。格式为:yyyy-MM-dd HH:mm:ss。仅草稿状态可修改。仅草稿状态可修改。
-
publish_end_time:发放结束时间,晚于该时间不能发券。券的发放结束时间和发放开始时间跨度不能大于90天。发放结束时间必须晚于发放开始时间。格式为:yyyy-MM-dd HH:mm:ss。草稿状态和生效状态可修改。
更多参数详情参见?修改券模板接口?文档
关键出参说明:
status:模板修改后的状态,I 表示草稿状态所有入参都被修改了,S 表示生效状态仅修改了 publish_end_time。
查询红包模板详情场景描述查询模板的详细信息,包含准实时的汇总信息。
接口调用流程
?
以 JAVA 语言为例,调用?查询券模板详情接口(alipay.marketing.voucher.templatedetail.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient( "https://openapi.alipay.com/gateway.do" , "app_id" , "your private_key" , "json" , "GBK" , "alipay_public_key" , "RSA2" );rAlipayMarketingVoucherTemplatedetailQueryRequest request = new AlipayMarketingVoucherTemplatedetailQueryRequest(); //创建API对应的request类 rrequest.setBizContent( "{" +r""template_id":"20140601000730010040000000EB"" +//券模板ID r"}" ); //设置业务参数 rAlipayMarketingVoucherTemplatedetailQueryResponse response = alipayClient.execute(request); //通过alipayClient调用API,获得对应的response类 rif (response.isSuccess()){rSystem.out.println( "调用成功" );r} else {rSystem.out.println( "调用失败" );r} // 根据response中的结果继续业务逻辑处理
关键入参说明:?
template_id:券模板 ID。
关键出参说明:
-
template_id:红包模板 ID。
-
voucher_type:红包类型。
-
status:模板状态,可枚举。分别为‘草稿’(I)、‘生效’(S)、‘删除’(D)和‘过期’(E)。
-
amount:面额。每张代金红包可以抵扣的金额。币种为人民币,单位为元。该数值不小于 0,小数点以后最多两位。
-
total_amount:总金额面额。币种为人民币,单位为元。该数值不小于 0,小数点以后最多两位,仅代金券有效。
-
publish_count:已发放张数。单位为张。该数值是大于 0 的整数。
-
publish_amount:已发放总金额。币种为人民币,单位为元。该数值不小于 0,小数点以后最多两位。
-
used_count:已使用张数。单位为张。该数值是大于 0 的整数。
-
used_amount:已使用总金额。币种为人民币,单位为元。该数值不小于 0,小数点以后最多两位。
-
recycle_amount:退回金额。币种为人民币,单位为元。该数值不小于 0,小数点以后最多两位。
注意:
该接口数据同步会有两小时延迟,如需查询模板发放优惠券/红包详情,请在发放两个小时后调用该接口。
更多参数详情参见?查询券模板详情接口?文档。
查询红包模板列表场景描述分页查询当前 PID 下的所有模板。
接口调用流程
以 JAVA 语言为例,调用?查询券模板列表接口(alipay.marketing.voucher.templatelist.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingVoucherTemplatelistQueryRequest request = new AlipayMarketingVoucherTemplatelistQueryRequest();//创建API对应的request类rrequest.setBizContent("{" +r""create_start_time":"2017-01-0100:00:01"," +r""create_end_time":"2017-01-2923:59:59"," +r""page_num":1," +r""page_size":20" +r"}");//设置业务参数rAlipayMarketingVoucherTemplatelistQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:
-
create_start_time:模板创建开始时间,格式为:yyyy-MM-dd HH:mm:ss。
-
create_end_time:模板创建结束时间,格式为:yyyy-MM-dd HH:mm:ss。
-
page_num:页码,必须为大于0的整数,1表示第一页,2表示第2页,依次类推。
-
page_size:每页记录条数,必须为大于0的整数,最大值为30。
关键出参说明:
voucher_templates: 红包模板列表??
└ template_id:红包模板 ID。
└ voucher_name:t红包名称。
└ status:模板状态,可枚举。分别为‘草稿’(I)、‘生效’(S)和‘过期’(E) 。
└ create_time:模板创建时间。格式为:yyyy-MM-dd HH:mm:sst。
└ activate_time: 模板激活时间。草稿状态的模板该项为空。
更多参数详情参见 查询券模板列表接口 文档。
查询商户外部门店场景描述在创建红包使用规则时,查询当前商户所有外部门店数据。
接口调用流程
使用 SDK 快速接入 以 JAVA 语言为例,调用?商户外部门店查询接口(ant.merchant.expand.merchant.storelist.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAntMerchantExpandMerchantStorelistQueryRequest request = new AntMerchantExpandMerchantStorelistQueryRequest();//创建API对应的request类rrequest.setBizContent("{" +r""pid":"2088202967380463"," +//指定的商户pid,如果指定, 只返回此pid的店铺信息。r""is_include_cognate":"false"," +r""page_num":1," +//页码,必须为大于0的整数r""page_size":20" +//每页记录条数,必须为大于0的整数,最大值为30r"}");//设置业务参数rAntMerchantExpandMerchantStorelistQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:
-
pid:指定的商户 pid,如果指定,只返回此 pid 的店铺信息(此 pid 必须是商户自己的)。
-
is_include_cognate:该参数可入参 true / false。
-
当 is_include_cognate = true,指定 pid 为空,查询商户下所有pid的店铺;
-
当 is_include_cognate = true,指定 pid 不为空时,查询指定pid的店铺;
-
当 is_include_cognate = false,指定 pid 为空时,查询当前商户pid的店铺;
-
当 is_include_cognate = false,指定 pid 不为空时,查询指定pid的店铺。
关键出参说明:
merchant_stores:复杂类型 ShopQueryInfo,商户门店列表:
└ pid:商户 pid。
└ shop_id:内部门店ID。
└ store_id:外部门店ID。
└ name:门店名称。
更多参数详情参见? 商户外部门店查询接口 文档。
删除红包模板场景描述可以删除处于草稿状态的红包模板。
接口调用流程
以 JAVA 语言为例,调用 删除券模板接口(alipay.marketing.voucher.template.delete)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient( "https://openapi.alipay.com/gateway.do" , "app_id" , "your private_key" , "json" , "GBK" , "alipay_public_key" , "RSA2" );rAlipayMarketingVoucherTemplateDeleteRequest request = new AlipayMarketingVoucherTemplateDeleteRequest(); //创建API对应的request类 rrequest.setBizContent( "{" +r""template_id":"20140601000730010040000000EB"" +//模板 IDr"}" ); //设置业务参数 rAlipayMarketingVoucherTemplateDeleteResponse response = alipayClient.execute(request); //通过alipayClient调用API,获得对应的response类 rif (response.isSuccess()){rSystem.out.println( "调用成功" );r} else {rSystem.out.println( "调用失败" );r} // 根据response中的结果继续业务逻辑处理
关键入参说明:
template_id:模板 ID。
查询红包列表场景描述查询当前PID创建的某个模板给某用户发送的所有的红包。
接口调用流程
以 JAVA 语言为例,调用?查询券列表接口(alipay.marketing.voucher.list.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingVoucherListQueryRequest request = new AlipayMarketingVoucherListQueryRequest();//创建API对应的request类rrequest.setBizContent("{" +r""template_id":"20140601000730010040000000EB"," +r""user_id":"2088512417841101"" +r"}");//设置业务参数rAlipayMarketingVoucherListQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:?
-
template_id:模板 ID。
-
user_id:支付宝用户 ID。
关键出参说明:
vouchers:红包列表
└ template_id:模板 ID。
└ voucher_id:红包 ID。
└ status:红包状态,可枚举,分别为“可用”(ENABLED)和“不可用”(DISABLED)。
└ send_time:发红包时间,格式为:yyyy-MM-dd HH:mm:ss。
更多参数详情参见?查询券列表接口 文档。
单个红包详情查询场景描述发放给用户的红包实例查询。
接口调用流程
使用 SDK 快速接入
以 JAVA 语言为例,调用?券查询接口(alipay.marketing.voucher.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingVoucherQueryRequest request = new AlipayMarketingVoucherQueryRequest();//创建API对应的request类rrequest.setBizContent("{" +r""voucher_id":"20170616000730020041006ZYE2V"" +r"}");//设置业务参数rAlipayMarketingVoucherQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:?
voucher_id:红包 ID(红包唯一标识,发红包接口返回参数)。
关键出参说明:?
-
user_id:红包所属用户 ID。
-
gmt_active:红包激活时间(红包可以使用起始时间)。
-
gmt_expired:红包过期时间(红包可以使用截止时间)。
-
total_amount:红包面额(元)。
-
available_amount:红包余额(元)。
-
status:红包状态(ENABLED:可用,DISABLED:不可用,DELETE:删除状态,TRANS:发放中,TRANSFER:已转赠,UNC:未领取,USED:已使用,USING:使用中,REFUNDED:已退款,REFUNDING:退款中,UNACTIVE:未激活,EXPIRED:已过期)。
-
gmt_create:红包创建时间(红包发放时间)。
-
bill_details:复杂类型 VoucherBillDetail,红包交易账单信息(核销交易信息、交易退款信息等可能存在多条)
└ trade_no:红包ID(红包唯一标识,发红包接口返回参数)。
└ amount:红包核销/退款金额。
└ status:交易状态(I:处理中, S:成功)。
└ partner_id:交易合作伙伴 ID。
└ partner_name:商户名称。
└ biz_type:账单类型(V_USE:支付,V_REFUND:退款)。
└ gmt_create:交易时间。
更多参数详情参见 券查询接口 文档。
商户使用场景规则 PID 查询场景描述查询商户可用于使用场景规则的 PID。调用 创建红包模板接口?时规则参数(rule_conf)中 pid 的值只能入参该接口查询到的 pid 值。
接口调用流程
以 JAVA 语言为例,调用?商户使用场景规则 PID 查询接口(alipay.marketing.userule.pid.query)的示例代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");rAlipayMarketingUserulePidQueryRequest request = new AlipayMarketingUserulePidQueryRequest();//创建API对应的request类rrequest.setBizContent("{" +r""pid":"2088202967380463"" +r"}");//设置业务参数rAlipayMarketingUserulePidQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类rif(response.isSuccess()){rSystem.out.println("调用成功");r} else {rSystem.out.println("调用失败");r}// 根据response中的结果继续业务逻辑处理
关键入参说明:?
pid:合作伙伴 ID,传入 ID 比如与当前 APPID 所属合作伙伴 ID 一致,否则会报权限不足。
关键出参说明:
pids:满足条件的所有 pid,多个 pid 使用英文逗号隔。
更多参数详情参见? 商户使用场景规则 PID 查询接口 文档。
API列表此列表包含产品所涉及的所有接口,点击接口英文名可查看接口的公共请求参数,业务请求参数,返回参数,其他语言请求示例以及错误码等信息。
接口英文名 | 接口中文名 |
alipay.marketing.coupon.template.create | 创建红包模板接口 |
alipay.marketing.voucher.send | 发券接口 |
alipay.marketing.voucher.templatedetail.query | 查询模板详情接口 |
alipay.marketing.voucher.list.query | 查询券列表接口 |
alipay.marketing.voucher.templatelist.query | 查询券模板列表接口 |
alipay.marketing.voucher.query | 券查询接口 |
alipay.marketing.cashvoucher.template.modify | 修改券模板接口 |
ant.merchant.expand.merchant.storelist.query | 商户外部门店查询接口 |
alipay.marketing.voucher.template.delete | 删除券模板接口 |
alipay.marketing.userule.pid.query | 商户使用场景规则 PID 查询接口 |
A:无论现金抵价券、无资金商户优惠券还是消费红包,直接在用户核销的订单金额中抵扣,优惠券的业务中,支付宝均无收入,所以不需要开具发票。 核销订单中,核销的商户需要向用户开具发票,建议按照用户实付金额开票;优惠券红包部分的发票,发券商户可以向核销的商户索取,支付宝不介入双方的发票索取事宜。
Q:支付宝红包模板创建出资支持的付款渠道有哪些?A:支持借记类渠道(余额、余额宝、借记卡、网银)。
Q:红包资金如何退回?A:资金退回的场景:
-
红包模板发放有效期到期或者主动删除红包模板,红包模板未发放的剩余资金;
-
用户红包核销后,交易发生退款,且红包有效期已过,导致红包资金的退回;
-
消费红包在被用户领取后,在有效期内没有核销。
资金退回渠道:均统一退回至原出资支付宝账户余额。
退回时间:一般为实时退回,最长时间不会超过一个工作日。
Q:用户一次支付最多可用几个支付宝红包?A:一笔支付订单最多使用 10 个支付宝红包。
Q:红包面额是否可以拆分使用多次?A:支持拆分多次使用,不限制拆分次数上限。
Q:用户使用红包后,对应的交易发生了退款,是否退还红包给用户?A:交易退款,如果红包有效期还在,红包会退还给用户。否则,如果红包已过期,则资金会退回原红包模板出资账户余额。
Q:发送券接口(?alipay.marketing.voucher.send?) 报错 "异常原因:请求参数非法|入参转换类型失败:转换参数发生错误,当前属性[class com.iwallet.biz.common.util.money.Money]" 如何解决?A:发送红包接口 amount 参数为 String 类型,请检查入参格式是否正确。
Q:小程序模板应用是否支持接入消费红包功能?A:支持。
相关推荐