支付宝预授权 & 预授权转支付
简介
支付宝预授权是支付宝小程序针对商家在需要用户提前出资担保的消费场景下(如租车、充电桩、酒店预订等),推出的功能。用户在开启服务时需要做一笔资金授权,当服务完结算时,再从预授权资金中扣除消费金额,剩余返还给用户。
支付宝预授权 支持余额,余额宝,信用卡,借记卡,花呗以及芝麻信用等渠道,其中:
- 余额,余额宝做资金冻结。
- 信用卡,借记卡扣款至支付宝内部账户做资金锁定。
- 花呗锁定额度(推荐),不产生账期,用户不需要马上还款(暂时免费开放,需发送邮件申请)。
- 芝麻信用以用户信用为担保并授权。
授权流程
用户线上提交订单,触发商户的预授权功能,并打开授权确认界面,用户仅需在支付宝收银台中输入支付密码,确认授权后,即可完成授权。业务流程如下图所示:
以充电桩场景下的支付宝预授权为例:
用户搜索访问小程序或扫码访问小程序以后,点击充电桩首页 立即充电;
商户后台生成订单,并且在小程序里自动跳转至支付宝资金预授权界面;
用户在支付宝收银台中输入支付密码,确认授权;
支付宝将信用授权结果同步返回给商户;
消费完成后实际结算时,商家根据实际消费情况直接从授权资金中发起授权转支付,用户无需参与,仅在实际扣款成功后收到推送通知。
预授权调用说明
支付宝预授权根据资金冻结方式分为资金授权和信用授权。
-
资金授权
在充电桩场景,用户扫码后在充电应用中设置充电模式后,选择预授权,进入支付宝预授权,资金授权后开启充电;充电完毕后,商户调用支付宝预授权转支付直接扣款。
-
信用授权
在充电桩场景,场景开启信用渠道后,用户扫码后在充电应用中设置充电模式后,选择信用充,进入支付宝预授权,信用授权/资金授权后开启充电;充电完毕后,商户调用支付宝预授权转支付直接扣款。
代码(此处为资金授权,非信用授权)
请求参数封装类
@Data
@ApiModel(description = "授权冻结资金请求参数")
public class AlipayFundAuthOrderAppFreezeReq {
@ApiModelProperty(value = "商户授权资金订单号",required = true)
private String outOrderNo;
@ApiModelProperty(value = "商户本次资金操作的请求流水号",required = true)
private String outRequestNo;
@ApiModelProperty(value = "业务订单的简单描述,如商品名称等",required = true)
private String orderTitle;
@ApiModelProperty(value = "需要冻结的金额,精确到小数点后两位",required = true)
private String amount;
@ApiModelProperty(value = "销售产品码,支付宝预授权产品取值PRE_AUTH_ONLINE ",required = true)
private String productCode;
@ApiModelProperty(value = "收款方支付宝账号")
private String payeeLogonId;
@ApiModelProperty(value = "收款方的支付宝唯一用户号",required = true)
private String payeeUserId;
@ApiModelProperty(value = "该笔订单允许的最晚付款时间")
private String payTimeout;
@ApiModelProperty(value = "业务扩展参数 RENT_SHARABLE_CHARGERS")
private String extraParam;
@ApiModelProperty(value = "场景码,用于区分预授权不同业务场景 ONLINE_AUTH_COMMON_SCENE ")
private String sceneCode;
@ApiModelProperty(value = "标价币种")
private String transCurrency;
@ApiModelProperty(value = "商户指定的结算币种")
private String settleCurrency;
@ApiModelP