支付宝信用授权

1 产品描述

  • 信用预授权是由芝麻信用联合提供的,是支付宝预授权产品的一个子能力,用信用链接用户和商户,通过信任来代替资金冻结,最终促进完成交易。

  • 核心逻辑是在冻结用户资金前先由芝麻信用对其进行信用评估,信用好则不用冻结资金;通过信用的奖励和惩戒来规范用户行为,确保解冻转支付的成功率。

  • 覆盖押金减免、预存减免、信用先享等场景,涉及住宿(民宿/酒店)、出行(传统租车/分时租赁/单车)、租物(充电宝/雨伞/手机/相机)等多个行业品类。

1.1产品特色

  • 集成风控与开放配置能力。基于芝麻分、行业关注名单等多个金融级别的风控产品,提供给用户综合评估结果。商户亦可在芝麻后台对风控策略进行调整,以适应不同的业务发展需求。
  • 信用闭环。对用户的履约、违约等行为记录至芝麻信用,通过信用守护、信用足迹实现C端触达,提高用户履约意识。


1.2 应用场景

信用预授权可应用于免押和先享后付两大场景,覆盖多个行业。

例如免押租物,3c数码、家电、乐器、玩具等,信用免押降低用户租赁服务使用门栏,提高商家获客能力。

例如先试用后付款,用户先体验服务或者商品,加强用户和商家之间的信任关系,促成交易。


2 业务流程image.png

2.1 授权评估阶段

如图是用户信用良好时押金全免的情况,不需要冻结用户任何资金;对于暂不符合信用免押的用户,依旧需要冻结支付宝账户内的资金。

1)免押借充电宝

支付宝预授权-充电宝.png

备注:充电宝也支持信用评估不通过时的资金冻结流程,虽然demo中没有表达。


2)酒店信用住

支付宝预授权-流程.png

备注:

上图中还有一种【部分减免】的情况没有表达,即订单金额为500,但用户单笔信用额度只有400元,可以用【信用减免预付400元+资金冻结100元】的组合方式。此类情况用户难以理解,不建议酒店、充电宝等场景使用,仅建议大额场景使用,如租车、租手机等。这些关于风控策略的配置,在4.1创建信用服务里有介绍。


image.png

  • 支持业务载体:生活号,小程序,商户app,都支持
  • 信用授权类目:若使用信用授权,则【资金授权冻结接口-业务拓展参数'extra-param'】业务对应的类目‘category’为必传;
  • 当不指定支付渠道时,用户信用额度不足时,可用资金授权代替;若指定信用授权渠道,用户信用额度不足则结束流程
  • 风控评估:商家可在信用服务平台对风控策略进行配置,可配置项例如:基础风控严松程度,最大租借件数,服务准入门槛,芝麻分对应额度等。


2.2 支付阶段

当用户消费支付或结束商户业务时,商户可发起预授权转支付,可多次发起,完结订单时需对订单资金解冻。

用户的每笔支付都会记入信用守约记录,当逾期时,信用守护会给用户推送提醒信息,提醒用户履约;用户守约后,信用守护会对用户激励。

image.png

  • 当发起扣款后,该笔交易便会进入信用守护,若立即扣款成功则该支付单成功履约。若扣款失败,用户通过其他渠道履约,则可通过“支付宝订单信息同步接口”进行履约修复订正。若用户超过一定时间未支付,商户也可通过该接口,对该笔交易进行违约判定。详细规则可见https://docs.open.alipay.com/20180417160701241302/pr7nfm/


3 开放范围


3.1 商户类型


拥有企业支付宝账号的商家、ISV


若没有企业支付宝账号,请先注册企业支付宝账号


3.2 开放行业


目前支持的行业与对应类目值


https://docs.open.alipay.com/10719



4 开发前准备


4.1 创建信用服务

备注:酒店信用住场景,信用服务不开放配置,请直接联系芝麻信用业务接口人配置。


a. 使用企业支付宝账户登录芝麻信用服务平台,找到与业务匹配的行业方案(当前一个账号只能创建一个行业方案,请确认行业方案中包含你所经营的品类,再进行创建)


b. 进入行业方案详情,创建该行业方案对应的信用服务(若需要登录,请登录已认证的企业支付宝账号)。

c. 根据页面引导,分别完成基础信息、信用评估、信用守护的配置,并提交审核(信用守护中非必填项,如配置小程序链接,可以应用开发后再补充,不影响审核)。


审核预计1-2个工作日,审核通过后信用服务即发布上线。信用评估配置如有疑问,可参考案例:https://cshall.alipay.com/enterprise/knowledgeDetail.htm?knowledgeId=201602379237

d.根据行业应用场景不同,需要签约不同的预授权产品

也可通过以下链接前往签约


签约支付宝预授权:https://b.alipay.com/signing/productDetail.htm?productId=I1140200001000001436


签约当面资金授权:https://b.alipay.com/signing/productDetail.htm?productId=I1140200001000001101



4.2 创建应用


详见《开放平台应用创建指南》https://docs.open.alipay.com/200/105310


其中添加功能时需注意,线上信用免押场景,需添加“支付宝预授权”功能包;线下信用免押场景,需添加“新当面资金授权”功能包。


* 接入指引完成顺序不分先后,若之前已上线含有预授权功能包的应用但未能接通信用能力,请仔细确认4.1创建订单中的参数是否传参正确


5 接入指引


信用授权流程如下


开发信用能力即完成“支付宝预授权”或“当前资金授权”接口的开发:


支付宝预授权开发文档:https://docs.open.alipay.com/20180417160701241302/intro/


当面资金授权开发文档:https://docs.open.alipay.com/318/106376/


这里不再赘述接口详情,我们将重点列出信用相关接口及传参注意事项


5.1 创建订单


不同场景下需调用不同接口创建订单:


a. 线上场景

    使用场景:通过支付宝小程序、生活号、商户APP,在应用内创建订单

    调用接口:线上资金授权冻结 alipay.fund.auth.order.app.freeze


b. 线下场景-主扫

    使用场景:商户使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码,创建订单

    调用接口:资金授权冻结接口 alipay.fund.auth.order.freeze 


c. 线下场景-被扫

    使用场景:收银员通过收银台或商户后台调用支付宝接口,生成二维码后,展示给用户,由用户扫码创建订单

    调用接口:资金授权发码接口 alipay.fund.auth.order.voucher.create


以上接口接入信用能力需要注意入参:

参数名称

参数说明

enable_pay_channels

押金冻结时支持的渠道(信用,余额,余额宝,花呗等等):

无特殊需求时: 不填该参数,默认代表选所有渠道;

需信用单通道时(只使用信用免押): 单传信用渠道(CREDITZHIMA),若无法信用免押将会冻结失败;

Notice: 若传了渠道单不包含 信用渠道(CREDITZHIMA)将无法使用信用能力

extra_param

//需要支持信用授权,该字段必传,其中category取值参照自己业务选取

model.setExtraParam("{\"category\":\"xxx\",\"outStoreCode\":\"charge001\",\"outStoreAlias\":\"充电桩北京路点\"}");

category【必填】为业务分类,详见https://docs.open.alipay.com/10719或找技术支持获取,该参数将影响用户看到业务描述内容,务必选对;

outStoreCode【建议填写】服务站点编号,outStoreAlias【建议填写】服务站点名称,两个描述性信息将在用户端信用守护、支付信息、账单详情页展示,填入有助于用户明白相关服务使用;


信用相关出参:

参数名称

参数说明

pre_auth_type

授权类型,目前支持CREDIT_AUTH(信用授权);商户可根据该标识来判断该笔类型,当返回值为“CREDIT_AUTH”表明该笔为信用授权,没有真实冻结资金;当返回值为空或者不为“CREDIT_AUTH”则表明该笔为普通资金授权,有冻结用户资金


5.1.1 下单结果查询


使用场景:通过该接口可以查询单笔明细的详细信息,细分到每一次操作,如冻结、解冻。


调用接口:资金授权操作查询 alipay.fund.auth.operation.detail.query


5.1.2 撤单


使用场景:只有商户由于业务系统处理超时需要终止后续业务处理或者授权结果未知时可调用撤销,其他正常授权冻结的操作如需实现相同功能请调用资金授权解冻服务


调用接口:资金授权撤销接口 alipay.fund.auth.operation.cancel


5.2 支付


5.2.1 支付并完结


使用场景:商户可通过该接口向用户收款,通过信用代扣或解冻用户授权资金并支付给卖家。若代扣/解冻了全部押金,统一视为订单完结


调用接口:交易创建并支付接口 alipay.trade.pay


接入信用能力需要注意入参:

参数名称

参数说明

out_trade_no

每笔需要扣款款项,唯一对应一个商户外部单号,切勿变更单号扣同一笔款项

背后原因:信用履约记录与商户外部单号一对一关联,多笔不同单号意味着用户有多笔款项需要履约,因此切换外部订单号扣同一笔款项将给用户造成困扰,引起客诉;

auth_confirm_mode

需要完结订单(无需后续扣款):传COMPLETE,执行转支付成功时会将剩余授权资金解除;

保留订单(后续需要继续扣款):传NOT_COMPLETE, 仅执行转支付给收款方;

business_params

商户传入业务信息,具体值要和支付宝约定;非必传;

信用预授权场景可传入具体订单信息,具体示例值:

{"orderBizInfo":"{\"ChargeType\":\"rent\",\"PenaltyPoints\":\\"3分"}"}


5.2.2 取消支付


使用场景:用于交易创建后,用户在一定时间内未进行支付,可调用该接口直接将未付款的交易进行关闭。


调用接口:alipay.trade.close


Notice: 接入信用能力时,关闭交易会同时取消用户该笔待履约记录,可以通过该接口取消用户无需履约的记录;


5.2.3 免支付/取消订单


使用场景:


a. 订单完结且无需扣款时,可通过该接口释放全部押金,并通过"bizComplete":"true" 告知信用订单为完结


b. 信用订单取消,通过该接口释放全部押金,"bizComplete"不传值或传"false"即可


* 该接口支持部分解冻


调用接口:alipay.fund.auth.order.unfreeze


Notice: 当业务结束时切记调用该接口完结整个订单,这样用户信用履约流程才会完结,否则一直处于进行中,会引起客诉,另外未完结的订单会影响用户下一次能否免押;


接入信用能力需要注意入参:

参数名称

参数说明

extra_param

具体示例值:

{"unfreezeBizInfo": "{\"bizComplete\":\"true\"}"}

bizComplete = true: 标识用户已经享受商家提供服务并履约;

bizComplete = false: 标识用户取消订单未享受商家提供服务;

Notice: 接入信用时是否履约会影响用户信用积累及C端感知;



5.3 订单信息同步【信用反馈专用】


使用场景:该接口用于商户向支付宝同步该笔订单信用相关业务信息,比如商家通过其他交易方式完成了订单,将结果同步给支付宝。


调用接口:alipay.trade.orderinfo.sync


接入信用能力需要注意入参:

参数名称

参数说明

trade_no

支付时返回的支付宝交易号,与out_trade_no必填一个,标识反馈的是哪一笔履约信息

biz_type

定值,信用授权场景下传CREDIT_AUTH

order_biz_info

传参示例值:

{\"status\":\"COMPLETE\"}

COMPLETE: 当通过其他渠道收款成功时,同步用户已履约

VIOLATED: 当确认用户违约,需要惩戒时,同步用户已违约,为了保护用户,给用户充足的履约时间,违约状态需要等到交易超时(15天)确认扣不到款项时才能同步;

CLOSED:  不推荐使用,建议直接使用 4.2.2 取消支付 接口,同步取消该履约 且同步违约后,就无法同步关闭;



5.4 信用订单退款


使用场景:商户因业务原因需要退款时,可通过成功交易的商户订单号或支付宝交易号进行退款 ,支持部分退款。


调用接口:交易退款接口 alipay.trade.refund


Notice:退款接口会根据外部请求号out_request_no幂等返回,因此同一笔需要多次部分退款时,必须使用不同的out_request_no。退款接口仅影响资金流转,不影响信用履约相关数据;


6 支付宝小程序信用评估组件

(该部分仅适用于商家支付宝小程序接入信用预授权,商家APP接入流程请忽略该部分)

6.1 组件说明

6.1.1 组件背景

芝麻信用服务的场景下(信用住酒店、租车、租物等),信用带来的免押、后付等权益可以极大提升用户下单转化率,而如果把用户信用评估的结果能提前展示给用户,会进一步提升下单转化率,所以为充分发挥信用在交易中的这种链接促进作用,同时也为了降低商家开发成本,芝麻信用官方提供了一个为用户提供信用评估的支付宝小程序组件。

6.1.2 组件使用流程

屏幕快照 2019-08-08 下午8.38.53.png

6.1.3 使用条件

本组件仅支持在支付宝小程序内使用,需搭配支付宝预授权产品使用。

支付宝预授权接入文档:https://docs.open.alipay.com/20180417160701241302/intro/

信用预授权使用说明:https://docs.open.alipay.com/11157/qlsxya/


6.2 组件接入说明

6.2.1 组件名

zm-credit-assessment


6.2.2 兼容性

请使用my.canIUse('zm-credit-assessment')来判断是否可以使用该组件


6.2.3 样式说明

组件高度是固定的,宽度是基于父容器的宽度的100%,可以通过组件外层包一个view加class来控制组件上下左右边距,来适配自己小程序内当前页面的边距。


6.2.4 使用场景

下单前-preview

属性

属性名

类型

是否必需

描述

备注

scene

String

组件使用场景,该场景下值为preview

preview 为下单前组件样式

query

Object

查询参数,用来透传到芝麻信用服务端评估用户的信用

query结构请参考下文属性说明

onError

Function

当组件内部发生错误(包括属性填写错误和接口错误等)的时候,会调用此函数

可以用这个函数来判断调用组件的时候属性是否填写错误,函数接收一个参数event,通过event.detail.error来获取错误信息


示例样式

下单前.png


示例代码

index.axml文件

<block a:if="{{ canUseCreditAssessment }}">
  <zm-credit-assessment 
    scene="preview"
    query="{{ query }}"
    onError="onError">
  </zm-credit-assessment>
</block>


index.js文件

Page({
  data: {
    canUseCreditAssessment: my.canIUse('zm-credit-assessment'), //判断组件是否可用
    query: {
      serviceId: 'xxxxxx', // serviceId为商户服务ID,芝麻商户平台可查到
      categoryId: 'xxxxxx', // categoryId为服务类目,芝麻商户平台可查到
    },
  },
  
  // 组件内部错误,非必需属性,建议写上用来监听组件内部错误
  onError(event) {
    const { detail = {} } = event
    const { error = {} } = detail
    console.log({ error })
    // todo
  },
})


下单中-service

属性

属性名

类型

是否必需

描述

备注

scene

String

组件使用场景,该场景下值为service

service 为下单中组件样式

query

Object

查询参数,用来透传到芝麻信用服务端评估用户的信用

query结构请参考下文属性说明

onConfirmSuccess

Function

当用户成功选择使用信用服务的时候,会调用此函数

信用评估结果和用户是否选择使用服务并无直接关系,函数接收一个参数event,通过event.detail.query来获取入参信息

onCancelSuccess

Function

当用户成功取消使用信用服务的时候,会调用此函数

信用评估结果和用户是否取消使用服务并无直接关系,函数接收一个参数event,通过event.detail.query来获取入参信息

onError

Function

当组件内部发生错误(包括属性填写错误和接口错误等)的时候,会调用此函数。

注意:在service场景下为必需属性

可以用这个函数来判断调用组件的时候属性是否填写错误,函数接收一个参数event,通过event.detail.error来获取错误信息

onIniting

Function

当组件初始化过程中的时候,会调用此函数

非必填属性,正常情况下该过程非常短

onConfirming

Function

当芝麻信用评估过程中的时候,会调用此函数

非必填属性,正常情况下该过程非常短


示例样式

下单中-关.png下单中-开.png


示例代码

index.axml


<block a:if="{{ canUseCreditAssessment }}">
  <zm-credit-assessment
    scene="service"
    query="{{ query }}"
    onConfirmSuccess="onConfirmSuccess"
    onCancelSuccess="onCancelSuccess"
    onError="onError"
    onIniting="onIniting"
    onConfirming="onConfirming">
  </zm-credit-assessment>
</block>


index.js


Page({
  data: {
    canUseCreditAssessment: my.canIUse('zm-credit-assessment'), //判断组件是否可用
    query: {
      serviceId: 'xxxxxx', // serviceId为商户服务ID,芝麻商户平台可查到
      categoryId: 'xxxxxx', // categoryId为服务类目,芝麻商户平台可查到
      applyAmount: '125.30', // 订单金额,两位小数点的字符串类型格式
    },
  },
  
  // 用户成功选择服务,必需属性
  onConfirmSuccess(event) {
    const { detail = {} } = event
    const { query = {} } = detail
    console.log({ query })
    // todo
  },
  
  // 用户成功取消服务,必需属性
  onCancelSuccess() {
    // todo
  },
  
  // 组件内部错误,必需属性,建议写上用来监听组件内部错误
  onError(event) {
    const { detail = {} } = event
    const { query = {}, error = {} } = detail
    console.log({ query, error })
    // todo
  },
  
  // 组件初始化中,非必需属性
  onIniting() {
    // todo
  },
  
  // 芝麻信用评估中,非必需属性
  onConfirming() {
    // todo
  },
})
说明
  1. 当返回onCancelSuccess时,表示用户不用信用服务,用户提交订单后可按原有流程继续,比如走预付或交押金流程。
  2. 当返回onConfirmSuccess是,表示用户要用信用服务,用户提交订单后需调用支付宝预授权产品,走芝麻信用预授权流程。


下单后-result

属性

属性名

类型

是否必需

描述

备注

scene

String

组件使用场景,该场景下值为result

result 为下单后组件样式

query

Object

查询参数,用来透传到芝麻信用服务端评估用户的信用

query结构请参考下文属性说明

onError

Function

当组件内部发生错误(包括属性填写错误和接口错误等)的时候,会调用此函数

可以用这个函数来判断调用组件的时候属性是否填写错误,函数接收一个参数event,通过event.detail.error来获取错误信息


示例样式

下单后.png


示例代码

index.axml文件

<block a:if="{{ canUseCreditAssessment }}">
  <zm-credit-assessment 
    scene="result"
    query="{{ query }}"
    onError="onError">
  </zm-credit-assessment>
</block>


index.js文件

Page({
  data: {
    canUseCreditAssessment: my.canIUse('zm-credit-assessment'), //判断组件是否可用
    query: {
      serviceId: 'xxxxxx', // serviceId为商户服务ID,芝麻商户平台可查到
      categoryId: 'xxxxxx', // categoryId为服务类目,芝麻商户平台可查到
    },
  },
  
  // 组件内部错误,非必需属性,建议写上用来监听组件内部错误
  onError(event) {
    const { detail = {} } = event
    const { error = {} } = detail
    console.log({ error })
    // todo
  },
})


6.2.5 属性说明

query结构

属性名

类型

是否必需

描述

备注

serviceId

String

商户服务ID

即【服务ID,示例:2019032600000000000000188900

配置信用服务时会生成,查看已创建的信用服务请到https://zhima.alipay.com/admin/creditservice/index.htm#/list

categoryId

String

商户类目ID

即调用预授权冻结接口入参时extra_param的category;

接口详情https://docs.open.alipay.com/20180417160701241302/vo4kv7/

applyAmount

String

当scene为service时必需,其他场景非必需

当前订单金额

格式为字符串类型,例如

'125.30'


service场景回调函数说明

当组件属性scene为service时,onConfirmSuccess、onCancelSuccess和onError三个属性必须传入组件。

  • onConfirmSuccess 仅代表用户成功选择使用信用服务,并不代表用户一定通过了芝麻信用的评估,商户可以将用户成功选择信用服务的结果带到下一步信用受理台来执行具体操作。
  • onCancelSuccess 仅代表用户成功取消使用信用服务,商户可以按完全不使用芝麻信用服务的流程,走商户自己的下单交易流程。

onError 调用此方法可以监听组件报错,可能为调用组件时属性传入错误,也可能是组件内部接口错误,通过监听错误信息来做相应处理。



7上线使用


7.1 自研商户


商户已创建信用服务的情况下,应用开发完成发布上线后即可正常使用


详见《使用应用指南》https://docs.open.alipay.com/399/106920



7.2 ISV拓展商户


7.2.1 商户授权


应用上线后,服务商可拓展商户,引导商户完成授权和签约业务功能

详见《使用应用指南》https://docs.open.alipay.com/399/106920


7.2.2 引导商户创建信用服务

备注:酒店信用住场景,信用服务不开放配置,请直接联系芝麻信用业务接口人配置。


a. 引导商户使用企业支付宝账户登录芝麻信用服务平台,找到也业务匹配的行业方案(当前一个账号只能创建一个行业方案,请确认行业方案中包含你所经营的品类,再进行创建)

b. 进入行业方案详情,创建该行业方案对应的信用服务(若需要登录,请登录已认证的企业支付宝账号)。

c. 根据页面引导,分别完成基础信息、信用评估、信用守护的配置,并提交审核(信用守护中非必填项,如配置小程序链接,可以应用开发后再补充,不影响审核)。


审核预计1-2个工作日,审核通过后信用服务即发布上线。配置如有疑问,可参考案例:https://cshall.alipay.com/enterprise/knowledgeDetail.htm?knowledgeId=201602379237


* 商户无需再单独签约“支付宝预授权”或“当面资金授权”产品,5.2.1商户授权时已完成签约








onlineServer