Skip to main content

易能时代SDK使用说明文档(API接入)V1.2

一、 对接流程#

img

核心业务流程说明

A、合作方服务端向易能时代调取[“油站列表”](#_1、油站列表: stationList())接口,该接口每天限制最多只能调取 24 次。易能时代根据合作方的请求,向合作方返回油站列表信息,合作方用户端向合作方服务端请求油站信息列表,合作方服务端根据以获取的油站列表返回对应油站列表信息给到合作方用户端;

B、合作方用户端向合作方服务端请求进入油站详情页,合作方服务端向易能时代“[油站详细信息](#_2、油站详情信息: stationDetail(StationDetailParam param))”接口发起请求,获取油站详情信息,易能时代向合作方服务端返回对应油站详情信息,合作方用户端获取油站详情信息,进入油站详情信息界面;

C、合作方用户选定油枪、油品及购买金额后,向合作方服务端提交订单,合作方服务端向易能时代“[创建订单](#_4、创建订单接口 : createOrder(CreateOrderParam param) )”接口发起请求;

a、如果合作方服务端向易能时代请求校验未通过,则返回创建失败的结果,合作方服务端收到易能时代订单创 建失败的结果,返回给合作方用户端,此时合作方用户端需要重新走订单支付流程;

b、如果合作方服务端向易能时代请求校验通过,则返回创建成功的结果,合作方服务端收到易能时代订单创建 成功的结果,返回给合作方用户端,订单创建成功;

D、合作方用户端向合作方服务端发起支付请求,合作方服务端向合作方用户端返回支付结果;

E、如果用户支付成功,合作方服务端向易能时代“支付接口”接口发起请求,告知易能时代订单支付结果,易能时代返回回告请求结果给到合作方服务端。用户支付完成,油站放行。

二、 对接须知#

参数信息#

· platformName,beforeKey,afterKey 等调取接口必要的信息由易能时代产品提供。

环境信息#

· 测试域名: https://dev.ejiayou.com

· 正式域名: https://api.ejiayou.com

测试须知#

· 请谨慎使用正式环境的油站测试支付!若需测试请提前告知易能时代,由易能时代运营与油站提前沟通后方可进行测试。已确认测试油站后有以下要求:单笔支付金额**≤**10 元,单个油站可测试订单数**≤**5 笔,当天支付订单必须当天反馈易能时代工作人员申请退款,隔天订单不予退款申请操作。如需测试 10 元 ≤ 订单支付金额 ≤1000 元),请使用易能时代正式环境测试油站 id:21413。

· 测试环境获取的油站均可进行测试操作。

经纬度类型

· 易能时代经纬度为百度坐标系


三、 Java 项目使用说明#

说明#

此 JavaSDK 可供 springboot 项目与普通 spring 项目或非 spring 项目使用。
注意:请将包ejiayou-openapi-1.0.0-jar-with-dependencies.jar先上传至私有仓库

Extension : jar
groupId : com.ejiayou.platform
artifactId : ejiayou-openapi
version : 1.0.0

1、springboot 项目#

提示:具体请参考demo-springboot项目

1、引包#

1.maven :#
<dependency>
<groupId>com.ejiayou.platform</groupId>
<artifactId>ejiayou-openapi</artifactId>
<version>1.0.0</version>
</dependency>
2.gradle:#
dependencies {
compile "com.ejiayou.platform:ejiayou-openapi:1.0.0"
}
3.直接使用 jar 包引入#

2.配置#

ejiayou:
domain: https://dev.ejiayou.com
platform-name: pdcszy
before-key: cesJ5RccqdSRdciz
after-key: uOeNqX7GVreYBzpv
plat: XZe9X
app_key: cesJ5RccqdSRdciz
app_secret: uOeNqX7GVreYBzpv

Bean 配置

@Configuration
public class EjiayouOpenapiConfig {
@Value("${ejiayou.domain}")
private String domain;
@Value("${ejiayou.platform-name}")
private String platformName;
@Value("${ejiayou.before-key}")
private String beforeKey;
@Value("${ejiayou.after-key}")
private String afterKey;
@Value("${ejiayou.app_key}")
private String appKey;
@Value("${ejiayou.app_secret}")
private String appSecret;
@Value("${ejiayou.plat}")
private String plat;
@Bean
public EjiayouApiClient ejiayouApiClient() {
EjiayouConfig config = new EjiayouConfig(domain, platformName, beforeKey, afterKey, plat, appKey, appSecret);
return Ejiayou.create(config);
}
}

参数说明

参数名必选类型说明
domainstring必须参数, 易能时代环境地址 测试: https://dev.ejiayou.com 正式: https://api.ejiayou.com
platform-namestring平台标识,调用 API 接口必须参数,由易能时代产品提供
before-keystring调用 API 接口必须参数,由易能时代产品提供
after-keystring调用 API 接口必须参数,由易能时代产品提供

3、使用#

API 调用 :#
@Autowired
private EjiayouApiClient ejiayouApiClient;
ejiayouApiClient.stationList();

2、普通 spring 项目#

提示:具体请参考demo-spring项目

1、引包#

1.maven :#
<dependency>
<groupId>com.ejiayou.platform</groupId>
<artifactId>ejiayou-openapi</artifactId>
<version>1.0.0</version>
</dependency>
2.gradle:#
dependencies {
compile "com.ejiayou.platform:ejiayou-openapi:1.0.0"
}
3.直接使用 jar 包引入#

2、配置#

初始化Bean
@Bean
public EjiayouApiClient ejiayouApiClient() {
EjiayouConfig config = new EjiayouConfig(domain, platformName, beforeKey, afterKey, plat, appKey, appSecret);
return Ejiayou.create(config);
}

参数说明

参数名必选类型说明
domainstring必须参数, 易能时代环境地址 测试: https://dev.ejiayou.com 正式: https://api.ejiayou.com
platform-namestring平台标识,调用 API 接口必须参数,由易能时代产品提供
before-keystring调用 API 接口必须参数,由易能时代产品提供
after-keystring调用 API 接口必须参数,由易能时代产品提供

3、使用#

API 调用 :#
@Autowired
private EjiayouApiClient ejiayouApiClient;
ejiayouApiClient.stationList();

3、普通 Java 项目#

提示:具体请参考demo-java项目

1、引包#

1.maven :#
<dependency>
<groupId>com.ejiayou.platform</groupId>
<artifactId>ejiayou-openapi</artifactId>
<version>1.0.0</version>
</dependency>
2.gradle:#
dependencies {
compile "com.ejiayou.platform:ejiayou-openapi:1.0.0"
}
3.直接使用 jar 包引入#

2、配置#

初始化 config

EjiayouConfig config = new EjiayouConfig(domain, platformName, beforeKey, afterKey, plat, appKey, appSecret);

参数说明

参数名必选类型说明
domainstring必须参数, 易能时代环境地址 测试: https://dev.ejiayou.com 正式: https://api.ejiayou.com
platform-namestring平台标识,调用 API 接口必须参数,由易能时代产品提供
before-keystring调用 API 接口必须参数,由易能时代产品提供
after-keystring调用 API 接口必须参数,由易能时代产品提供

3、使用#

API 调用 :#
@Autowired
private EjiayouApiClient ejiayouApiClient;
ejiayouApiClient.stationList();

三、PHP 项目使用说明#

说明#

供使用 PHP 开发合作方使用。

PHP 项目#

1、下载#

使用 composer 工具下载
打开命令行工具,进入项目目录下执行:

composer require ejiayou/p-openapi

2、配置#

安装完成后,打开新增的vendor文件夹,找到里边的EjyConfig.php,按对接文档给应的配置参数做修改即可(文件路径: vendor/ejiayou/p-openapi/src/EjyConfig.php)

const Domain = 'https://dev.ejiayou.com';
const PlatformName = 'test';
const BeforeKey = 'lvcXRvK1gT0ygNKy';
const AfterKey = '30bvIWj71oofv0Iv';
const Plat = 'SLnTK';
const AppKey = 'lvcXRvK1gT0ygNKy';
const AppSecret = '30bvIWj71oofv0Iv';
const Version = '1.0.0';

参数说明 | 参数名 | 必选 | 类型 | 说明 | | :------------ | :-----: | :----- | :----- | | domain | 是 | string | 必须参数, 易能时代环境地址 测试: https://dev.ejiayou.com 正式: https://api.ejiayou.com | | platform-name | 是 | string |平台标识,调用 API 接口必须参数,由易能时代产品提供 | | before-key | 是 | string |调用 API 接口必须参数,由易能时代产品提供 | | after-key | 是 | string | 调用 API 接口必须参数,由易能时代产品提供 | | Version | 是 | string | SDK 版本号 |

3、使用#

如果使用的是laravelyii框架等,使用示例:

use Ejiayou\Platform\Openapi\EjyApi;
use Ejiayou\Platform\Openapi\Model\Api\OrderQueryParam;
$param = new OrderQueryParam();
$param->SetDate("20191031");
print_r(EjyApi::orderQuery($param)["data"]);

非 PHP 框架使用示例:

require_once __DIR__."/vendor/autoload.php";
use Ejiayou\Platform\Openapi\EjyApi;
use Ejiayou\Platform\Openapi\Model\Api\OrderQueryParam;
$param = new OrderQueryParam();
$param->SetDate("20191031");
print_r(EjyApi::orderQuery($param)["data"]);

四、API 参数说明#

1、油站列表: stationList()#

接口描述#

合作平台可通过该接口查询获取到易能时代开放给合作方的油站列表数据。需每天分阶段同步数据,每天默认访问次数限制为 24 次。

特别提醒#

少数油站油价信息会在当天某个时刻因客观原因进行调整,为避免客诉,建议合作方每一小时获取一次油站列表数据;同时为了避免各平台在同一时刻请求接口导致无法获取油站列表数据,建议可错峰拉取,例如在一小时中的15分/30分/45分拉取。

参数:无#

返回示例:#

{
"stationId": "2",
"stationName": "加德士石化坂田加油站",
"provinceName": "广东省",
"provinceId": 440000,
"cityName": "深圳市",
"latitude": "22.626108",
"longitude": "114.067607",
"location": "深圳市龙岗区布吉镇坂田五和大道南80-1 石化工业村旁",
"starNum": "4.4",
"phone": "0755-28226736",
"stationPic": "https://img.ejiayou.com/uploadPic/Image/2019/11/1574053292482.jpg",
"stationBannerPic": "https://img.ejiayou.com/uploadPic/Image/2019/11/1574068867286.jpg",
"invoiceType": 1,
"prices": [
{
"oilId": "1",
"oilCode": "92#",
"oilType": "1",
"countryPrice": "6.82",
"stationPrice": "6.82",
"discountPrice": "6.62",
"oilgunCodes": ["10","14"]
},
{
"oilId": "2",
"oilCode": "95#",
"oilType": "1",
"countryPrice": "7.39",
"stationPrice": "7.39",
"discountPrice": "7.19",
"oilgunCodes": ["11","15"]
},
“Adverts”:[
{
"singleWordIcon": "测",
"titleAfterIcon": "测试鉴权",
"titleWithinIcon": "测试",
"weight": 999, "id": 56
}
]
"district": "龙岗区",
"cityId": 440300,
"stationType": 4
}

返回参数说明:#

参数名类型说明
参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
staionList 说明#
参数名类型说明
stationIdint油站 id
stationNamestring油站名称
provinceNameString省份
cityNameString城市
latitudestring纬度,百度坐标系
longitudestring经度,百度坐标系
locationstring地址
starNumstring评分
phonestring电话
stationPicstring油站小图
stationBannerPicstring油站大图
districtstring地区
provinceIdint省份编号
cityIdint城市编号
stationTypeint1 中石油,2 中石化,3 壳牌,4 其他
invoiceTypeint0.不可开电子发票 1.可开电子发票
prices 返回参数说明#
参数名类型说明
oilIdstring油号 id
oilCodestring油号
oilTypeint1.汽油 2.柴油
countryPricestring国家价
stationPricestring油站挂牌价
discountPricestring优惠后单价
oilgunCodesarray油枪号列表
adverts 返回参数说明(新增)#
参数名类型说明
idstringid,活动标签的唯一标识
weightstring权重,999 为最高权重
oilTypeint单字图标文案
singleWordIconstring图标内文案
titleWithinIconstring图标后文案

温馨提示:adverts 返回参数建议在油站列表中进行展示,方便后期做活动运营,如不展示后续运营活动可能存在客诉情况,展示示例如下(仅供参考):

img
img

2、油站详情信息: stationDetail(StationDetailParam param)#

接口描述:#

合作平台通过请油站详细信息接口,获取易能时代油站的详细数据。

StationDetailParam 参数:#

参数名必选类型说明
userPhonestring用户手机号码
stationIdstring油站 ID

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
datastring业务参数
参数名类型说明
feeValuedouble服务费
thresholddouble临界阈值,优惠大于等于这个值收取手续费
limitCountstring油站每天单个用户优惠次数
orderCountstring用户当天已加油次数
oilgunList 参数说明:#
参数名类型说明
oilIdstring油号 id
oilCodestring油号
oilTypeInt1.汽油 2.柴油
countryPriceString国家价
stationPricestring油站挂牌价
discountPricestring优惠后单价
oilgunCodesarray油枪号列表

3、计算订单 : computeOrder(ComputeOrderParam param)#

接口描述#

在创建订单前,合作平台可通过该接口查询用户该笔订单的应付金额。

ComputeOrderParam 参数:#

拼接参数必选类型说明
stationIdstring易能时代油站 ID
oilgunCodestring易能时代油枪编号
totalAmountstring订单总金额,即用户输入金额,保留两位小数
phoneNumberstring创建订单的手机号码
userCouponIdint用户优惠券编号

返回示例:#

{
"code": 200,
"msg": "SUCCESS",
"data": {
"oilMass": 37.5940,
"payAmount": 108.93,
"serviceFee": 0.00,
"discountAmount": 91.07,
"couponAmount": 0,
"discountPrice": "2.90",
"countryPrice": 7.13,
"stationPrice": 5.32,
"payUnitPrice": 2.8976
}
}

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
dataObject接口响应参数
oilMassBigDecimal油量,单位升,保留两位小数
payAmountBigDecimal用户本单应支付的金额,保留两位小数
serviceFeeBigDecimal服务费,保留两位小数(服务费规则具体咨询易能时代工作人员)
discountAmountBigDecimal直降优惠金额,保留两位小数
couponAmountBigDecimal优惠券(若有使用优惠券)优惠金额,保留两位小数
discountPricestring最终享受单价
countryPriceBigDecimal国家价
stationPriceBigDecimal挂牌价
payUnitPriceBigDecimal用户享受单价

payAmoun--用户支付金额计算公式说明

假设 totalAmount=100,stationPrice=6.92

(1)假设用户享受油站直降优惠 10 元,同时选择 100 减 20 元优惠券 oilMass=100/6.92,serviceFee=1.50,discountAmount=10,couponAmount=20 优惠金额=10+20-1.5=28.5 元,用户本单应支付金额为 100-28.5=71.5 元;

(2)假设用户仅享受油站直降优惠 10 元,无优惠券 oilMass=100/6.92,serviceFee=1.50,discountAmount=10 优惠金额=10-1.5=8.5 元,用户本单应支付金额为 100-8.5=91.5 元;

(3)假设用户无直降优惠,无优惠券 oilMass=100/6.92,serviceFee=1.50,discountAmount=10 优惠金额=-1.5 元,用户本单应支付金额为 100-(1.5)=101.5 元。

4、创建订单接口 : createOrder(CreateOrderParam param)#

接口描述#

为第三方平台提供统一的创建订单接口。

请求示例:#

{
"stationId": 12,
"oilgunCode": 5,
"totalAmount": "1",
"phoneNumber": "183xxxxxxxx",
"userCouponId":"5688129"
}

CreateOrderParam 参数:#

参数名必选类型说明
stationIdInteger易能时代油站 ID
oilgunCodeInteger易能时代油枪编号
totalAmountstring订单总金额,即用户输入金额,保留两位小数
phoneNumberstring创建订单的手机号码
hadInvoiceBoolean是否需要发票
invoiceHeadString发票抬头
invoiceNumberString个人税号
plateNumberString车牌号码
userCouponIdString用户优惠券编号
outOrderSignString第三方订单号

响应示例:#

{
"code": 200,
"msg": "SUCCESS",
"data": {
"orderSign": "9000000020063383",
"oilMass": 0.17,
"payAmount": 0.85,
"discountAmount": 0.15,
"couponAmount": 0,
"serviceFee": 0
}
}

返回参数说明:#

参数名类型说明
codeInteger200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
dataObject业务参数

响应接口参数说明:#

参数名类型说明
orderSignString易能时代订单标识
oilMassBigDecimal油量,单位升,保留两位小数
payAmountBigDecimal用户支付金额,保留两位小数
serviceFeeBigDecimal必须 服务费,保留两位小数
discountAmountBigDecimal必须 直降优惠金额,保留两位小数
couponAmountBigDecimal必须 优惠券优惠金额,保留两位小数

5、取消订单 : cancelOrder(CancelOrderParam param)#

接口描述#

为第三方平台提供统一的取消订单接口。

CancelOrderParam 参数:#

参数名必选类型说明
outOrderSignstring第三方订单号
orderIdstring易能时代订单号

返回示例:#

{
"code": 200,
"msg": "SUCCESS",
"data": "取消订单成功"
}

返回参数说明:#

参数名类型说明
codeInteger200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
dataObject业务参数

6、财务对账 : finance(FinanceParam param)#

接口描述#

第三方平台可通过该接口查询历史订单,查询时间段最大为31天。

FinanceParam 参数:#

拼接参数必选类型说明
orderIdstring易能时代订单号
outOrderSignstring合作平台订单号
startTimestring订单支付开始日期时间 格式 yyyyMMddHHmmss 例 20190612235959 startTime 与 endTime 需同时传 如果有 orderId 可不传
endTimestring订单支付结束日期时间 格式 yyyyMMddHHmmss 例 20190612235959 startTime 与 endTime 需同时传 如果有 orderId 可不传
pageNumint页码 不传默认 1
pageSizeint每页数 不传默认 100 最大 500

返回示例:#

{
"code": 200,
"msg": "SUCCESS",
"data": {
"total": 1,
"list": [
{
"payOrderTime": "2019-05-14 17:06:24",
"orderId": "9000000020026004",
"city": "深圳市",
"refundTime": "2019-06-14 18:13:39",
"orderSum": "76.42",
"oilCode": "92#",
"oilMass": "11.94",
"payType": "52",
"province": "广东省",
"phone": "13312345678",
"couponMoney": "0.00",
"originalCost": "80.00",
"stationName": "源政创业大厦加油站",
"status": 2
}
],
"pageNum": 1,
"pageSize": 100
}
}

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
datastring订单数据
返回数据 data 详情:#
参数名类型说明
totalint查询总条数
pageNumint页码
pageSizeint每页数
listlist订单列表
list:#
参数名类型说明
orderIdstring易能时代内部订单流水号
phonestring手机号码
provincestring省份名称
citystring城市名字
stationNamestring油站名称
oilCodestring油号名称
originalCoststring机显金额(元)
couponMoneystring优惠券金额(元)
orderSumstring用户实际支付金额(元)
oilMassstring加油升数(升)
payTypestring1.微信 2.支付宝 52.第三方支付
payOrderTimestring支付时间
refundTimestring退款时间 status 为 2 时有值
statusstring1-支付 2-退款

7、用户个人订单查询 :orderHistory(OrderHistoryParam param)#

接口描述:#

用户个人订单查询接口,由易能时代返回用户的历史订单数据

OrderHistoryParam 参数:#

参数名必选类型说明
userPhonestring手机号码
stationIdsstring油站 id,为空默认查询所有油站订单记录,如指定 12 号油站输入:12;可传传多个值,用 ‘ ,’ 英文逗号隔开
pageint分页,表示当前页数,每页固定 10 条数据

返回示例:

{
"code": 200,
"msg": "SUCCESS",
"data": {
"personalInfo": {
"globalPicUrl": null,
"nickName": null,
"headUrl": null,
"joinEjiayouDay": null,
"centerPicUrl": null
},
"allPageNum": 11,
"allPaySum": "422.30##元",
"orderList": [
{
"hasStationPhone": 1,
"oilMass": "0.16",
"orderId": "9000000020063913",
"payTime": "2020-01-20 19:09:09",
"stationPic": "https://img.ejiayou.com/station_pic/SZ_fengze_240x192.jpg",
"originalCost": "1.00",
"stationName": "丰泽加油站",
"stationPhone": "0755-27513266",
"orderSum": "0.74元",
"reduceSum": "0.26元",
"oilCode": "92#",
"orderState": 2
}
],
"currentPageNum": 1,
"saveMoney": "0.70##元",
"consumeTimes": "12##次",
"orderQuantity": 12
}
}

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
datastring订单数据

data 参数说明:#

参数名类型说明
consumeTimesString消费次数
allPaySumString共支付
saveMoneyString共节省
orderListList历史订单列表
orderQuantityint订单数,只有 stationsIds 不为 0 时才会给出
currentPageNumint当前页数
allPageNumint所有数量
personalInfoPersonalInfo 类个人信息类
历史订单列表参数名类型说明
orderIdString订单号
stationNameString油站名称
stationPicString油站图片
payTimeString支付时间
orderSumString订单金额
reduceSumString优惠金额
orderStateint订单状态 2 为正常订单,3 为退款中订单,4 为已退款订单
hasStationPhoneint1 为有油站电话 0 为没有油站电话
stationPhoneString油站电话
oilCodeString油号
originalCostString订单原价
oilMassString加油升数

8、退款申请 : refund(RefundParam param)#

接口描述#

用户在第三方平台上发起退款申请,可通过该接口通知易能时代申请是否给予处理退款(30 分钟内可用直接用该接口发起退款申请,30 分钟后,需要联系易能时代客服发起退款

RefundParam 参数:#

参数名必选类型说明
platformNamestring平台标识 由易能时代产品提供
userPhonestring用户手机号码
orderIdstring易能时代订单号
signstring签名见《特定接口签名规则》
timestamplong时间戳,单位秒

请求参数:#

参数名必选类型说明
reasonstring退款原因

返回示例:#

{
"code": 200, "msg": "SUCCESS",
"data": {
"orderId": "9000000020023544",
"status": "2",
"refundTime": "2018-11-29 15:19:26",
"msg": "此订单已经退款", "userPhone":"13111111111"
}
}

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
Data 说明:#
参数名类型说明
orderIddouble易能时代订单 id
refundTimedouble退款时间
statusstring1.订单审核中 2.订单已退款 3.审核不通过
msgstring退款申请状态信息
userPhonstring用户手机号

9、用户个人优惠券查询 :merchandiseQuery(MerchandiseQueryParam param)#

接口描述:#

第三方平台可通过该接口为用户查询领取到的优惠券。

MerchandiseQueryParam 参数:#

参数名必选类型说明
userPhonestring手机号码
platformNamestring平台名称
signstring签名
timestamplong时间戳,单位秒

返回参数说明:#

参数名类型说明
nameString优惠券名字
nameExtString名字扩展 如 加油券·元岗开业钜惠
limitTimeString优惠券有效期
limitTimeExplainString有效期扩展说明 如全天可用 12 点到 14 点可用等
merchandiseTypeint优惠券类型 1 直减券(现金券) 2 折扣券, 6 直降券
valueString优惠券值
valueExplainString优惠券限制金额解释,满多少可用
enabledint1 为可用,2 为不可用
unavailableCauseString不可用原因 如可用 本字段为 null
moreRulesString更多规则
stationNumint可用油站数,-1 为全部可用
typeint优惠券类型 1 为油品 2 为商品 3 为洗车
userCouponIdString优惠券 id,优惠券唯一表示
limitStationslist限制油站集合
limitStations 参数说明#
参数名类型说明
stationNameString油站名称
urlString油站图标 url
stationIdint油站 id
longitudeString经度,百度坐标系
latitudeString纬度,百度坐标系
addressString油站地址

10、发券接口 : sendMerchandise(SendMerchandiseParam param)#

接口描述#

合作平台可通过调取该接口给符合条件的指定用户发放易能时代优惠券,由易能时代配置并提供活动 id

SendMerchandiseParam 参数:#

参数名必选类型说明
userPhonestring用户手机号码
sourceIdstring优惠券活动 id

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
data 说明#
参数名类型说明
statusint1.成功 0.失败
userPhonestring用户手机号
sendTimeString送券时间
msgString提示信息
sourceIdList活动 id
coupons 说明#
参数名类型说明
couponIdint优惠券 id
userMerchandiseIdstring用户优惠券编号,即优惠券唯一码
merchandiseTypeint券类型 1 直减券(现金券),2 折扣券, 6 直降券

五、接口接入说明#

1、支付接口#

接口描述#

为第三方平台提供统一的支付订单接口。

请求方式#

Path:#
/oreo/ejiayou_open_api/orders/v1/payments/{orderSign}/{platformName}/{sign}/{timestamp}

Method: POST

示例:#
https://dev.ejiayou.com/oreo/ejiayou_open_api/orders/v1/payments/9000000020025870/test/14E3584DBCED5C2CD5DFC27B340E3EC5/1582526116956

路径参数说明:#

路径参数必选类型说明
orderSignString易能时代订单标识
signString签名见《特定接口签名规则》
platformNameString平台名称,由易能时代产品提供正式/测试的 platformName
timestampLong时间戳,单位秒

请求示例

{
"outOrderSign": "666",
"payAmount": "199.96"
}

请求参数说明:#

参数名必选类型说明
outOrderSignstring第三方平台订单标识
payAmountstring易用户支付金额加油订单标识

返回示例

{
"code": 200,
"msg": "SUCCESS",
"data": {}
}

返回参数说明:#

参数名类型说明
codestring200 表示成功,其他失败
msgstring提示消息,成功为 SUCCESS
datadata接口响应参数

2、兑换优惠券#

接口描述#

第三方平台可通过该接口对易能时代发放的优惠券兑换码进行兑换。兑换优惠券流程参考【常见问题-5.用户获取优惠券流程】

请求方式#

Path:#
/oreo/ejiayou_open_api/platform/merchandise/exchange/v1/{platformName}/{sign}/{timestamp}

Method: POST

示例:#
https://dev.ejiayou.com/oreo/ejiayou_open_api/platform/merchandise/exchange/v1/test/14E3584DBCED5C2CD5DFC27B340E3EC5/1582526116956
{
"exchangeCode":"68979920",
"userPhone":"15813737176"
}
路径参数:#
路径参数必选类型说明
platformNamestring平台名称,由易能时代产品提供正式/测试的 platformName
signstring签名见《特定接口签名规则》
timestamplong时间戳,单位秒
Body 参数:#
参数名必选类型说明
exchangeCodestring兑换码
userPhonestring用户手机号或用户标识

返回示例:#

{
"code": 200,
"msg": "SUCCESS",
"data": {
"status": 2
}
}
返回参数说明:#
参数名类型说明
codeInteger200 表示成功,其他失败
msgString提示消息,成功为 SUCCESS
dataObject接口响应参数
statusint1-成功 2-活动已结束 3-该优惠码已经被领取或您已经参与此活动了 4-优惠码输入错误

3、支付状态/退款状态回调通知#

接口描述#

需由易能时代调用第三方平台接口,调用地址由易能时代工作人员在后台进行配置。

特别提醒#

  1. 提供 URL 时请按以下格式告知易能时代工作人员,如:测试环境/正式环境+支付/退款回调 URL

  2. 用户完成支付/申请退款,合作方将订单订单状态同步至易能时代,易能时代会把支付/退款结果发送给合作方服务端,合作方服务端接 s 收到结果后无需返回应答。

  3. 支付/退款回调通知务必要做签名验证,保证请求参数与易能时代平台参数的一致性

请求方式#

Method: GET

Header application/json

请求示例#
{
"orderld": "8888889",
"phone": "15812341234",
"province":"广东省”,
"city":"深圳市”,
"stationName":"丽资加油站”,
"oilcode”: "92#”,
"originalcost": "100.00",
"couponMoney": "0",
"ordersum": "80.00",
"oilMass": "12.67",
"payType": "1",
"dateTime": "2018-05-07 10:40:12",
"status": 1,
"ak": "axmduwq1",
"nonce": "A03F033911D12BD330171346A0192E5B”,
"timestamp": "1536146925000",
"sign": "8cb2862f95aa6949c19b0c8561217588"
}

路径参数:#

参数名类型说明是否参与签名
orderIdstring易能时代内部订单流水号
phonestring手机号码
provincestring省份名称
citystring城市名字
stationNamestring油站名称
oilCodestring油号名称
originalCoststring机显金额(元)
couponMoneystring优惠券金额(元)
orderSumstring用户实际支付金额(元)
oilMassstring加油升数(升)
payTypestring1.微信 2.支付宝
dateTimestring支付/退款时间
statusint1-支付 2-退款
akstringappkey 加密使用
noncestring32 位随机字母数字组合
timestampstring时间戳
signstring签名

其他可选参数#

参数名类型说明是否参与签名
stationIdstring油站 id
couponIdstring优惠券 id
userMerchandiseIdstring用户优惠券号码,唯一号码
stationPricestring油站挂牌价
discountPricestring最终享受单价
countryPricestring国家价
outStatestring从 H5 传入的 P 端自定义参数重新传回给 P 端,跳转前把数据放进 seesionStorage 里

返回示例#

{
returncode":"success"
}

响应参数:#

参数名必填类型说明
returncodeString返回码 SUCCESS 为成功,即订单支付成功或订单退款成功,否则为失败,会重复回调 8 次,每次间隔 15 秒(注意:支付成功/退款成功通知为油站方与用户核实确认的订单)

签名验证方法:#

1.按字段的 key 进行排序,拼接 key=value 字符,使用&符号连接,最后加上 sk(由我方提供)(注意:sk 前也 用 & 连接)Charset 为 UTF8

示例

ak=axmduwq1&city=深圳市&couponMoney=0&dateTime=2019-01-1508:47:18&nonce=5eb667eff4a0462ba358cbf0f64be20e&oilCode=92#&oilMass=20.00&orderId=1000000050312339&orderSum=120.00&originalCost=131.00&payType=1&phone=13509605015& province=广东省&stationName=中石油南海湾加油站&status=1&timestamp=1547706551446&0ba224ca335bf18xa12aasd1

2.对整体字符串进行 MD5 加密,Charset 为 UTF8

apache:
//依赖
<dependency
<groupldcommons-codec</groupld
<artifactldcommons-codec</artifactld
<version1.9</version
</dependency
//代码
DigestUtils.md5Hex(str);
spring:
//依赖
<dependency
<groupIdorg.springframework</groupId
<artifactIdspri ng-core</artifactId
<version4.3.6.RELEASE</version
</dependency
//代码
DigestUtils.md5DigestAsHex(str);

六、特定接口签名规则#

签名生成的通用步骤如下:#

第一步: 设所有发送或者接收到的数据为集合 M,将集合 M 内非空参数值的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 stringA。

特别注意以下重要规则:

· 参数名 ASCII 码从小到大排序(字典序);

· 如果参数的值为空不参与签名;

· 参数名区分大小写;

· 路径上的参数不参与签名(timestamp 除外)。

第二步: 在 stringA 最后依次拼接上路径参数上的 timestamp 和提供给平台的 beforeKey 、afterKey 得到 stringSignTemp 字符串,并对 stringSignTemp 进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值 signValue。

签名示例#

假设请求接口为 oreo/ejiayou_open_api/orders/v2/{platformName}/{sign}/{timestamp}

假设传送的参数为:stationId 为 12,oilgunCode 为 5,totalAmount 为 1,phoneNumber 为 183xxxxxxxx

1、POST 请求 body 参数格式 json 格式

{
"stationId": 12,
"oilgunCode": 5,
"totalAmount": "1", "phoneNumber": "183xxxxxxxx"
}
2、GET 请求参数格式#
stationId=12&oilgunCode=5&totalAmount=1&phoneNumber=183xxxxxxxx
假设当前 timestamp 为1556440144,beforeKey 为 jksdh,afterKey 为 sdhuub

第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:

stringA = "oilgunCode=5&phoneNumber=183xxxxxxxx&stationId=12&totalAmount=1"

第二步:拼接 timestamp 和平台的 beforeKey 、 afterKey

stringSignTemp = stringA + "&timestamp=1556440144&beforeKey=jksdh&afterKey=sdhuub"
sign = MD5(stringSignTemp).toUpperCase()

最后将得到的 sign 值以路径参数的形式发送即可。