更新时间:2024-10-23 18:09:00文档更新记录 >集成工具收藏订阅更新我的文档设置返回文档商家/服务商如需在用户在支付宝卡包中打开会员卡时,展示自行生成的动态二维码/条形码,可根据本文指引集成动态发码功能。1 名词解释●动态码:指码值实时生成、只在一定时间内有效、失效后重新发码更新的扫码核销方式。动态码按展示类型可分为动态条形码和动态二维码,一般由支付宝自动发码、核销。●商户动态码:指由外部商户自主发码的动态码扫码核销方式,码值、有效期等都由外部商家自主生成和控制。2 业务流程商户动态码的生成和更新采用 支付宝通知商户发码,商户回调支付宝接口更新码值 的方式。整体交互流程大致如下图:流程上可以分为以下两个阶段:1通知阶段:支付宝访问预设的商家系统地址通知商户发码,商家系统返回 ack 应答,告知支付宝收到了发码通知;2发码阶段:商家系统生成码值、码过期时间等动态码信息,商家系统调用支付宝开放接口,回传动态码值。3 接入流程3.1 交互时序图3.2 第一步:模板配置商家/服务商需在调用 alipay.marketing.card.template.create(会员卡模板创建接口)时:1指定为 write_off_type(会员卡核销类型)为 mdbarcode(商户动态条形码) 或 mdqrcode(商户动态二维码),即:○write_off_type=mdbarcode,展示商户动态条形码。○write_off_type=mdqrcode,展示商户动态二维码。2在 mdcode_notify_conf(商户动态码通知参数配置)中配置 url(接收发码通知的 https 链接地址)及 ext_params(自定义通知参数)。示例代码其中关键配置字段的释义如下:参数描述说明示例write_off_type卡包详情页面中展现出的卡码(可用于扫码核销)展示商家自主生成动态码值(码值、时效性都由商户控制)时,支持:●mdqrcode:商户动态二维码,扫码得商户自主传入的码值。●mdbarcode:商户动态条码,扫码得商户自主传入的码值。mdqrcodemdcode_notify_conf商户动态码通知参数配置。当 write_off_type 指定为商户动态码 mdbarcode 或 mdqrcode 时必填。在此字段配置用户打开会员卡时,支付宝通知商户生成动态码(发码)的通知地址及自定义参数通知参数。-l url通知商户发码的 url 地址,必填只支持 https,post 请求https://www.exp-test.com/mcard/dynamiccodel ext_params通知请求自定义参数,选填。json 格式,通知请求中的商户自定义参数。{\"eventtype\":\"dynamiccode\",\"msgtype\":\"event\"}商家/服务商完成动态码模板配置后,可根据 基础功能 指引完成给用户开卡操作。3.3 第二步:通知应答3.3.1 支付宝通知当用户在支付宝 app 内打开会员卡需要加载动态码时,支付宝会向 第一步:模板配置 中 mdcode_notify_conf#url 指定的 https 地址,以下列参数提交 post 请求:参数描述示例fromalipayuserid支付宝uid2088283746283746bizcardno卡号,支付宝业务卡号。这里是 alipay.marketing.card.open(会员卡开卡)接口返回的 card_info#biz_card_no。000001createtime时间戳1405943673657 模板配置的 ext_params商户自定义参数"eventtype:"dynamiccode","msgtype":"event"signrsa2 算法签名,用于商户端验签,确认请求来源为支付宝。-以上文中的模板配置 mdcode_notify_conf 为例,当支付宝用户(用户 id:2088283746211111) 打开会员卡(卡号:123456789)时,支付宝将向 https://www.exp-test.com/mcard/dynamiccode 发起 post 请求,提交以下参数:注意:●支付宝出口网关系统会对所有对外的请求参数使用 rsa2 算法进行加签,即 post 提交的参数中还包含额外的参数 sign 存储签名,商户系统收到请求后使用公钥进行验签,以保证收到的请求是来至支付宝的合法请求(验签示例参见 附录:接收支付宝通知的 java 代码示例)。●支付宝通知验签使用的 alipay_public_key(支付宝公钥)固定为:3.3.2 商户应答商户系统收到通知后不直接返回动态码,只返回应答表明已经收到该请求。返回的格式如下:参数描述示例touserid支付宝uid2088283746283746msgtype消息类型(结果码)ack: 成功。fail:失败,异常情况。createtime时间戳1406165628612返回给支付宝的应答使用 text/xml;charset=gbk 格式。格式示例:3.4 第三步:动态码回传商家/服务商收到支付宝通知后,需调用 alipay.marketing.card.update(会员卡更新接口)接口回传自行生成的动态码。通用参数参见接口文档,商家/服务商需在 card_info#mdcode_info 字段传入动态码信息。参数描述示例card_info需要修改的最新卡信息。-l mdcode_info商户动态码回传信息。只用于当 write_off_type 核销类型为 mdbarcode 或 mdqrcode 时,商户调用卡更新接口回传动态码。-ll code_status结果码,当前发码状态。枚举支持:●success:支付宝会在动态码失效时间之后再发起通知让商户重新发码。●fail_retry:本次发码失败,需支付宝重新发起通知。●fail_not_retry:本次发码失败,且当前时间重试通知也无法解决发码问题,支付宝可间隔一段时间后再重试。successll code_value动态码值。code_status 为 success 时必填。123456789ll expire_time动态码失效时间,yyyy-mm-dd hh:mm:ss。code_status 为 success 时必填。2022-03-01 12:29:34ll time_stamp时间戳。即商户调接口回传动态码时刻对应的 long 类型时间戳,用于区分不同的发码请求。1405943673657示例代码4 附录:接收支付宝通知的 java 代码示例