用户授权/开通车主服务

更新时间:2024.11.14

应用场景

在停车场、高速、加油等场景下,商户需在用户授权后,使用车主服务进行扣费。当用户未授权、未开通时,商户可引导用户到此接口进行授权或开通车主服务。

注意:

目前车主服务只支持蓝牌、绿牌,商户侧引导用户添加车牌时需明确告知用户黄牌车牌号请不要添加到车主平台

流程介绍

  1. 调用用户状态查询api获取当前用户车主状态,如果当前用户车主状态异常(如有欠费(OVERDUE),未授权(UNAUTHORIZED),校验授权关系失败(VEHICLE_AUTH_ERROR)),
    接口同步返回跳转路径(path字段)商户侧需根据步骤2引导用户进入车主服务进行相关操作;如果当前用户车主状态正常,不会返回path字段,不需要再引导用户进入车主服务

  2. – 小程序,APP跳转,通过跳转路径(path)调用 ‘用户授权/开通接口api’ 进入车主小程序的对应页面,用户进行授权/开通的操作
    – H5跳转,通过跳转路径(path)调用 ‘用户授权/开通接口api’ 进入车主H5对应的页面,用户进行授权/开通操作

  3. 返回商户小程序,APP或H5页面后再次调用用户状态查询api确认用户最新车主状态及车牌信息

1.小程序跳转接口调用请求说明

接口

wx.navigateToMiniProgram(OBJECT)接口

说明

iOS 微信客户端 6.5.9 版本开始支持,Android 客户端即将在 6.5.10 版本开始支持

OBJECT参数说明:

字段含义

变量名

必填

类型

示例值

描述

微信车主小程序appid

appId

String

wxbcad394b3d99dac9

固定值
wxbcad394b3d99dac9

场景信息传递给小程序的数据

extraData

object

{ "appid": "wx426a3015555a46be", "mch_id": "10000098", "nonce_str": "FF1A406564EE70106445", "sign_type": "HMAC-SHA256", "sign":"EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5", "trade_scene": "PARKING", "openid": "oUpF8uMEb4qRXf22hE3X68TekukE" }

授权的请求参数,详情见extraData字段详细说明

场景信息传递给小程序的数据

打开小程序的页面路径

path

string

pages/route/index

打开小程序的页面路径,取值为‘用户状态查询接口’返回的跳转路径(path字段,如查询接口没返回该字段,说明不需要再调用‘用户授权/开通接口’)

接口调用成功的回调函数

success

Function

-

-

接口调用失败的回调函数

fail

Function

-

-

接口调用结束的回调函数

complete

Function

-

调用成功、失败都会执行

示例:

1wx.navigateToMiniProgram({
2    appId: 'wxbcad394b3d99dac9',
3    path: 'pages/route/index',
4    extraData: {
5        appid: 'wx426a3015555a46be',
6        mch_id: '10000098',
7        nonce_str: 'FF1A406564EE70106445',
8        sign_type: 'HMAC-SHA256',
9        sign:'EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5',
10        trade_scene: 'PARKING',
11        plate_number: '粤B888888',
12        openid: 'oUpF8uMEb4qRXf22hE3X68TekukE'
13},
14    success(res) {
15    },
16    fail(res) {
17		// 未成功跳转到车主小程序
18    }
19})

用户授权完成之后,会跳转回商户小程序。可通过onShow(OBJECT)所携带的参数判断返回结果,OBJECT返回参数请查看小程序开发文档onShow参数说明

示例:

1App({
2    onShow(res) {
3        if (res.scene === 1038) { // 场景值1038:从被打开的小程序返回
4            const { appId, extraData } = res.referrerInfo
5            if (appId == 'wxbcad394b3d99dac9') { // appId为wxbcad394b3d99dac9:从车主小程序跳转回来
6                    // TODO
7                    // 需要发起‘用户状态查询接口’确认授权/开通结果
8            }
9        }
10    }
11})

2.H5跳转接口调用请求说明 (注意:参数之后需要拼接#wechat_redirect

在用户状态查询接口返回的path参数通过GET请求的方式拼接以下参数:

字段名

变量名

必填

类型

示例值

描述

公众账号id

appid

String(32)

wxcbda96de0b165486

微信支付分配的公众账号id

商户号

mch_id

String(32)

10000098

微信支付分配的商户号

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。

签名类型

sign_type

String(32)

HMAC-SHA256

签名类型,默认为HMAC-SHA256

签名

sign

String(64)

EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5

签名,详见签名生成算法

交易场景

trade_scene

String(16)

PARKING

委托代扣的交易场景值,目前支持 :

  1. PARKING:车场停车场景 ;

  2. PARKING SPACE 车位停车场景;

  3. GAS 加油场景;

  4. HIGHWAY 高速场景;

  5. BRIDGE 路桥场景;

该值会向微信用户进行展示

用户标识

openid

String(32)

oUpF8uMEb4qRXf22hE3X68TekukE

用户在商户appid下的唯一标识

车牌号

plate_number

String(32)

粤B888888

车牌号。仅包括省份+车牌,不包括特殊字符。当场景值为 HIGHWAY 时,plate_number必传

物料信息

material_info

String(64)

12365577|0_1_0_4

用户通过扫码进入商户小程序时所扫的物料码信息

通道类型

channel_type

String(32)

ETC

高速通道类型,目前可选:ETC、MTC。用户车牌必须具有通道标识时,才允许扣费。当场景值为 HIGHWAY 高速场景时必传

H5授权开通示例

1path?appid=wxcbda96de0b165486&mch_id=10000098&openid=oUpF8uMEb4qRXf22hE3X68TekukE
2&plate_number=%E7%B2%A4B888888&sign=EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5
3&sign_type=HMAC-SHA256&nonce_str=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&trade_scene=PARKING#wechat_redirect

用户授权/开通有可能出现失败的情况,回跳到商户侧报备的回跳地址后商户需主动发起一次用户状态查询,获取最新的用户车主状态展示给用户

3.APP跳转接口调用请求说明

字段名

变量名

必填

类型

示例值

描述

公众账号id

appid

String(32)

wxcbda96de0b165486

微信支付分配的公众账号id

商户号

mch_id

String(32)

10000098

微信支付分配的商户号

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。

签名类型

sign_type

String(32)

HMAC-SHA256

签名类型,默认为HMAC-SHA256

签名

sign

String(64)

EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5

签名,详见签名生成算法

交易场景

trade_scene

String(16)

PARKING

委托代扣的交易场景值,目前支持 :

  1. PARKING:车场停车场景 ;

  2. PARKING SPACE 车位停车场景;

  3. GAS 加油场景;

  4. HIGHWAY 高速场景;

  5. BRIDGE 路桥场景;

该值会向微信用户进行展示

用户标识

openid

String(32)

oUpF8uMEb4qRXf22hE3X68TekukE

用户在商户appid下的唯一标识

车牌号

plate_number

String(32)

粤B888888

车牌号。仅包括省份+车牌,不包括特殊字符。当场景值为 HIGHWAY 时,plate_number必传

物料信息

material_info

String(64)

12365577|0_1_0_4

用户通过扫码进入商户小程序时所扫的物料码信息

通道类型

channel_type

String(32)

ETC

高速通道类型,目前可选:ETC、MTC。用户车牌必须具有通道标识时,才允许扣费。当场景值为 HIGHWAY 高速场景时必传

安卓举例如下(APP调起小程序详细说明):

1String appId = "wxcdbdf056ad5fc1fb"; // 填应用AppId
2IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
3WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
4req.userName = "gh_518c42c65952"; // 填车主小程序原始id,取固定值gh_518c42c65952
5req.path = "/pages/route/index?extraData={\"appid\":\"wxcbda96de0b165486\",\"mch_id\":\"10000098\", \"nonce_str\":\"5K8264ILTKCH16CQ2502SI8ZNMTM67VS\",\"sign_type\":\"HMAC-SHA256\",\"trade_scene\": \"HIGHWAY\",\"openid\":\"oUpF8uMEb4qRXf22hE3X68TekukE\",\"plate_number\":\"粤Z88888A \", \"sign\":\"C99D665499D169E97D6278868C06FB91E5DD87BCDA758FA4869669F12C27FEFC\"}";//拉起小程序页面的可带参路径,不填默认拉起小程序首页
6req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;
7api.sendReq(req);

用户开通/授权完成之后,会跳转回到商户的APP,暂时不返回参数。商户侧APP接收到客户端回调后再次调用用户状态查询接口获取用户的最新车主状态