文档中心 > IOT设备云端接入

充电桩交易回流日志接入指南

更新时间:2019/01/17 访问次数:1191

1.概述

本文档的目标用户为支付宝充电桩业务接入端应用开发者。
本文档旨在说明支付宝IOT云端提供的充电桩交易日志接入方法以及第三方授权使用方法。

2.接入前准备

  • 熟悉支付宝开放平台接入使用方法,申请并配置小程序。
  • 下载SDK完整版(需支付宝内同学提供),版本3.4.77.ALL及以上;当前SDK支持Java、.net、Python、PHP,若使用其他语言可以通过http请求访问。
  • 确认安装包中存在类: com.alipay.api.request.AlipayCommerceIotMdeviceprodDevicelogUploadRequest
  • 若使用第三方授权方式接入,请参考《第三方应用授权》。
    请务必在订单完结的时候,实时地回传数据,以保证数据的时效性。

3.接入日志格式

3.1 充电桩数据回流

用于上传运营商充电桩基础信息。
充电桩数据回流模板名称(template_name):chargePile。

字段标识 名称 必填 格式 可选项 描述 demo
pile_id 充电桩ID 运营商体系内充电桩的ID 2891839
type 行业 [EV,BC]
EV-电瓶车充换电
BC-电动车充换电
电瓶车充换电、电动车充换电 EV
pile_type 充电桩类型 [CP,SC,DC,AC]
CP-充电桩
SC-换电柜
DC-直流桩
AC-交流桩
电瓶车充换电:充电桩、换电柜;电动车充换电:直流桩、交流桩 DC
socket_num 充电桩插座数 整数 充电桩包含插座数 8
site_id 所属站点ID 在运营商系统中标明的站点ID s8298394
site_name 所属站点名称 在运营商系统中标明的站点名称 xxx站点
site_type 所属站点类型 [GROUND,UNDER,OTHER]
GROUND-地面
UNDER-底下
OTHER-其他
充电桩所在位置,地面,地下,其他 GROUND
province_code 所属站点省编码 站点所在省的编码,请传入国标码 330000
city_code 所属站点市编码 站点所在市的编码,请传入国标码 330100
area_code 所属站点区编码 站点所在区的编码,请传入国标码 330106
address 所属站点详细地址 除了省市区以外的详细地址描述,比如:池华街22号XX小区 xxx路xxx街xx号
channel_biz_name 渠道商名称 该充电桩的渠道商的名称 xx渠道商
property_name 物业名称 该插座的物业的名称 xx物业
site_longitude 所属站点经度 小数 站点经度 120.15
site_latitude 所属站点纬度 小数 站点纬度 30.28
pile_status 充电桩状态 [BIND,UNBIND]
BIND-已和站点绑定
UNBIND-已经和站点解绑
充电桩状态,已绑定到站点或从站点解绑 UNBIND
ext_info 扩展字段 部分运营商如果要传入其他数据,可以通过这个扩展字段传入,特殊字段:
test 是否测试数据
Y-测试数据,正常数据不需要填写
{‘manufactor’:‘xx公司’}

TIPS:桩状态有变化是应重新回流充电桩数据。

3.2 充电订单数据回流

用户充电行为的数据回流(不包含用户充值行为)
充电订单数据回流模板名称(template_name):chargeOrder。

字段标识 名称 必填 格式 可选项 描述 demo
doc_type 订单类型 [Charge]
Charge-充电模式
充电订单类型,固定值Charge Charge
order_no 运营商订单号 在运营商端的订单号 OD2018110283948294948
charge_time 充电开始时间 yyyy-MM-DD HH:mm:ss 充电行为发生时间,可早于当前时间,用于补齐历史数据,精确到秒 2018-12-01 10:10:10
site_id 所属站点ID 在运营商系统中标明的站点ID s8298394
pile_no 充电桩编号 在运营商系统中充电桩的编号 2891839
socket_no 充电插座编号 在运营商系统中充电插座的编号 8
user_select_duration 用户选择时长 整数 [0,1,2,……,N]
0-充满即停
1-充电1分钟
2-充电2分钟
N-充电N分钟
两种类型:充满即停 或者 N分钟 60
actual_duration 实际充电时长 整数 ’实际充电时长,开始充电到断电的时间(断电场景包括充满断电、未充满但是到时间点了断电、用户主动拔插座断电等),单位 分钟 51
actual_electricity 实际消耗电量 小数 本次充电实际消耗了多少电量,单位 kW·h 16.5
charge_amount 实际消费金额 小数 本次充电实际消耗的订单金额(非用户实付金额),单位 元 17.40
charging_mode 充电模式 [ThirdPay,Balance,Quantity]
ThirdPay-第三方支付
Balance-余额模式
Quantity-包量模式
第三方支付模式(调起第三方支付的模式,含余额+第三方支付混合支付的订单)、余额模式(本订单完全由用户在运营商系统中的储值支付,包括运营商体系内的红包、券等)、包量模式(运营商体系内的月卡、次卡、年卡等) ThirdPay
pay_channel 支付渠道 charging_mode=“ThirdPay”时必填 [Alipay,Weixin,UnionPay,Other]
Alipay-支付宝
Weixin-微信
UnionPay-银联
Other-其他
支付渠道,充电模式为第三方支付时,必填 Alipay
client 客户端 [App,Alipay,Weixin,Card,Other]
App-客户端程序
Alipay-支付宝
Weixin-微信
Card-刷卡
Other-其他
启用充电的客户端 Alipay
uid 支付宝用户id client=“Alipay”必填 2088+数字 本次充电用户的支付宝uid,客户端为支付宝时必填 208884937294593
trade_no 支付宝交易号 pay_channel=“Alipay”必填 本次支付关联的支付宝交易号,支付渠道为支付宝时必填 2018120101010103994834985924
isv_uid 运营商用户ID ISV系统中用户id 2088842948274
order_status 订单状态 整数 订单状态,10000-完结
20000-异常
10000
ext_info 扩展字段 部分运营商如果要传入其他数据,可以通过这个扩展字段传入,特殊字段:
test 是否测试数据
Y-测试数据,正常数据不需要填写
out_trade_no 统一收单外部订单号
{‘payusername’:‘xxx’}

TIPS:若trade_no无法获取,可将trade_no设置为ORDERNO,并在扩展字段填写统一收单外部订单号,格式为ext_info:{“out_trade_no”:“外部订单号xxxx”}

3.3 换电订单回流

用户换电行为的数据回流,本模式用于商家自持电池的共享换电模式或用户自备电池租赁充电柜换电模式。
换电订单数据回流模板名称(template_name):exchangeOrder。

字段标识 名称 必填 格式 可选项 描述 demo
doc_type 订单类型 [Share,Own]
Share-共享换电
Own-自备电池换电
共享换电(电池是共享的,比如标准化电池在门店换电)、自备电池换电(电池是非共享的,比如租换电柜) Share
order_no 运营商订单号 在运营商端的订单号 OD2018110283948294948
biz_time 换电时间 yyyy-MM-DD HH:mm:ss 换电行为发生时间,可早于当前时间,用于补齐历史数据,精确到秒 2018-12-01 10:10:10
site_id 站点编号 在运营商系统中站点的编号 s8298394
cabinet_no 换电柜机编号 在运营商系统中换电柜机器的编号,一个换电柜机包含多个换电抽屉 2891839
socket_no 换电抽屉编号 在运营商系统中换电插座的编号 8
actual_duration 实际充电时长 整数 ’实际充电时长,开始充电到断电的时间(断电场景包括充满断电、未充满但是到时间点了断电、用户主动拔插座断电等),单位 分钟 51
charge_amount 实际消费金额 小数 本次充电实际消耗的订单金额(非用户实付金额),单位 元 17.40
charging_mode 充电模式 [ThirdPay,Balance,Quantity]
ThirdPay-第三方支付
Balance-余额模式
Quantity-包量模式
第三方支付模式(调起第三方支付的模式,含余额+第三方支付混合支付的订单)、余额模式(本订单完全由用户在运营商系统中的储值支付,包括运营商体系内的红包、券等)、包量模式(运营商体系内的月卡、次卡、年卡等) ThirdPay
pay_channel 支付渠道 charging_mode=“ThirdPay”时必填 [Alipay,Weixin,UnionPay,Other]
Alipay-支付宝
Weixin-微信
UnionPay-银联
Other-其他
支付渠道,充电模式为第三方支付时,必填 Alipay
client 客户端 [App,Alipay,Weixin,Card,Other]
App-客户端程序
Alipay-支付宝
Weixin-微信
Card-刷卡
Other-其他
启用充电的客户端 Alipay
uid 支付宝用户id client=“Alipay”必填 2088+数字 本次充电用户的支付宝uid,客户端为支付宝时必填 208884937294593
trade_no 支付宝交易号 pay_channel=“Alipay”必填 本次支付关联的支付宝交易号,支付渠道为支付宝时必填 2018120101010103994834985924
isv_uid 运营商用户ID ISV系统中用户id 2088842948274
order_status 订单状态 整数 订单状态,10000-完结
20000-异常
10000
ext_info 扩展字段 部分运营商如果要传入其他数据,可以通过这个扩展字段传入,特殊字段:
test 是否测试数据
Y-测试数据,正常数据不需要填写
{‘payusername’:‘xxx’}

3.4 账户流水数据回流

针对用户账户发生支付的账户流水数据回流,主要包括以下场景:
- 单次充电时支付
- 余额充值时支付
- 包量购买时支付(月卡、次卡等)

账户流水数据回流模板名称(template_name):accountFlow。

字段标识 名称 必填 格式 可选项 描述 demo
order_no 运营商订单号 在运营商端的订单号 2018112019289424894
create_time 用户完成支付时间 用户完成支付时间 2018-12-10 10:10:10
trade_type 交易类型 [Once,Balance,Quantity]
Once-单次充电
Balance-余额充值
Quantity-包量购买
余额充值、单次充电、包量购买(购买运营商体系内的月卡、年卡、次卡等) Once
amount 金额 小数 余额充值模式:本次充值的金额;单次充电:本次充电的金额;包量购买:本次购买消耗的金额,单位 元 50.5
pay_channel 支付渠道 [Alipay,Weixin,UnionPay,Cash,Other]
Alipay-支付宝
Weixin-微信
UnionPay-银联
Cash-现金
Other-其他
支付渠道 Alipay
trade_no 支付宝交易号 pay_channel=“Alipay”时必填 本次支付关联的支付宝交易号,支付渠道为支付宝时必填 20181201010110939847582374348
isv_uid 运营商用户ID ISV系统中用户id 2088842948274
ext_info 扩展字段 部分运营商如果要传入其他数据,可以通过这个扩展字段传入,特殊字段:
test 是否测试数据
Y-测试数据,正常数据不需要填写
client 客户端 [App,Alipay,Weixin,Other]
App-App
Alipay-支付宝
Weixin-微信
Other-其他
客户端 Alipay

4.接入代码示例

4.1 充电桩数据回流示例


public void addChargePipe(){ AlipayClient alipayClient = new DefaultAlipayClient(URL, APPID, AppPrivateKey, "json", "GBK", AlipayPublicKey, "RSA"); AlipayCommerceIotMdeviceprodDevicelogUploadRequest request = new AlipayCommerceIotMdeviceprodDevicelogUploadRequest(); request.setBizContent("{\n" + " \"template_name\": \"chargePile\",\n" + " \"body\": {\n" + " \"pile_id\":\"1738247\",\n" + " \"type\":\"EV\",\n" + " \"pile_type\":\"CP\",\n" + " \"socket_num\":8,\n" + " \"site_id\":\"s123134\",\n" + " \"site_name\":\"xxx站点\",\n" + " \"site_type\":\"GROUND\",\n" + " \"province_code\":\"330000\",\n" + " \"city_code\":\"330100\",\n" + " \"area_code\":\"330106\",\n" + " \"address\":\"xxx路xxx街xx号\",\n" + " \"channel_biz_name\":\"xx渠道商\",\n" + " \"property_name\":\"xx物业\",\n" + " \"site_longitude\":120.15,\n" + " \"site_latitude\":30.28\n" + " }\n" + " }"); try { AlipayCommerceIotMdeviceprodDevicelogUploadResponse response = alipayClient.execute(request); if(response.isSuccess()) { System.out.println("success"); }else{ System.out.println(response.toString()); } } catch (AlipayApiException e) { e.printStackTrace(); } }

4.2 充电订单回流接口示例


public void addChargeOrderLog(){ AlipayClient alipayClient = new DefaultAlipayClient(URL, APPID, AppPrivateKey, "json", "GBK", AlipayPublicKey, "RSA"); AlipayCommerceIotMdeviceprodDevicelogUploadRequest request = new AlipayCommerceIotMdeviceprodDevicelogUploadRequest(); request.setBizContent("{" + " \"template_name\": \"chargeOrder\"," + " \"body\": {" + " \"doc_type\":\"Charge\"," + " \"order_no\":\"OD2018110283948294948\"," + " \"charge_time\":\"2018-12-01 10:10:10\"," + " \"pile_no\":\"2891839\"," + " \"socket_no\":\"8\"," + " \"user_select_duration\":55," + " \"actual_duration\":53," + " \"charge_amount\":17.4," + " \"charging_mode\":\"ThirdPay\"," + " \"pay_channel\":\"Alipay\"," + " \"client\":\"Alipay\"," + " \"uid\":\"20889384894823\"," + " \"isv_uid\":\"823942847293\"," + " \"trade_no\":\"20181201101010857239749753823\"" + " }" + " }"); try { AlipayCommerceIotMdeviceprodDevicelogUploadResponse response = alipayClient.execute(request); if(response.isSuccess()) { System.out.println("success"); }else{ System.out.println(response.toString()); } } catch (AlipayApiException e) { e.printStackTrace(); } }

4.3 换电订单回流接口示例


public void addChargeOrderLog(){ AlipayClient alipayClient = new DefaultAlipayClient(URL, APPID, AppPrivateKey, "json", "GBK", AlipayPublicKey, "RSA"); AlipayCommerceIotMdeviceprodDevicelogUploadRequest request = new AlipayCommerceIotMdeviceprodDevicelogUploadRequest(); request.setBizContent("{" + " \"template_name\": \"exchangeOrder\"," + " \"body\": {" + " \"doc_type\":\"Share\"," + " \"order_no\":\"OD2018110283948294948\"," + " \"biz_time\":\"2018-12-01 10:10:10\"," + " \"site_id\":\"2891839\"," + " \"cabinet_no\":\"192848\"," + " \"socket_no\":\"8\"," + " \"actual_duration\":53," + " \"actual_electricity\":10.3," + " \"charge_amount\":17.4," + " \"charging_mode\":\"ThirdPay\"," + " \"pay_channel\":\"Alipay\"," + " \"client\":\"Alipay\"," + " \"uid\":\"20889384894823\"," + " \"isv_uid\":\"823942847293\"," + " \"trade_no\":\"20181201101010857239749753823\"" + " }" + " }"); try { AlipayCommerceIotMdeviceprodDevicelogUploadResponse response = alipayClient.execute(request); if(response.isSuccess()) { System.out.println("success"); }else{ System.out.println(response.toString()); } } catch (AlipayApiException e) { e.printStackTrace(); } }

4.4 账户流水数据回流示例


public void addAccountFlowLog(){ AlipayClient alipayClient = new DefaultAlipayClient(URL, APPID, AppPrivateKey, "json", "GBK", AlipayPublicKey, "RSA"); AlipayCommerceIotMdeviceprodDevicelogUploadRequest request = new AlipayCommerceIotMdeviceprodDevicelogUploadRequest(); request.setBizContent("{" + " \"template_name\": \"accountFlow\"," + " \"body\": {" + " \"order_no\":\"OD2018110283948294948\"," + " \"trade_type\":\"Once\"," + " \"amount\":50.5," + " \"pay_channel\":\"Alipay\"," + " \"trade_no\":\"20181201010110939847582374348\"" + " }" + " }"); try { AlipayCommerceIotMdeviceprodDevicelogUploadResponse response = alipayClient.execute(request); if(response.isSuccess()) { System.out.println("success"); }else{ System.out.println(response.toString()); } } catch (AlipayApiException e) { e.printStackTrace(); } }

5.第三方应用接入

第三方商户向开发者授权后,可以使用开发者提供的充电桩数据回流能力,具体第三方授权开发请参考《第三方应用授权》。

6.接入流程

(1) 开放平台申请小程序或使用已有小程序。
(2) 开发
(3) 测试环境调试
测试环境用于测试上传日志链路联通性,解决使用过程中程序问题。
测试环境接入网关://openapi.sit.dl.alipaydev.com/gateway.do
(4) 预发环境验证
预发环境用于验证程序在生产环境中能否正常使用,该环境与生产环境相同,仅用于小批量数据验证。预发环境需联系支付宝对接同学临时授权。
预发环境接入网关:https://openapipre.alipay.com/gateway.do
(5) 上线
生产环境接入网关:https://openapi.alipay.com/gateway.do
生产环境需要支付宝进行挂包,可联系对接同学。

7.Q&A

(1) appid如何申请?
appid是小程序id,可以在开放平台申请https://openhome.alipay.com/platform/home.htm
(2) 接口请求提示权限问题。
本接口为定向开放接口,需要单独授权。在预发环境中可通知支付宝同学临时授权,可以有5天的访问时间进行程序功能验证。预发环境验证成功之后,通知支付宝同学挂包,长期授权使用。

FAQ

关于此文档暂时还没有FAQ
返回
顶部