了解机具支付接入指南之前,建议先完整阅读智能机具平台整体解决方案。了解整体业务流程、机具厂商与ISV的职责以及各方准备工作。
对于机具厂商,需要分别对接蚂蚁金服物料平台API接口(打通机具物料的生产、调拨等状态信息),对接智能机具SDK(在机具系统嵌入支付宝机具安全SDK,为上层应用暴露业务签名接口。目前支持Android和Linux版本)。完成上述对接后,机具就具备了生产、调拨的管理能力和开机确认机具门店绑定关系的基础。
机具厂商对接物料平台的主要工作包括获取机具生产指令和机具配送指令。然后根据相关指令进行业务确认和生产、配送操作,并及时通过API接口同步操作进展,以供开放平台申请者及时知晓当前机具申请、调拨状态。
机具厂商首先通过获取生产指令接口(ant.merchant.expand.assetproduce.assign.query)查询待生产机具信息,如果有待生产信息,则进行厂商内部的业务处理,如校验是否已处理或者确认是否信息齐全等。当机具厂商确认开始生产机具时,可以通过生产指令接收反馈接口(ant.merchant.expand.assetproduce.assign.sync)同步机具已开始生产。而当机具生产完毕后,厂商通过物料生产完成反馈接口(ant.merchant.expand.assetproduce.complete.sync)同步机具已生产完成。从而实现机具生产状态的自动化更新。
在机具已生产的前提下,机具厂商通过调用获取配送指令接口(ant.merchant.expand.assetdelivery.assign.query)查询待配送的订单信息。如果有待配送的机具信息,则进行厂商内部的业务处理,如校验是否已处理或者确认是否信息齐全等。当机具厂商确认开始配送机具时,可以通过配送指令接收反馈接口(ant.merchant.expand.assetdelivery.assign.sync)同步机具已开始配送,并提供物流单号等。当配送完成后,机具厂商可通过配送完成反馈接口(ant.merchant.expand.assetdelivery.complete.sync)同步配送已完成。最后,机具厂商可通过物料信息反馈接口(ant.merchant.expand.assetinfo.sync)向开放平台同步生产或配送信息。从而实现机具配送信息和开放平台物料信息的自动化更新。
线下环境:机具厂商通过该对接物料平台API接口,网关地址为//openapi.stable.dl.alipaydev.com/gateway.do,测试参数通过邮件至机具对接邮件组<iot-dev@list.alibaba-inc.com>获取。
生产环境:需注册企业支付宝账号并完成开放平台认证,创建应用以调用接口,可参考教程。
API接口名称 | 功能解释 |
ant.merchant.expand.assetproduce.assign.query | 获取生产指令接口。用于查询机具厂商需要生产的机具批次信息,厂商可定时轮询调用。 |
ant.merchant.expand.assetproduce.assign.sync | 生产指令接收反馈接口。当机具厂商开始生产这批机具时,可通过该接口同步信息。 |
ant.merchant.expand.assetproduce.complete.sync | 物料生产完成反馈接口。当机具厂商完成这批机具生产后,可通过该接口反馈结果。 |
ant.merchant.expand.assetdelivery.assign.query | 获取配送指令接口。用于查询机具厂商需要配送的物流订单信息。 |
ant.merchant.expand.assetdelivery.assign.sync | 配送指令接收反馈接口。当机具厂商准备配送机具时,可通过该接口同步信息。 |
ant.merchant.expand.assetdelivery.complete.sync | 配送完成反馈接口。当机具厂商完成机具配送后,可通过该接口反馈结果。 |
ant.merchant.expand.assetinfo.sync | 物料信息反馈接口。用于向蚂蚁金服开发平台同步物料生产完成以及配送完成的机具信息。 |
物流公司code | 物流公司名称 |
POST | 中国邮政 |
ZJEMS | 浙江省邮政速递物流有限公司 |
SF | 顺丰快递 |
CAINIAO | 菜鸟 |
YTO | 圆通速递 |
ZJS | 宅急送快递 |
ZTO | 中通速递 |
YUNDA | 韵达快递 |
STO | 申通快递 |
POSTB | 邮政快递包裹 |
EMS | EMS |
HTKY | 百世快递 |
OPO | 自选物流,需要注意传值为:联系人/联系方式,如:张三/13910002000 |
机具厂商对接机具SDK之前,请先确认已提供交叉编译工具链和提供测试样机,以便支付宝为该型号机具适配SDK,当上述准备工作完成后,会通过邮件收到测试版机具SDK,可供进行机具集成对接。详见管控SDK接入指南。
/** * 测试获取生产指令 */ @Test public void testAntMerchantExpandAssetproduceAssignQuery() throws Exception { AntMerchantExpandAssetproduceAssignQueryModel model = new AntMerchantExpandAssetproduceAssignQueryModel(); model.setPageSize(100L); AntMerchantExpandAssetproduceAssignQueryRequest request = new AntMerchantExpandAssetproduceAssignQueryRequest(); request.setBizModel(model); AntMerchantExpandAssetproduceAssignQueryResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试生产指令接收反馈 */ @Test public void testAntMerchantExpandAssetproduceAssignSync() throws Exception { AntMerchantExpandAssetproduceAssignSyncModel model = new AntMerchantExpandAssetproduceAssignSyncModel(); AssetResult a1 = new AssetResult(); a1.setSuccess(true); a1.setAssignItemId("PI2018030710232553"); AssetResult a2 = new AssetResult(); a2.setSuccess(true); a2.setAssignItemId("PI2018030710232554"); model.setAssetResults(Arrays.asList(a1, a2)); AntMerchantExpandAssetproduceAssignSyncRequest request = new AntMerchantExpandAssetproduceAssignSyncRequest(); request.setBizModel(model); AntMerchantExpandAssetproduceAssignSyncResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试物料生产完成反馈 */ @Test public void testAntMerchantExpandAssetproduceCompleteSync() throws Exception { AntMerchantExpandAssetproduceCompleteSyncModel model = new AntMerchantExpandAssetproduceCompleteSyncModel(); ItemDeliveryDetail d1 = new ItemDeliveryDetail(); d1.setAssignItemId("PI2018030710232553"); d1.setLogisticsNo("40004001"); d1.setLogisticsName("顺丰速运"); d1.setLogisticCode("SF"); ItemDeliveryDetail d2 = new ItemDeliveryDetail(); d2.setAssignItemId("PI2018030710232554"); d2.setLogisticsNo("40004002"); d2.setLogisticsName("顺丰速运"); d2.setLogisticCode("SF"); model.setAssetProduceDetails(Arrays.asList(d1, d2)); AntMerchantExpandAssetproduceCompleteSyncRequest request = new AntMerchantExpandAssetproduceCompleteSyncRequest(); request.setBizModel(model); AntMerchantExpandAssetproduceCompleteSyncResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试获取配送指令 */ @Test public void testAntMerchantExpandAssetdeliveryAssignQuery() throws Exception { AntMerchantExpandAssetdeliveryAssignQueryModel model = new AntMerchantExpandAssetdeliveryAssignQueryModel(); model.setPageSize(100L); AntMerchantExpandAssetdeliveryAssignQueryRequest request = new AntMerchantExpandAssetdeliveryAssignQueryRequest(); request.setBizModel(model); AntMerchantExpandAssetdeliveryAssignQueryResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试配送指令接收反馈 */ @Test public void testAntMerchantExpandAssetdeliveryAssignSync() throws Exception { AntMerchantExpandAssetdeliveryAssignSyncModel model = new AntMerchantExpandAssetdeliveryAssignSyncModel(); AssetResult a1 = new AssetResult(); a1.setSuccess(true); a1.setAssignItemId("DI2018030768107834"); AssetResult a2 = new AssetResult(); a2.setSuccess(true); a2.setAssignItemId("DI2018030768107835"); AssetResult a3 = new AssetResult(); a3.setSuccess(true); a3.setAssignItemId("DI2018030768107836"); AssetResult a4 = new AssetResult(); a4.setSuccess(true); a4.setAssignItemId("DI2018030768107837"); model.setDeliveryResults(Arrays.asList(a1, a2, a3, a4)); AntMerchantExpandAssetdeliveryAssignSyncRequest request = new AntMerchantExpandAssetdeliveryAssignSyncRequest(); request.setBizModel(model); AntMerchantExpandAssetdeliveryAssignSyncResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试配送完成反馈 */ @Test public void testAntMerchantExpandAssetdeliveryCompleteSync() throws Exception { AntMerchantExpandAssetdeliveryCompleteSyncModel model = new AntMerchantExpandAssetdeliveryCompleteSyncModel(); AssetDeliveryDetail a1 = new AssetDeliveryDetail(); a1.setAssignItemId("DI2018030768107834"); a1.setAmount("2"); LogisticsInfo l1 = new LogisticsInfo(); l1.setLogisticsNo("40005001"); l1.setLogisticsName("顺丰速运"); l1.setLogisticsCode("SF"); a1.setLogisticsInfos(Arrays.asList(l1)); AssetDeliveryDetail a2 = new AssetDeliveryDetail(); a2.setAssignItemId("DI2018030768107835"); a2.setAmount("2"); LogisticsInfo l2 = new LogisticsInfo(); l2.setLogisticsNo("40005002"); l2.setLogisticsName("顺丰速运"); l2.setLogisticsCode("SF"); a2.setLogisticsInfos(Arrays.asList(l2)); AssetDeliveryDetail a3 = new AssetDeliveryDetail(); a3.setAssignItemId("DI2018030768107836"); a3.setAmount("2"); LogisticsInfo l3 = new LogisticsInfo(); l3.setLogisticsNo("40005003"); l3.setLogisticsName("顺丰速运"); l3.setLogisticsCode("SF"); a3.setLogisticsInfos(Arrays.asList(l3)); AssetDeliveryDetail a4 = new AssetDeliveryDetail(); a4.setAssignItemId("DI2018030768107837"); a4.setAmount("2"); LogisticsInfo l4 = new LogisticsInfo(); l4.setLogisticsNo("40005004"); l4.setLogisticsName("顺丰速运"); l4.setLogisticsCode("SF"); a4.setLogisticsInfos(Arrays.asList(l4)); model.setAssetDeliveryDetails(Arrays.asList(a1, a2, a3, a4)); AntMerchantExpandAssetdeliveryCompleteSyncRequest request = new AntMerchantExpandAssetdeliveryCompleteSyncRequest(); request.setBizModel(model); AntMerchantExpandAssetdeliveryCompleteSyncResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
/** * 测试物料信息反馈 */
@Test public void testAntMerchantExpandAssetinfoSyncProduct() throws Exception { AntMerchantExpandAssetinfoSyncModel model = new AntMerchantExpandAssetinfoSyncModel(); AssetInfoItem a1 = new AssetInfoItem(); a1.setType("PRODUCE"); a1.setAssignItemId("PI2018030710232553"); a1.setSubType("MC_SN_NOS"); a1.setValue("['YIJIANG0001', 'YIJIANG0002']"); AssetInfoItem a2 = new AssetInfoItem(); a2.setType("PRODUCE"); a2.setAssignItemId("PI2018030710232554"); a2.setSubType("MC_SN_NOS"); a2.setValue("['YIJIANG0003', 'YIJIANG0004']"); model.setAssetInfos(Arrays.asList(a1, a2)); AntMerchantExpandAssetinfoSyncRequest request = new AntMerchantExpandAssetinfoSyncRequest(); request.setBizModel(model); AntmerchantExpandAssetinfoSyncResponse response = client.execute(request); logger.info("response body: {}", response.getBody()); }
上线之前需进行技术体验和技术验收工作。请联系支付宝技术。
基于法律法规、监管政策等原因,我公司有权采取变更或暂停接口使用、终止合作等措施。