注意: 以上的应用只是个参考案例,我们是要做一个类似因公付款服务系统,但不是关于旅行社的。你只需要参考结构。
说明: 消息接入方式支持 websocket长连接 和 http(s) 两种接入任选其一即可,详情可点击查看From蚂蚁消息服务使用。
查看开放平台文档,完成以下两步准备工作:
utf-8enterprise_id,2.0版本接口生成的企业id企业需要开通企业码服务,需要通过下面的接口完成企业码服务的开通。支持服务商引入企业开通,也支持每个企业进行单独开通。
接口名: alipay.commerce.ec.enterprise.registerinvite.create
功能说明: 获取企业码-企业注册/认证/签约三合一页面的链接地址,适用于邀请企业或代理企业开通企业码
接口名: alipay.commerce.ec.enterprise.change.notify
功能说明: 企业相关状态变化产生的通知信息,包括企业签约成功,企业注销等状态通知。
参数说明: https://opendocs.alipay.com/apis/0477mu
支付宝通知类消息接入说明: https://opendocs.alipay.com/open/10381/gh4emp
1. 企业解约【可选】
alipay.commerce.ec.enterprise.unsign2. 企业注销【可选】
alipay.commerce.ec.enterprise.delete3. 查询企业详情【可选】
alipay.commerce.ec.enterprise.info.query4. 修改企业信息【可选】
alipay.commerce.ec.enterprise.info.modify用来管理可申请备用金的导游支付宝账户。
接口名: alipay.commerce.ec.employee.add
功能说明: 通过接口同步企业员工信息,并获取员工加入企业码链接。员工绑定开通后,即建立企业账号与员工账号的关联关系。并将结果通知给到企业。
参数说明: https://opendocs.alipay.com/apis/047c5n
重要参数说明:
department_ids为部门列表,目前只支持员工在一个部门里,不支持跨多个部门。sign_url每个企业返回的链接都是固定的,且永久有效手机号/邮箱邀请员工加入交互逻辑说明:
手机号/邮箱邀请员工身份确认逻辑说明: 员工开通服务时,入参传入员工在企业预留的手机号/邮箱和员工姓名,支付宝会唤起短信校验码页面让员工进行校验,校验一致,则完成员企业关系绑定。
员工加入企业的固定链接:
alipays://platformapi/startapp?appId=2021002128690179&page=pages%2Fopen%2Finvite%2Fsign%2Findex%3FaccountId%3D 地址后面,生成二维码让员工扫码加入企业。appId=2021002128690179为固定值,不需要进行变更。完整链接如下所示:
alipays://platformapi/startapp?appId=2021002128690179&page=pages%2Fopen%2Finvite%2Fsign%2Findex%3FaccountId%3D2088000330796***.
小程序跳转企业码签约页面方案:
小程序按下面代码示例调用,跳转企业码员工签约授权页,只需要替换掉enterpriseId后面的值为自己企业的enterpriseId。不要改appId的值!不要改appId的值!不要改appId的值!
旅行社场景按如下表格圈选字段及示意枚举值传参即可:
接口名: alipay.commerce.ec.employee.delete
功能说明: 通过接口删除企业码已离职员工。
参数说明: https://opendocs.alipay.com/apis/04763u
接口名: alipay.commerce.ec.employee.change.notify
功能说明: 员工变更通知,包括:员工新增、激活、信息修改、部门修改、角色修改和删除
参数说明: https://opendocs.alipay.com/apis/03s8k8
1. 获取员工邀请链接【可选】
alipay.commerce.ec.employee.invite.query2. 修改员工信息【可选】
alipay.commerce.ec.employee.info.modify3. 查询员工详情【可选】
alipay.commerce.ec.employee.info.query4. 查询员工id列表【可选】
alipay.commerce.ec.employee.idlist.query5. 企业升级高级认证【可选】
alipay.commerce.ec.enterprise.auth.apply旅行社备用金场景费用控制建议交互逻辑:
接口名: alipay.ebpp.invoice.institution.create
功能说明: 创建费控制度。
参数说明: https://opendocs.alipay.com/apis/049l40
费用类型及子类:
DEFAULT即可。旅行社场景按如下表格圈选字段及示意枚举值传参即可:
standard_condition_info_list字段传值参考:
| 使用时间 | 说明 |
|---|---|
| 【ALARM_CLOCK_TIME】 | 1、时间不限: {"all":true} |
定向支付,指定商户:
| 字段 | 是否必填 | 枚举值 |
|---|---|---|
| 费用类型【expense_type】 | 是 | 餐饮【MEAL】 |
| 费用类型子类【expense_sub_type】 | 是 | 中餐【CHINESE_FOOD】 |
| 商户PID【merchant_pid】 | 是 | 商户PID,2088开头 |
接口名: alipay.ebpp.invoice.institution.modify
功能说明: 编辑费控制度完整信息。
参数说明: https://opendocs.alipay.com/apis/049zmk
接口名: alipay.ebpp.invoice.institution.scopepageinfo.query
功能说明: 查询制度下成员列表,支持分页查询。
参数说明: https://opendocs.alipay.com/apis/04a389
1. 查询费控制度列表【可选】
alipay.ebpp.invoice.institution.pageinfo.query2. 查询单个费控制度详情【可选】
alipay.ebpp.invoice.institution.detailinfo.query3. 删除费控制度
alipay.ebpp.invoice.institution.delete接口名: alipay.ebpp.invoice.expensecontrol.quota.create
功能说明: 创建用户可用额度。target_type用INSTITUTION(费控制度)来创建,target_id用前面创建的费控制度id(institution_id)。
关键入参: https://opendocs.alipay.com/apis/02f6m7
接口名: alipay.ebpp.invoice.expensecontrol.quota.query
功能说明: 查询员工可用额度值。
关键入参: https://opendocs.alipay.com/apis/02f6m8
接口名: alipay.ebpp.invoice.expensecontrol.quota.modify
功能说明: 可对额度进行增加、扣减等操作。
关键入参: https://opendocs.alipay.com/apis/02f7v9
修改额度场景说明:
1. 删除额度
alipay.ebpp.invoice.expensecontrol.quota.delete接口名: alipay.ebpp.invoice.institution.expenserule.modify
功能说明: 编辑使用规则属性。
参数说明: https://opendocs.alipay.com/apis/049n7a
1. 创建使用规则
alipay.ebpp.invoice.institution.expenserule.create功能说明: 创建使用规则,场景和费用类型需要和制度一致,有效期起始、结束时间、关联人员与制度保持一致。
参数说明: https://opendocs.alipay.com/apis/049e73
2. 删除使用规则
alipay.ebpp.invoice.institution.expenserule.delete功能说明: 删除使用规则。如果是制度下唯一使用规则,则使用规则不能被删除。
参数说明: https://opendocs.alipay.com/apis/049m7m
2.4 账单&订单信息获取
接口名: alipay.commerce.ec.consume.change.notify
功能说明: 单笔交易信息账单关联凭证发生变化时通知。
参数说明: https://opendocs.alipay.com/apis/03t2yt
支付宝通知类消息接入说明: https://opendocs.alipay.com/open/10381/gh4emp
接口名: alipay.commerce.ec.consume.detail.query
功能说明: 获取消费账单详情数据和相关凭证数据。
参数说明: https://opendocs.alipay.com/apis/03t1jw
voucher_content字段结构介绍: https://opendocs.alipay.com/pre-open/07d3dg1. 账单详情批量分页查询
alipay.commerce.ec.consume.detail.batchquery注意: 入参中的
start_date和end_date为前闭后开,例如需要查询2021-01-01当天的所有账单,则start_date取"2021-01-01 00:00:00",end_date取"2021-01-02 00:00:00"
2. 对账单文件下载
alipay.commerce.ec.balance.downloadurl.query接口名: alipay.commerce.ec.voucher.change.notify
功能说明: 单笔交易账单关联凭证发生变化时通知。
参数说明: https://opendocs.alipay.com/apis/04bl9s
支付宝通知类消息接入说明: https://opendocs.alipay.com/open/10381/gh4emp
接口名: alipay.commerce.ec.consume.detail.query
功能说明: 获取消费账单详情数据和相关凭证数据。
参数说明: https://opendocs.alipay.com/apis/03t1jw
通过 openAlipayApp 拉起扫一扫,调用方式如下:
my.ap.openAlipayApp({
appCode: 'alipayScan',
appParams: {
externalThrough: {params}
}
})
参数说明:
其中标为黄色的区域,取值如下:
{params} 是需要携带的因公付拓展参数使用 Json 格式字符串params参数说明:
enterprisePay,适用: 收钱码,当面付,铁路线下支付assetId为共同账户id(accountId,从企业签约状态变更消息通知里获取)identityPayBizScene: ENTERPRISE_CODEidentityPaySubBizScene: ISV_PAYgroupId: 共同账户id(accountId,从企业签约状态变更消息通知里获取)bizGroupId: 共同账户id(accountId,从企业签约状态变更消息通知里获取)expenseGroupId: 费控规则id(当需要指定费控规则id消费时可传入此字段,可从创建费控制度接口出参获取)ENTERPRISEPAYASSET_DC_ENTERPRISEPAY_DEFAULTruleGroupId: 费控规则id(当需要指定费控规则id消费时可传入此字段,可从创建费控制度接口出参获取)paymentId: 付款事由(paymentId为服务商付款事由ID,通过此字段服务商可做到精确对账)isvAppId: 三方小程序appId(必传,涉及到后面服务商政策)接入示例:
准备所需要的参数,将参数转换为 JSON 结构并压缩(注意 key-value 都是字符串):
{
"pdSubBizScene": "enterprisePay",
"specifiedEnableChannelInfo": "{\"enableScene\":\"agreementpay\",\"assetInfo\":{\"instId\":\"INST_ALIPAY\",\"assetId\":\"2088610***68075\",\"assetTypeCode\":\"ENTERPRISEPAY\",\"assetType\":\"ENTERPRISEPAYASSET\"}}",
"assignJointAccountId": "208861***868075",
"identityPayBizInfo": "{\"identityPaySubBizScene\":\"ISV_PAY\",\"bizGroupId\":\"208861***868075\",\"groupId\":\"20886***68075\",\"identityPayBizScene\":\"ENTERPRISE_CODE\"}",
"CHANNEL_INDEX": "[\"ENTERPRISEPAYASSET_DC_ENTERPRISEPAY_DEFAULT\"]",
"enterprise_pay_info": "{\"paymentId\":\"test001\",\"ruleGroupId\":\"2023121200152608840000615146\"}",
"sourcePlatformInfo": "{\"paymentId\":\"test001\",\"ruleGroupId\":\"2023121200152608840000615146\",\"isvAppId\":\"2021004130649307\"}"
}
通过 openAlipayPage 拉起扫一扫
集成前准备:
通过 开放平台控制台 > 对应小程序详情页 > 开发设置 > openURL配置 中添加地址自助申请,添加地址填写:
alipays://platformapi/startapp?appId=20000056
若openURL配置没有,需要更改小程序经营类目, 理财金融 、工具 之外的全部小程序经营类目才开放openURL配置。
schema 跳转付款码 2.0 的跳转链接,格式如下:
alipays://platformapi/startapp?appId=20000056&customBizCode={bizCode}&customBizParams=encode({params})
其中标为黄色的区域,取值如下:
enterprisePayForThirdPartparams参数说明:
enterprisePay,适用: 收钱码,当面付,铁路线下支付assetId为共同账户id(accountId,从企业签约状态变更消息通知里获取)identityPayBizScene: ENTERPRISE_CODEidentityPaySubBizScene: ISV_PAYgroupId: 共同账户id(accountId,从企业签约状态变更消息通知里获取)bizGroupId: 共同账户id(accountId,从企业签约状态变更消息通知里获取)expenseGroupId: 费控规则id(当需要指定费控规则id消费时可传入此字段,可从创建费控制度接口出参获取)ENTERPRISEPAYASSET_DC_ENTERPRISEPAY_DEFAULTNONE_CHANNEL_MODEruleGroupId: 费控规则id(当需要指定费控规则id消费时可传入此字段,可从创建费控制度接口出参获取)paymentId: 付款事由(paymentId为服务商付款事由ID,通过此字段服务商可做到精确对账)isvAppId: 三方小程序appId(必传,涉及到后面服务商政策)接入示例:
准备所需要的参数,将参数转换为 JSON 结构并压缩(注意 key-value 都是字符串):
{
"pdSubBizScene": "enterprisePay",
"CHANNEL_INDEX": "[\"ENTERPRISEPAYASSET_DC_ENTERPRISEPAY_DEFAULT\"]",
"channelMode": "NONE_CHANNEL_MODE",
"specifiedEnableChannelInfo": "{\"enableScene\":\"agreementpay\",\"assetInfo\":{\"instId\":\"INST_ALIPAY\",\"assetId\":\"20883107**473\",\"assetTypeCode\":\"ENTERPRISEPAY\",\"assetType\":\"ENTERPRISEPAYASSET\"}}",
"assignJointAccountId": "208831****3473",
"identityPayBizInfo": "{\"identityPaySubBizScene\":\"ISV_PAY\",\"bizGroupId\":\"2088310****213473\",\"groupId\":\"2088310****3473\",\"identityPayBizScene\":\"ENTERPRISE_CODE\"}",
"enterprise_pay_info": "{\"paymentId\":\"test001\",\"ruleGroupId\":\"2023120400152608470000419071\",\"isvAppId\":\"2021004130649307\"}"
}
URL encode 后拼接可得到链接(红色部分是固定前缀):
最终链接 = 链接主体 + &customBizParams= + encode(params)
完整示例:
alipays://platformapi/startapp?appId=20000056&customBizCode=enterprisePayForThirdPart&customBizParams=%7B%22pdSubBizScene%22%3A%22enterprisePay%22%2C%22CHANNEL_INDEX%22%3A%22%5B%5C%5C%5C%22ENTERPRISEPAYASSET_DC_ENTERPRISEPAY_DEFAULT%5C%5C%5C%22%5D%22%2C%22channelMode%22%3A%22NONE_CHANNEL_MODE%22%2C%22specifiedEnableChannelInfo%22%3A%22%7B%5C%5C%5C%22enableScene%5C%5C%5C%22%3A%5C%5C%5C%22agreementpay%5C%5C%5C%22%2C%5C%5C%5C%22assetInfo%5C%5C%5C%22%3A%7B%5C%5C%5C%22instId%5C%5C%5C%22%3A%5C%5C%5C%22INST_ALIPAY%5C%5C%5C%22%2C%5C%5C%5C%22assetId%5C%5C%5C%22%3A%5C%5C%5C%22208831***213473%5C%5C%5C%22%2C%5C%5C%5C%22assetTypeCode%5C%5C%5C%22%3A%5C%5C%5C%22ENTERPRISEPAY%5C%5C%5C%22%2C%5C%5C%5C%22assetType%5C%5C%5C%22%3A%5C%5C%5C%22ENTERPRISEPAYASSET%5C%5C%5C%22%7D%7D%22%2C%22assignJointAccountId%22%3A%22208831***61213473%22%2C%22identityPayBizInfo%22%3A%22%7B%5C%5C%5C%22identityPaySubBizScene%5C%5C%5C%22%3A%5C%5C%5C%22ISV_PAY%5C%5C%5C%22%2C%5C%5C%5C%22bizGroupId%5C%5C%5C%22%3A%5C%5C%5C%222088***1213473%5C%5C%5C%22%2C%5C%5C%5C%22groupId%5C%5C%5C%22%3A%5C%5C%5C%22208831***13473%5C%5C%5C%22%2C%5C%5C%5C%22identityPayBizScene%5C%5C%5C%22%3A%5C%5C%5C%22ENTERPRISE_CODE%5C%5C%5C%22%7D%22%2C%22enterprise_pay_info%22%3A%22%7B%5C%5C%5C%22paymentId%5C%5C%5C%22%3A%5C%5C%5C%22test001%5C%5C%5C%22%2C%5C%5C%5C%22ruleGroupId%5C%5C%5C%22%3A%5C%5C%5C%222023120400152608470000419071%5C%5C%5C%22%2C%5C%5C%5C%22isvAppId%5C%5C%5C%22%3A%5C%5C%5C%222021004130649307%5C%5C%5C%22%7D%22%7D
通过 my.navigateToMiniProgram 拉起扫一扫(通过支付宝小程序跳转方式),调用方式如下:
// 代码示例
通过 scheme 拉起扫一扫(通过H5跳转方式),调用方式如下:
// scheme示例
参数说明:
| 参数名称 | 含义 | 值说明 |
|---|---|---|
| enterpriseId | 企业码企业ID(非因公账户ID) | 208831***473 |
| pageType | 页面类型,发票关联使用固定值: invoice-folder | invoice-folder |
| payNo | 发票关联页面类型对应的查询参数,支付宝交易号 | 2024042522001453811441399756 |