alipay.marketing.activity.voucher.create 创建支付券一直显示图片审核中
结论
alipay.marketing.activity.voucher.create 可以创建支付券,但接口显示“图片审核中”,通常只说明创建请求已经进入异步素材审核流程。这不代表支付券已经创建成功,也不能说明接口不可用。
如果 B 端后台可以手动创建,而接口创建一直处于审核中,通常是因为两个渠道使用了不同的素材记录、上传主体或审核链路。即使图片文件完全相同,后台已经通过审核的素材也未必能直接用于开放平台接口。
如果状态长时间没有变化,可以先检查素材上传方式,以及应用主体和商户主体是否一致。仍无法解决时,携带接口响应、素材标识和请求流水号联系支付宝技术支持,确认审核任务是否异常。
为什么相同图片会出现不同结果
图片审核通常针对具体的“素材记录”,不只是图片文件本身。以下情况都可能触发新的审核:
- B 端后台和开放平台接口分别生成了不同的素材 ID。
- 上传素材时使用的应用
app_id不同。 - 接口调用方与支付券归属商户不一致。
- 服务商代商户调用时,应用授权关系或商户身份参数不完整。
- 图片的尺寸、格式、大小或访问权限不符合接口对应场景的要求。
- 素材虽然已在其他营销场景通过审核,但尚未完成支付券场景的审核。
- 素材审核任务出现积压或异常,没有正常进入终态。
因此,“同一张图片在后台能用”只能说明图片内容本身大概率没有明显问题,不能证明接口引用的素材记录已经通过审核。
建议的处理步骤
1. 确认接口调用是否真正成功
不要只看页面上的“图片审核中”,还要保存接口的原始响应,并重点检查:
codemsgsub_codesub_msg- 支付券或活动标识
- 素材标识
- 请求流水号或网关响应中的 trace 信息
网关返回成功,只表示支付宝已经受理创建请求。支付券最终是否创建成功,还需要根据接口返回的业务状态或相应查询接口判断。
2. 使用接口要求的素材上传链路
不要把 B 端后台中的图片地址、临时 URL 或后台页面生成的素材标识直接填入接口。
应按照 alipay.marketing.activity.voucher.create 当前开放平台文档的要求操作:
- 通过文档指定的素材上传接口上传图片。
- 获取上传接口返回的素材标识。
- 使用该素材标识创建支付券。
- 确保素材上传和支付券创建使用同一个应用和相同的商户身份。
具体的素材字段及上传接口名称应以当前开放平台文档为准,不要使用其他营销产品或旧版接口生成的素材 ID。
3. 检查调用主体是否一致
需要重点核对以下身份信息:
- 创建支付券使用的
app_id - 上传素材使用的
app_id - 支付券归属商户
- 服务商代调用时所授权的商户
- 应用是否已取得对应的产品权限
如果后台由商户本人操作,而接口通过服务商应用代为调用,两次操作可能使用不同的素材库和审核链路。
4. 检查图片本身
即使图片能在后台使用,也应按照接口文档重新检查:
- 文件格式
- 文件大小
- 图片宽高和宽高比
- 是否含有二维码、联系方式或引流信息
- 是否含有未经授权的商标、人物肖像或版权素材
- 图片文字是否与券名称和优惠内容一致
- 是否通过受支持的素材 ID 引用图片,而不是使用外部 URL
修改图片文件名通常无法解决审核问题。如果需要重新提交,建议生成新的素材记录,同时避免在短时间内反复提交同一份仍在审核中的素材。
5. 通过查询接口确认最终状态
创建接口与素材审核通常不会同步完成。提交后,应使用开放平台文档中与支付券对应的查询接口,获取支付券或活动的最新状态。
可以设置有限次数的轮询,并逐步延长查询间隔,例如:
- 第一次:30 秒后
- 第二次:1 分钟后
- 后续:每隔数分钟查询一次
- 达到业务设定的最长等待时间后,停止轮询并转为人工排查
不要每次看到“审核中”就重新创建支付券,否则可能产生重复活动或多条重复审核任务。
Java 调用示例
下面的示例主要用于完整记录支付宝网关响应。bizContent 中的具体字段必须根据当前接口文档和实际业务填写,示例不虚构业务参数。
AlipayClient alipayClient = new DefaultAlipayClient(
gatewayUrl,
appId,
privateKey,
"json",
"UTF-8",
alipayPublicKey,
"RSA2"
);
AlipayMarketingActivityVoucherCreateRequest request =
new AlipayMarketingActivityVoucherCreateRequest();
request.setBizContent(bizContent);
AlipayMarketingActivityVoucherCreateResponse response =
alipayClient.execute(request);
System.out.println("body=" + response.getBody());
System.out.println("code=" + response.getCode());
System.out.println("msg=" + response.getMsg());
System.out.println("subCode=" + response.getSubCode());
System.out.println("subMsg=" + response.getSubMsg());
if (response.isSuccess()) {
System.out.println("创建请求已被网关受理,后续仍需确认素材审核和支付券状态");
} else {
System.out.println("创建请求失败,应根据 subCode 和 subMsg 排查");
}
在生产环境中,应将完整响应与本地业务单号关联保存。日志中不要输出应用私钥、用户敏感信息或完整授权令牌。
长时间处于“图片审核中”怎么办
如果官方文档没有规定明确的审核时限,就不应自行认定超过某个固定时间便是审核失败。如果等待时间已经明显超出正常业务预期,可以整理以下信息并提交给支付宝技术支持:
- 接口名称:
alipay.marketing.activity.voucher.create - 应用
app_id - 商户 PID
- 接口调用时间
- 接口完整响应
- 网关请求流水号或 trace 信息
- 支付券或活动标识
- 图片素材标识
- B 端创建成功与接口创建处于审核中的对比截图
- 是否由服务商代商户调用
- 最近一次查询到的业务状态
技术支持可以根据这些标识检查素材审核任务是否成功创建、是否停滞在审核队列中,以及应用与商户之间是否存在权限或主体不一致的问题。
注意事项
- B 端的审核结果未必会同步到开放平台接口。
- 网关返回成功,不等于图片已经通过审核。
- 不要用后台页面中的临时图片地址代替接口要求的素材标识。
- 不要通过连续重复创建来催促审核。
- 不要只根据页面展示文案判断状态。应保存创建响应,并通过查询接口确认。
- 如果开放平台当前没有向你的应用开放该接口、素材上传能力或相应产品权限,需要先完成产品签约、应用授权或权限申请。是否具备权限,应以应用控制台和支付宝返回的错误信息为准。
备注:内容仅供参考。
