• 下载
  • 社区

现金红包

产品介绍

产品概述


为商家的小程序场景提供现金红包发放的一款产品,主要应用于企业、商家给用户发放现金到余额。


注意:

目前小程序端的现金红包功能仅开放 B2C 场景,即商户向用户发放营销红包,用户领取红包到自己的支付宝账户中。


产品特色


o   专门针对红包应用的支付产品

o   推广期间免费产品

o   支付宝风控体系保证资金安全

o   支付宝安全防运营套利

o   支付宝内部中间户解决资金合规性问题


产品限额及限次


    • 单笔收款限额:400元
    • 单日同付款方下收款笔数:10次
    • 2019年9月前,产品试运行额度,付款方商户的单日支付限额:2000000元

注意:

以上规则中的限额 200 万,由于计算规则与风控策略有关,金额不是完全精确值,仅做参考,请不要依赖此金额做系统处理,应以接口实际返回和查询结果为准,请知晓。


使用流程

红包.jpg


资金流向


应用案例


1.任务制领取红包:用户在小程序内按照指引完成简单的任务,领取相应数额的红包,如下图所示。


image.png


2.关注类领取红包:用户在关注小程序关联的生活号后,可以领取相应数额的现金红包,如下图所示。

pc.jpg


3.积分制领取红包:在符合相关规定的前提下,开发者可以在小程序内建立一定的积分体系,用户可以用积分兑换红包,并在余额中查看,如下图所示。

pc.jpg


4.转发类领取红包:在小程序的营销场景下,开发者可以用红包的形式鼓励用户转发小程序,通过社交裂变提高小程序的访问量,如下图所示。

pc.jpg


5.小程序场景内活跃领取红包:开发者在小程序内可以为满足一定条件的开发者发放红包,如下图所示。

pc.jpg


产品关联推荐


APP 支付宝登录

网站支付宝登录 


准入条件


企业认证账号,注册满 90 天。


计费模式


自签约之日起,1年内免费。


接入指引

第一步:创建小程序


要在您的小程序内使用现金红包功能,您需要首先完成开发者入驻创建小程序


第二步:添加功能


小程序创建完成后,开发者在 功能列表 部分可以点击 添加功能 来给创建的小程序添加功能。


第三步:签约功能


应用上线完成后,要使用 现金红包功能,您还需要完成签约。现金红包功能 需要签约才能生效,请点击功能列表右侧 签约,提交相关信息;完成签约后,需要一个工作日左右的时间审核(审批结果会以短信和邮件形式告知),待审核完毕后,功能的状态会变成“已生效”,您的应用即可使用 现金红包功能


免责声明:

“支付宝将来可能会对接口做优化升级,即新增接口返回参数,开发者的系统逻辑需要兼容此类接口升级。


第四步:集成并配置 SDK


服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用。

下载服务端 SDK

在开发者调用接口前,请先了解 小程序框架 和支付宝开放平台服务端 SDK。开放平台服务端 SDK 包含 JAVA、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名 & 验签、HTTP 接口请求等基础功能。请先下载对应语言版本的 SDK 并引入您的开发工程。

接口调用配置


开放平台 SDK 封装了签名实现,只需在创建 DefaultAlipayClient 对象时,设置请求网关 (gateway),应用 id (app_id),应用私钥 (private_key),应用公钥证书路径(app_cert_path 文件绝对路径),支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径),支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径),编码格式 (charset),签名类型 (sign_type)即可,报文请求时会自动进行签名。目前现金红包仅支持公钥证书模式接入,详情参看公钥证书接入方式说明。


注意:

当前只有在4.4.2.ALL及以上版本的 JAVA 版 SDK 才支持公钥证书签名方式,其它语言版本需要开发者自行实现签名和验签。使用公钥证书模式的SDK需依赖下述三个JAR包:

  • bcprov-jdk15on-1.62.jar
  • fastjson-1.2.50.jar
  • commons-logging-1.1.1.jar



在 SDK 调用前需要进行初始化,以 JAVA 代码为例:


CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(gateway);                
certAlipayRequest.setAppId(app_id);  
certAlipayRequest.setPrivateKey(app_privateKey);  
certAlipayRequest.setFormat("json");  
certAlipayRequest.setCharset(charset);  
certAlipayRequest.setSignType(sign_type);   
certAlipayRequest.setCertPath(app_cert_path);
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
certAlipayRequest.setRootCertPath(alipay_root_cert_path);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);


第五步:调用接口


目前小程序端的现金红包功能仅开放 B2C 场景:商户向用户发放营销红包,用户领取红包到自己的支付宝账户中。


红包转账接口 alipay.fund.trans.uni.transfer


场景描述

在营销等业务场景下,商户调用支付宝接口直接给用户发放红包


接口调用流程



接入说明

  1. 如果返回系统异常或未明确的错误码,请保持原始请求信息重试;
  2. 接口限制 tps 10;
  3. 商户服务器必须安装CA证书才可使用。


以 JAVA 语言为例,在服务端调用 alipay.fund.trans.uni.transfer 统一转账接口的示例代码如下:


CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(gateway);  //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do
certAlipayRequest.setAppId(app_id);  //APPID 即创建应用后生成,详情见创建应用并获取 APPID
certAlipayRequest.setPrivateKey(app_privateKey);  //开发者应用私钥,由开发者自己生成
certAlipayRequest.setFormat("json");  //参数返回格式,只支持 json 格式
certAlipayRequest.setCharset(charset);  //请求和签名使用的字符编码格式,支持 GBK和 UTF-8
certAlipayRequest.setSignType(sign_type);  //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。 
certAlipayRequest.setCertPath(app_cert_path); //应用公钥证书路径(app_cert_path 文件绝对路径)
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); //支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径)
certAlipayRequest.setRootCertPath(alipay_root_cert_path);  //支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径)
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
request.setBizContent("{" +
"\"out_biz_no\":\"201806300001\"," +
"\"trans_amount\":1.68," +
"\"product_code\":\"STD_RED_PACKET\"," +
"\"biz_scene\":\"DIRECT_TRANSFER\"," +
"\"order_title\":\"新人注册红包\"," +
"\"payee_info\":{" +
"\"identity\":\"2088123412341234\"," +
"\"identity_type\":\"ALIPAY_USER_ID\"," +
"\"name\":\"黄龙国际有限公司\"," +
"    }," +
"\"remark\":\"新人注册红包\"," +
"\"business_params\":\"{\\\"sub_biz_scene\\\":\\\"REDPACKET\\\",\\\"payer_show_name\\\":\\\"新人红包\\\"}\"," +
"  }");
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}


说明: 

alipay.fsund.trans.uni.transfer 接口的示例代码的具体请求参数和响应参数可参考“关键入参表”和“关键出参表”。


关键入参表


参数

字段类型

最大长度

是否必填

示例

参数说明

out_biz_no

String

64

20190619000000001

商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。

trans_amount

String

16

1.68

订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]

product_code

String

64

STD_RED_PACKET

销售产品码,固定STD_RED_PACKET

biz_scene

String

64

DIRECT_TRANSFER

业务场景,本场景固定DIRECT_TRANSFER

payee_info

Participant


Participant类型,收款方信息

└ identity

String

64

2088123412341234


参与方的标识ID,比如支付宝用户UID。

└ identity_type

String

64

ALIPAY_USER_ID

参与方的标识类型,目前支持如下枚举:1、ALIPAY_USER_ID 支付宝的会员ID

2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式

└ name

String

256

参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。

order_title



新人注册红包

转账业务的标题,用于在支付宝用户的账单里显示。

remark



新人注册红包

业务备注

business_params



{"sub_biz_scene":"REDPACKET","payer_show_name":"新人红包"}

转账业务请求的扩展参数,支持传入的扩展参数如下:

1、sub_biz_scene, 子业务场景,必传,取值REDPACKET;

2、payer_show_name,付款方显示名称,可选,收款方在支付宝账单中可见


关键出参表


名称具体类型是否必填最大长度示例值描述
out_biz_noString64

20190619000000001

商户订单号
order_idString

64

20190619110070000006800000025890

支付宝转账订单号

pay_fund_order_id

String

64

20190801110070001506380000251556

支付宝支付资金流水号

statusString32SUCCESS
转账单据状态。
SUCCESS:成功;


单据查询接口 alipay.fund.trans.common.query


场景描述

查询B2C红包转账订单的信息。


接口调用流程


接入说明

  1. 查询入参 out_biz_no、order_id 与 pay_fund_order_id 三者不可同时为空,三者优先级为pay_fund_order_id > order_id > out_biz_no,高优先级与低优先级参数同时给出时,用高优先级参数查询,忽略低优先级参数;
  2. 使用out_biz_no查询时,必须传 product_code 和 biz_scene。


在服务端调用单据查询接口  alipay.fund.trans.common.query 接口示例代码如下


CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(gateway);
certAlipayRequest.setAppId(app_id);
certAlipayRequest.setPrivateKey(app_privateKey);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(charset);
certAlipayRequest.setSignType(sign_type);
certAlipayRequest.setCertPath(app_cert_path);
certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
certAlipayRequest.setRootCertPath(alipay_root_cert_path);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayFundTransCommonQueryRequest request = new AlipayFundTransCommonQueryRequest();
request.setBizContent("{" +
"\"product_code\":\"STD_RED_PACKET\"," +
"\"biz_scene\":\"DIRECT_TRANSFER\"," +
"\"out_biz_no\":\"20190619000000001\"," +
"\"order_id\":\"20190619110070000006800000025890\"" +
"  }");
AlipayFundTransCommonQueryResponse response = alipayClient.certificateExecute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}


说明:

alipay.fund.trans.common.query 接口的示例代码的具体请求参数和响应参数可参考“关键入参表”和“关键出参表”。


关键入参表


参数

字段类型

最大长度

是否必填

示例

参数说明

order_id

String

64

特殊必填

20190619110070000006800000025890

支付宝转账单据号:

本参数和商户转账唯一订单号、支付宝支付资金流水号三者不能同时为空。

当本参数和商户转账唯一订单号、支付宝支付资金流水号三者同时提供时,将用支付宝支付资金流水号进行查询,忽略其余两者;

当本参数和支付宝支付资金流水号同时提供时,将用支付宝支付资金流水号进行查询,忽略本参数。

当本参数和商户转账唯一订单号同时提供时,将用本参数进行查询,忽略商户转账唯一订单号。

out_biz_no

String

64

特殊必填

20190619000000001

商户转账唯一订单号:发起转账来源方定义的转账单据ID。

本参数和支付宝转账单据号、支付宝支付资金流水号三者不能同时为空。

当本参数和支付宝转账单据号、支付宝支付资金流水号同时提供时,将用支付宝支付资金流水号进行查询,忽略本参数;

当本参数和支付宝转账单据号同时提供时,将用支付宝转账单据号进行查询,忽略本参数;

pay_fund_order_id

String

64

特殊必填

20190801110070001506380000251556

支付宝支付资金流水号:

本参数和支付宝转账单据号、商户转账唯一订单号三者不能同时为空。

当本参数和支付宝转账单据号、商户转账唯一订单号同时提供时,将用本参数进行查询,忽略本参数;

当本参数和支付宝转账单据号同时提供时,将用本参数进行查询,忽略支付宝转账单据号;

当本参数和商户转账唯一订单号同时提供时,将用本参数进行查询,忽略商户转账唯一订单号;

product_code

String

64

特殊必填

STD_RED_PACKET

销售产品码,固定STD_RED_PACKET,如果传了out_biz_no,则该字段必传。

biz_scene

String

64

特殊必填

DIRECT_TRANSFER

描述特定的业务场景,如果传递了out_biz_no则该字段为必传。本场景固定传DIRECT_TRANSFER


关键出参表


名称具体类型是否必填最大长度示例值描述
order_idString

64

20190703110075000006530004756875
支付宝转账单据号,查询失败不返回。
out_biz_noString64

20190619000000001

商户订单号

pay_fund_order_id

String

64

20190801110070001506380000251556

支付宝支付资金流水号

(转账成功才返回)

pay_date

String

20

2013-01-01 08:08:08

支付时间,格式为yyyy-MM-dd HH:mm:ss,转账失败不返回。

statusString64SUCCESS
转账单据状态。可能出现的状态如下:
SUCCESS:转账成功;
WAIT_PAY:等待支付;
CLOSED:订单超时关闭


蚂蚁消息、单据状态变更通知 alipay.fund.trans.order.changed


场景描述

B2C 现金红包发放、领取的支付宝单据状态变更后触发的通知。


接口调用流程



B2C现金红包支付宝单据状态变更后触发的通知接口alipay.fund.trans.order.changed。开发者根据自身实际需要,选择合适的通知类型。


注意:

开发者要接收到支付宝的通知,需要配置接收通知的网关地址。在小程序控制台的开发管理页面,选择 立即配置 来配置服务器,在上方选择 开发设置 页签,找到 应用网关 部分,点击 设置,如下图所示。具体步骤可以参考详细接入文档


image.png


消息参数

参数具体类型是否必填最大长度示例值描述
out_biz_noString64201806300001商户端的唯一订单号
product_codeString32STD_RED_PACKET销售产品码,商家和支付宝签约的产品码。固定值 STD_RED_PACKET:现金红包
biz_sceneString32

DIRECT_TRANSFER

描述特定的业务场景,如果传递了out_biz_no则该字段为必传。固定值:

DIRECT_TRANSFER

origin_interfaceString64

alipay.fund.trans.uni.transfer

请求来源的接口
order_idString6420190624110075000006530000014566支付宝系统的单据唯一ID
pay_fund_order_idString64

20190801110070001506380000251556

支付宝支付资金流水号(转账成功时才返回)

statusString16SUCCESS

转账单据状态。可能出现的状态如下:

SUCCESS:转账成功;

action_typeString32FINISH

资金订单的操作类型,取值如下:

FINISH- 订单处理已完结;

trans_amountString2032.00转账金额
pay_dateString202013-01-01 08:08:08支付完成时间


响应值

响应值描述是否重试
fail消息获取失败重试
success消息获取成功不重试


消息示例


ISV_GATEWAY_URL?charset=GBK&biz_content=
{
"out_biz_no":"201806300001","product_code":"STD_RED_PACKET","biz_scene":"PERSONAL_PAY","origin_interface":"alipay.fund.trans.app.pay","order_id":"20190624110075000006530000014566","pay_fund_order_id":"20190801110070001506380000251556","status":"SUCCESS","action_type":"FINISH","trans_amount":"32.00","pay_date":"2013-01-01 08:08:08"
}
&msg_method=alipay.fund.trans.order.changed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==


消息验签

在公钥证书模式下,支付宝开放平台 SDK 提供了 AlipaySignature.rsaCertCheckV1 方法,可以使用该方法对通知报文验签。

/**
@param params 参数列表(包括待验签参数和签名值sign) key-参数名称 value-参数值
@param alipayPublicCertPath 验签支付宝公钥证书路径
@param charset 验签字符集
**/
boolean AlipaySignature.rsaCertCheckV1(Map<String, String> params, String alipayPublicCertPath, String charset)


API 列表


接口名称接口中文名称
alipay.fund.trans.uni.transfer

统一转账接口

alipay.fund.trans.common.query 

单据查询接口

alipay.fund.trans.order.changed 

单据状态变更后触发的通知接口