支付宝小程序API 信用借还
2018-01-09 11:46 更新
有关信用借还详细功能,见信用借还产品介绍
my.zmCreditBorrow
调用此接口唤起芝麻信用页面
入参说明
注意:
- 如果参数值有中文, 请使用
encodeURIComponent
来编码该参数值; - 如果
invoke_state
的JSON
字符串的某一项值包含中文,请使用encodeURIComponent
对该值进行编码;
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
out_order_no | String | 是 | 外部订单号,需要唯一,由商户传入,芝麻内部会做幂等控制,格式为:yyyyMMddHHmmss+随机数 |
product_code | String | 是 | 信用借还的产品码,传入固定值:w1010100000000002858 |
goods_name | String | 是 | 物品名称,最长不能超过14个汉字 |
rent_unit | String | 是 | 租金单位,租金+租金单位组合才具备实际的租金意义。取值定义如下:DAY_YUAN:元/天HOUR_YUAN:元/小时YUAN:元YUAN_ONCE: 元/次 |
rent_amount | String | 是 | 租金,租金+租金单位组合才具备实际的租金意义。>0.00元,代表有租金=0.00元,代表无租金,免费借用注:参数传值必须>=0,传入其他值会报错参数非法 |
deposit_amount | String | 是 | 押金,金额单位:元。注:不允许免押金的用户按此金额支付押金;当物品丢失时,赔偿金额不得高于该金额。 |
deposit_state | String | 是 | 该字段目前默认传Y;是否支持当借用用户信用不够(不准入)时,可让用户支付押金借用:Y:支持N:不支持 注:支付押金的金额等同于deposit_amount。 |
invoke_return_url | String | 是 | 回调到商户的小程序schema地址。说明:商户的回调地址可以在商户后台里进行配置,服务端回调时,首先根据参数:invoke_type 查询是否有对应的配置地址,如果有,则使用已定义的地址,否则,使用该字段定义的地址执行回调;参考表格下方的说明一;小程序回调地址参考表格下方的说明三; |
invoke_type | String | 是 | 商户访问蚂蚁的对接模式,默认传TINYAPP:TINYAPP:回跳至小程序地址;WINDOWS:支付宝服务窗,默认值; |
credit_biz | String | 是 | 信用业务服务,注意:该字段不能为空,且必须根据说明的指引配置商户专属的场景ID,商户自助接入时,登录后台可配置场景ID,将后台配置的场景ID作为该字段的输入;参考说明一自助进行配置; |
borrow_time | String | 否 | 商户订单创建的起始借用时间,格式:YYYY-MM-DD HH:MM:SS。如果不传入或者为空,则认为订单创建起始时间为调用此接口时的时间。 |
expiry_time | String | 否 | 到期时间,不允许为空,请根据实际业务合理设置该值,格式:YYYY-MM-DD HH:MM:SS,是指最晚归还时间,表示借用用户如果超过此时间还未完结订单(未归还物品或者未支付租金)将会进入逾期状态,芝麻会给借用用户发送催收提醒;需要晚于borrow_time。 |
mobile_no | String | 否 | 借用用户的手机号码,可选字段。推荐商户传入此值,会将此手机号码与用户身份信息进行匹配验证,防范欺诈风险。 |
borrow_shop_name | String | 否 | 物品借用地点的描述,便于用户知道物品是在哪里借的。可为空 |
rent_settle_type | String | 否 | 租金的结算方式,非必填字段,默认是支付宝租金结算支付 merchant:表示商户自行结算,信用借还不提供租金支付能力; alipay:表示使用支付宝支付功能,给用户提供租金代扣及赔偿金支付能力; |
invoke_state | String | 否 | 商户请求状态上下文。商户发起借用服务时,需要在借用结束后返回给商户的参数,格式:json;如果json的某一项值包含中文,请使用encodeURIComponent对该值进行编码;例如:var ext = { name: encodeURIComponent('名字')};var obj = { invoke_state: JSON.stringify(ext)} |
rent_info | String | 否 | 租金信息描述 ,长度不超过14个汉字,只用于页面展示给C端用户,除此之外无其他意义。 |
name | String | 否 | 借用用户的真实姓名,非必填字段。但name和cert_no必须同时非空,或者同时为空,一旦传入会对用户身份进行校验。 |
cert_no | String | 否 | 借用用户的真实身份证号,非必填字段。但name和cert_no必须同时非空,或者同时为空,一旦传入会对用户身份进行校验。 |
address | String | 否 | 借用用户的收货地址,可选字段,最大长度128。推荐商户传入此值,会将此手机号码与用户身份信息进行匹配验证,防范欺诈风险。 |
success | Function | 否 | 调用成功的回调函数 |
fail | Function | 否 | 调用失败的回调函数 |
complete | Function | 否 | 调用结束的回调函数(调用成功、失败都会执行) |
说明一:
- 支付宝商户账号登录我的商家服务打开入口链接;
- 商家服务中选择“您可能需要->信用借还”或者点击链接;
- 场景ID配置->配置新ID,选择对应的业务类型、服务类目和联盟,将生成的场景ID作为credit_biz的值传入即可;
- 回调地址配置->修改对应类型的回调地址
说明二:
- 如果参数值中有中文, 请使用 encodeURIComponent 来编码参数值;
- 如果 invoke_state 的 JSON 字符串的某一项值包含中文,请使用encodeURIComponent对该值进行编码;
说明三:
- 小程序回调地址示例一:alipays://platformapi/startapp?appId=1999;
- 小程序回调地址示例二:alipays://platformapi/startapp?appId=1999&page=pages/map;
出参
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
invoke_state | String | {"user_name":"john"} | 商户发起借用服务时传入的参数,需要在借用结束后返回给商户的参数 |
out_order_no | String | 201610010000283627 | 外部订单号,需要唯一,由商户传入,芝麻内部会做幂等控制,格式为yyyyMMddHHmmss+4位随机数 |
order_no | String | 10020027631 | 芝麻信用借还订单号 |
admit_state | String | Y | 是否准入:Y:准入;N:不准入(该字段目前无实际意义) |
user_id | String | 2088202924240029 | 物品借用/租赁者的用户id |
其他字段:
resultStatus 状态码
resultStatus | 描述 |
---|---|
6001 | 用户取消了业务流程 |
6002 | 网络异常 |
9000 | 成功 |
4000 | 系统异常 |
错误码
统一对外错误码 | 内部业务错误码 | 错误描述 | 解决方案 |
---|---|---|---|
INVALID_PARAMETER | ZMMER.ILLEGAL_ARGUMENT | 参数有误。 | 请确认参数格式 |
INVALID_PARAMETER | ZMMER.NULL_ARGUMENT | 参数有误。 | 请确认参数是否正确 |
ARRANGEMENT_NOT_EXIST | ZMMER.ARRANGEMENT_NOT_EXIST | 商户对产品未签约 | 请联系业务与芝麻签约信用借还产品 |
DEPOSIT_CLOSED | ZMMER.DEPOSIT_CLOSED | 不支持押金模式 | 目前不支持押金模式,请与芝麻业务确认 |
GOODS_HAS_BORROW | ZMMER.GOODS_HAS_BORROW | 该物品已经借用,请先归还后再借 | 请先归还物品 |
PREAUTH_FREEZE_ERROR | ZMMER.PREAUTH_FREEZE_ERROR | 该用户预授权冻结押金失败 | 请确认支付宝账号中是否有足够的金额 |
WITHHOLD_CONTRACT_ERROR | ZMMER.WITHHOLD_CONTRACT_ERROR | 签约代扣协议错误 | 请联系支付宝客服 |
ZM_ACCOUT_REGISTER_FAIL | ZMMER.ZM_ACCOUT_REGISTER_FAIL | 芝麻会员开通失败 | 请确保支付宝会员是否正常 |
OUT_ORDER_NO_INVALID | ZMMER.OUT_ORDER_NO_INVALID | 外部订单号重复 | 请更换外部订单号 |
USER_NOT_LOGON | ZMMER.USER_NOT_LOGON | 该支付宝账号没有登录 | 请登录支付宝 |
INFOSEC_VERIFY_FAILED | ZMMER.INFOSEC_VERIFY_FAILED | 信息含敏感内容 | 请检查入参信息是否包含敏感内容 |
示例代码
my.zmCreditBorrow({
credit_biz: "",
out_order_no: "",
borrow_shop_name: "",
goods_name: "",
product_code: "w1010100000000002858",
rent_unit: "HOUR_YUAN",
rent_amount: "0.10",
deposit_amount: "0.50",
deposit_state: "Y",
invoke_return_url: "",
invoke_type: "TINYAPP",
borrow_time: "2017-04-27 10:01:01",
expiry_time: "2017-05-27 10:01:01",
rent_info: "2hour-free",
success: (res) => {
try {
const {resultStatus, result} = res;
switch (resultStatus) {
case '9000':
const callbackData = res.result.callbackData;
const decodedCallbackData = decodeURIComponent(callbackData)
const json = JSON.parse(decodedCallbackData.match(/{.*}/));
const jsonStr = JSON.stringify(json, null, 4);
if (json.success === true || json.success === 'true') {
// 创建订单成功, 此时可以跳转到订单详情页面
my.alert({content: '下单成功: ' + jsonStr})
} else {
// 创建订单失败, 请提示用户创建失败
my.alert({content: '下单失败: ' + jsonStr})
}
this.setData({
callbackData: callbackData,
decodedCallbackData: decodedCallbackData,
parsedJSON: jsonStr,
})
break;
case '6001':
// 用户点击返回, 取消此次服务, 此时可以给提示
my.alert({content: '取消'})
break;
default:
break;
}
} catch (error) {
// 异常, 请在这里提示用户稍后重试
my.alert({
content: '异常' + JSON.stringify(error, null, 4)
});
}
},
fail: (error) => {
// 调用接口失败, 请在这里提示用户稍后重试
my.alert({
content: '调用失败' + JSON.stringify(error, null, 4)
});
}
});
以上内容是否对您有帮助:
更多建议: