超级支付接口API

超级支付接口API

一、背景说明:

超级支付,也就是包涵了免密支付的两个类型(用户已签约免密支付和用户未签约的二维码免密支付),以及普通二维码支付。
三个支付类型说明:
(1)普通二维码支付:就是车机上显示二维码,用户通过手机支付宝、微信、百度钱包扫码支付

(2)已签约免密支付:指用户已经向支付宝签约了免密支付,支付的额度上限是<200元。 用户满足该支付方式后,直接请求接口后会直接提示支付失败、成功、支付中

(3)未签约二维码免密支付:是指用户未签约不能通过“已签约免密支付”,但可以通过此支付类型去开通“已签约免密支付”,此支付类型和“普通二维码支付”区别在于是否使用手机支付宝app扫码支付。

     用户使用支付宝app扫码支付时候,拉起支付宝页面中会默认沟通“开通免密支付”(不能把勾选掉的页面),并且完成支付
     用户使用微信app扫码支付,那就和“普通二维码支付”没区别
    注意:
    a、在生成二维码的时候,车联网在输出二维码url之前需要向百度收银台把该用户申请“开通免密支付”,开通请求是异步回调告诉车联网用户已签约
    b、用户通过此支付方式开通了后可以使用“已签约免密支付”支付方式。当时取消只能从支付宝做取消操作
    c、如果用户开通后又在支付宝取消“已签约免密支付”,车联网也会收到回调修改数据库取消免密支付,但是,取消时间超过1个月,用户重新可以看到此支付方式的二维码,支付宝扫码支付重新开通

二、共同说明api说明

 Api共同接口说明V2
 注意:如果外部人员看不到,需要导出上连接文档

三、接口地址

 iovpay/v2/opf/superpay

四、Headers

 Cookie: BDUSS=xxxxxx
 注意:BDUSS是百度内部安全级很高的数据,不能经过车企或合作方的服务器,如果无法获取BDUSS,必须传baidu_uid
 主要云端对云端的外部开发者不需要传该值

五、请求参数

参数名 类型 是否必填 最大长度 描述 实例值
oem_id Int - 服务标识 11
ak string 30 配置给车机的固定字符串 ford
cn string 30 配置给车机的固定字符串
from_cloud string 1 值为1。该接口主要是给车机调用车联网云端接口,但是有个别开发者因为业务需要需要云端对云端,所以不需要检查用户登录状态。
baidu_uid BigInt - 外部开发者获取不到百度bduss cookie时,即from_cloud=1时必须传该值 1514917884
version String 5 调用的接口版本固定值为1.0 1.0
timestamp Int 10 发送请求的时间戳,精确到秒 1514917884
sign String - 商户请求参数的签名串,详见签名 详见签名与验签文档
device_id String 32 设备号
device_from Int 2 设备类型 1-andr 2-ios 3-车机 4-云
uuid String 百度移动设备唯一标识。车机激活后就会在车机上保存
vin String 17 车架号 1G1BL52P7TR115520
lng String - 设备当前经度 116.289573
lat String - 设备当前纬度 39.9948
out_trade_no String - 开发者或小程序自己保存的订单号 1223
order_id String 64 车联网订单id 1069227442364
goods_name String 200 商品名称,允许包含中文;不超过128个字符或64个汉字 花木兰
goods_url String 255 商品在商户网站上的url;不超过255个字符 -
goods_count Int - 商品数量 1
goods_total_price Int - 订单总金额,以分为单位 10000
transport_price Int - 运费,以分为单位 100
goods_unit_price Int - 商品单价,以分为单位 10000
opf_appid Int - 开放平台上开发者申请后自动生成的一个值 123456
apikey Int - 开放平台上开发者申请后自动生成的一个值 -
secretkey Int - 开放平台上开发者申请后自动生成的一个值 -
order_time String - 创建订单的时间 2020-09-09 18:06:56
is_get_payfree_type int 1 表示是否这次请求是否想获取用户是否可以直接“已签约免密支付”支付类型。表示后端判断是否用户可以直接免密支付(不是未签约的二维码面免密支付),如果可以,接口先返回两个字段pay_type和pay_type_level_two给客户端识别判断后在客户端显示“免密支付中”(文案按照项目交互设计为准),再次调用同一个接口但该参数值为0后进行真实的“已签约免密支付”。注意:如果命中免密支付,则需要请求2次。
is_pay_free_fail_then_normal_qr_pay int 1 是否选择一个策略,该策略:已签约免密支付(pay_type='3'&pay_type_level_two='3.1')失败后需要走普通二维码支付则再次请求时该传值等于1则直接走普通二维码支付逻辑返回二维码url

0:表示不直接普通二维码支付策略 1:该请求绕过所有策略,直接走普通二维策略 该策略优先级比is_get_payfree_type=1低 返回结果中字段:pay_type=2,pay_type_level_two不返回||

六、返回参数

接口返回固定为下面的结构

名称 类型 是否必须 最大长度 描述 实例
errno int 返回码 0
errmsg string 返回信息
data object 返回数据 {}
date string 时间 2020-09-09 19:38:38
baidurd string 百度用户后续定位问题字符串
百度内部人员才需要关注
errno  返回0表示成功,其他值为失败
data 的值只有成功的时候才会有可能返回,值可为空
baidurd 部分模块没有返回,属于正常

当errno为0时,data字段为json格式,参数如下:

参数名 类型 是否必 最大长度 描述 实例值
out_trade_no String 32 商户订单号 900020199
order_id String 64 车联网订单id 1069227442364
order_name String 订单名称
pay_qrcode String - 二维码地址,“已签约免密支付“类型不会有二维码连接,“普通二维码”和“未签约免密二维码免密”都会有该字段 http://m.prev.nuomi.com/component/qrcode-cashier/1.0.5/page/order-create.html?order_id=65912606568482&uid=xxx
order_amount String - 订单总价,单位分 1
opf_appid String - 开放平台上开发者申请后自动生成的一个值 18343001
expire_time String 19 订单时间,格式为"yyyy-MM-dd HH:mm:ss" 2018-08-08 08:08:08
pay_result String 已签约免密支付的结果: 1:支付中;2:已支付;3:支付失败 ;0 其他
pay_type String 1 支付类型一级类型,1人脸支付,2普通二维码支付,3免密支付(包涵签约和未签约二维码)
pay_type_level_two String 1 支付类型二级类型,只有pay_type=3才会出现,值等于3.1表示“已签约免密支付”;3.2表示“未签约二维码支付”,可以用于提示
is_get_payfree_type String 1 透传请求入参is_get_payfree_type的值,返回类型是字符串,is_get_payfree_type=1并且pay_type_level_two="3.1"可以在客户端显示“免密支付中”提示,然后再请求一次带参is_get_payfree_type=0进行真正的免密支付流程。
is_pay_free_fail_then_normal_qr_pay String 1 当入参is_pay_free_fail_then_normal_qr_pay=1 并且正常返回普通二维码支付方式时,回传此值

错误码 todo

支付入驻车联网下单接口加签与验签规则