要在您的应用中使用开放产品的接口能力,您需要登录开放平台,在开发者中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《应用创建指南》。
实现菜品营销必须开通以下产品功能(创建应用时添加),才能调用相应的接口:
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详细步骤请参考《配置应用环境》。
为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
各语言版本服务端SDK详细使用说明,请参考《服务端SDK使用说明》
在SDK调用前需要进行初始化,代码如下:
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
| 配置参数 | 示例值解释 | 获取方式/示例值 |
|---|---|---|
| URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
| APPID | APPID 即创建应用后生成 | 获取见上面创建应用 |
| FORMAT | 参数返回格式,只支持json | json(固定) |
| APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取详见上面配置密钥 |
| CHARSET | 编码集,支持GBK/UTF-8 | 开发者根据实际工程编码配置 |
| ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见上面配置密钥 |
| SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 | RSA2 |
如下为扫码点菜 流程图
如下为单品+支付 及 扫码点菜+单品+支付 流程图
根据上述3种接入方案的流程图,可分解为如下接口模块
1)菜品推荐
在消费者扫码进入点菜界面后,ISV可根据接口查询菜品热度信息,向用户做菜品推荐
查询菜品类型:koubei.marketing.data.dishdiagnosetype.batchquery
SDK调用请求示例(以JAVA为例,更多语言示例参见接口文档)
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
KoubeiMarketingDataDishdiagnosetypeBatchqueryRequest request = new KoubeiMarketingDataDishdiagnosetypeBatchqueryRequest();
KoubeiMarketingDataDishdiagnosetypeBatchqueryResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
JSON响应示例
{
"koubei_marketing_data_dishdiagnosetype_batchquery_response":{
"code":"10000",
"msg":"Success",
"item_diagnose_type_list":[{
"item_diagnose":"001",
"item_diagnose_desc":"销量和复购多指标表现强劲"
}]
}
,"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
根据菜品类型查询菜品数据:koubei.marketing.data.dishdiagnose.batchquery
SDK调用请求示例(以JAVA为例,更多语言示例参见接口文档)
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
KoubeiMarketingDataDishdiagnoseBatchqueryRequest request = new KoubeiMarketingDataDishdiagnoseBatchqueryRequest();
request.setBizContent("{" +
" \"page_size\":20," +
" \"report_date\":\"20170103\"," +
" \"page_no\":1," +
" \"item_diagnose_type\":\"001\"" +
" }");
KoubeiMarketingDataDishdiagnoseBatchqueryResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
JSON响应示例
{
"koubei_marketing_data_dishdiagnose_batchquery_response":{
"code":"10000",
"msg":"Success",
"item_diagnose_list":[{
"rec_thirty_sale_cnt":20,
"rec_thirty_sale_amt":34,
"rec_thirty_consume_uid_cnt":"34",
"rec_thirty_rebuy_uid_cnt":2,
"rec_sixty_consume_uid_cnt":2,
"rec_sixty_rebuy_uid_cnt":10,
"rec_ninety_consume_uid_cnt":20,
"rec_ninety_rebuy_uid_cnt":20,
"hot_value":33.22,
"hot_grade":1.5,
"item_diagnose":"1",
"item_diagnose_desc":"招牌菜品",
"report_date":"20170104",
"item_id":"2015432124564",
"item_price":100,
"rec_seven_sale_cnt":10,
"item_name":"我是菜品名称",
"rec_seven_sale_amt":20
}],
"total":100
}
,"sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
2)数据回传
ISV通过店铺数据回传接口,可以丰富店铺内容,提升商家店铺曝光量,以及提升用户使用体验。
isv 回传的商户操作行为信息调用接口(菜品回流):alipay.offline.provider.shopaction.record
isv 回传的用户操作行为信息调用接口(订单回流):alipay.offline.provider.useraction.record
3)发单品券
菜品营销推荐ISV使用营销活动接口来创建单品优惠活动,并通过支付宝核销单品券:
活动创建接口:koubei.marketing.campaign.activity.create
活动详情查询:koubei.marketing.campaign.activity.query
口碑营销活动列表查询:koubei.marketing.campaign.activity.batchquery
活动修改接口:koubei.marketing.campaign.activity.modify
活动下架接口:koubei.marketing.campaign.activity.offline
上传图片和视频(券图片):alipay.offline.material.image.upload
4)商户经营数据展示与分析
ISV可利用商户经营数据展示与分析接口对商户的经营销数据进行分析,并进行相应的展示。
口碑商户经营数据查询接口:koubei.marketing.data.indicator.query
5)店铺优惠展示
在用户扫码点菜时,ISV可利用店铺优惠展示接口向用户展示门店的优惠信息。
基于门店的优惠查询: alipay.offline.market.shop.discount.query
SDK调用示例(以JAVA为例,更多语言示例参见接口文档)
说明:本示例query_type传递了指定值类型,返回camp_num和camp_list;如果query_type不传递或者传递错误值,则返回item_list和discount_list。
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayOfflineMarketShopDiscountQueryRequest request = new AlipayOfflineMarketShopDiscountQueryRequest();
request.setBizContent("{" +
"\"shop_id\":\"2015042400077110000000013301\"," +
"\"query_type\":\"MERCHANT\"" +
" }");
AlipayOfflineMarketShopDiscountQueryResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
JSON响应示例
{
"alipay_offline_market_shop_discount_query_response": {
"code": "10000",
"msg": "Success",
"camp_num": 100,
"camp_list": [
{
"biz_id": "2015112300077000000005682952",
"biz_type": "CONSUME_SEND",
"camp_desc": "买单5折,满10可享,最高7元",
"begin_time": "2017-07-01 00:00:00",
"end_time": "2017-07-20 00:00:00",
"win_limit_daily": "10",
"win_limit_life": "10",
"camp_guide": "[{\"details\":[\"2017-05-10 00:00至2017-07-25 23:59有效\"],\"title\":\"有效期\"},{\"details\":[\"向店员出示使用\"],\"title\":\"使用方式\"}]",
"ext_info": "{\"key\":\"value\"}"
}
]
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
6)支付接口
商户/系统商在调用支付接口时,可传入用户实际购买的商品信息,达到两个效果:
商品信息通过alipay.trade.create接口中goods_detail参数传入,注意这个参数是个数据集,包含几个子参数,以JSON列表的形式支持同时传入多个商品。
| 子参数名称 | 子参数说明 |
|---|---|
| goods_id | 商户自定义的商品编号,需要与单品活动中配置的商品编号一致。请在商户维度保持商品编号唯一,并与商品名称保持一对一关系。 |
| goods_name | 商户自定义的商品名称,请不要传入如外卖商品/打折商品等无实际意义的商品名称。如果有商品有多个规格,可在商品名称中包含,如海飞丝(350ml)。注意编码格式与调用接口指定的编码一致。 |
| quantity | 本次交易购买的商品数量 |
| price | 商品单价,单位元,商品优惠前的价格。商品单价x数量的累加金额=订单总金额(不做强行校验,但可能影响单品相关返佣) |
使用了如下接口
| 接口英文名 | 接口中文名 | API文档 |
|---|---|---|
| alipay.trade.create | 统一收单交易创建接口 | 查看文档 |
| alipay.trade.query | 统一收单线下交易查询 | 查看文档 |
| alipay.trade.cancel | 统一收单交易撤销接口 | 查看文档 |
| alipay.trade.refund | 统一收单交易退款接口 | 查看文档 |
支付相关产品可参考相关文档(点此查看文档)
如何创建(插件)并在口碑服务市场售卖,请参见“服务创建及发布流程”。
该产品目前不支持沙箱环境调试,请在正式环境调试。