要在您的应用中使用开放产品的接口能力,您需要登录开放平台,在开发者中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(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 | 统一收单交易退款接口 | 查看文档 |
支付相关产品可参考相关文档(点此查看文档)
如何创建(插件)并在口碑服务市场售卖,请参见“服务创建及发布流程”。
该产品目前不支持沙箱环境调试,请在正式环境调试。