小程序对接流程
泊链通用支付接口(小程序)
【临停】跳转泊链小程序支付停车费对接文档
【月卡】跳转泊链小程序支付停车费对接文档
第三方小程序互相跳转
通过半屏形式调用本小程序
文档云
-
+
首页
【临停】跳转泊链小程序支付停车费对接文档
## 一、对接前期准备工作 1、已有互联互通平台厂商编号 2、已有互联互通平台车场编号 3、车场标准进件成功后,找互联互通审核人员申请[通过半屏形式调用本小程序](https://doc.bolinkpaas.com/doc/2087/ "通过半屏形式调用本小程序")。 4、微信小程序支付支持微信预付 5、"pay_url"默认使用`https://s.bolink.club`;如果配置的是第三方域名,需要先在互联互通的微信小程序后台配置域名白名 6、配置互联互通小程序的appid参数${appid}:一码收银台的appid参数:`wx0870f79235e513f7`;若需要使用`一码收银台`小程序支付的同时,兼容使用互联互通的旧小程序支付(<strong>appid参数是`wxbd08b4baa10fcc1d`后续会下线停止维护</strong>)的情况,请接入`二、动态获取当前车场使用的支付小程序appid值`接口来动态获取车场当前使用的小程序appid进行下方支付场景对接。 <br/><br/> ## 二、动态获取当前车场使用的支付小程序appid值 ### 1. 获取当前车场支持的支付小程序appid #### a. 接口地址: https://s.bolink.club/unionapi/applet/appInfo <br/> #### b. 请求方式 POST Content-Type: application/json;charset=utf-8 <br/> #### c. 接口入参 | 参数 | 名称 | 类型 | | ------- | ----------- | ------ | | data | 业务参数对象 | Object | | parkId | 车场编号 | String | | unionId | 厂商编号 | Long | | sign | 接口签名 | String | <br/> #### d. 请求示例 ``` POST https://s.bolink.club/unionapi/applet/appInfo 请求头: Content-Type: application/json;charset=utf-8 请求正文: { "data":{ "parkId":"202028", "unionId": 200141 }, "sign":"7A48813356384623A2C8558D415EFAD4" } ``` <br/> #### e. 接口出参 | 参数 | 名称 | 类型 | 备注 | | ------- | --------- | ------- | ------------------------------------------------------------ | | code | 响应状态码 | Integer | 200: 成功, 其他状态码均为失败; | | message | 提示信息 | String | 针对状态码提供的提示信息; | | data | 业务数据 | String | 状态码为200时提供, 该值数据为支付小程序appid, `下方的场景中${appid}均使用该值` | <br/> #### f. 响应示例 ``` 响应头: Content-Type: application/json;charset=utf-8 响应正文: { "code":200, "message":"success", "data":"wx0870f79235e513f7" } ``` __`备注: 得到appid值'wx0870f79235e513f7'后在下方业务场景中替换${appid}进行使用`__ <br/> #### g. 入参签名说明 1)针对入参中的业务参数data内的数据进行计算签名; 2)对data中的数据按照字段名进行自然序(ASCII)排序并转成字符串; 3)准备unionId对应的厂商的ukey;(若不清楚是什么,请联系技术支持协助获取) 4)拼接排序的业务参数和ukey进行MD5加密并转大写得到签名值 <br/> #### h.入参签名示例 ``` /** * 计算签名方法 * @param bizParams 业务参数对象 * @param ukey 厂商用来计算签名的ukey * @return 生成的签名值 */ function createSign(let bizParams, let ukey){ let signFix = "key="; let sortParams = {}; let patamKeys = Object.keys(bizParams).sort(); patamKeys.forEach(function(item,idx){ sortParams[item]=(bizParams[item]); }) let signParams = JSON.stringify(sortParams); signParams+= (signFix+ukey) // 该处使用CryptoJS演示MD5加密, 请自行更换当前使用的计算MD5的插件 var signValue = CryptoJS.MD5(signParams).toString().toLocaleUpperCase(); return signValue; } //调用createSign()生成sign值 let sign = createSign({"unionId": 200141,"parkId":"202028"},'F828AE7756A2E58B') // 得到待计算的字符串为: {"parkId":"202028","unionId":200141}key=F828AE7756A2E58B //计算出来的sign值为: 7A48813356384623A2C8558D415EFAD4 ``` <br/><br/> ## 二、对接场景区分 ### 场景1:第三方小程序不携带支付信息跳转(预付查询,进入输入车牌页) appid: “${appid}”, path: “pages/order/order”, extraData:{ "union_id": 厂商编号 *必填, "park_id":车场编号 *必填, "pay_url": 独立云第三方域名地址,示例: "https://s.bolink.club", "flag":小程序跳转的标识,支付成功后,回跳小程序时,会携带此参数, }     ### 场景2:第三方小程序携带支付信息(直接出来支付页面) appid: “${appid}”, path: “pages/park/park”, extraData:{ "union_id":厂商编号 *必填, "park_id":车场编号 *必填, "order_id":订单编号 *必填, "plate_number":车牌号码 *必填, "money":支付金额 *必填 "in_time":1594175260 *必填,入场时间 "pay_url": 独立云第三方域名地址,示例: "https://s.bolink.club", "flag":小程序跳转的标识,支付成功后,回跳小程序时,会携带此参数 }    ## 常见问题 1.sub mch id与sub appid不匹配 联系进件技术支持,重新进件。
admin
2025年7月8日 10:52
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码