开发者社区 问答 正文

第三方服务商订阅FROM蚂蚁消息,使用长链接方式接入,出现异常。

**帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙帮忙**

场景

在第三方平台(ISV) 服务端中,我按照支付宝开放平台消息服务官方文档的指示,进行了Websocket的接入。

代码

final AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(appId);
        alipayMsgClient.setConnector(serverHost);
        alipayMsgClient.setSecurityConfig(signType, appPrivateKey, alipayPublicKey);
        alipayMsgClient.setMessageHandler(new MsgHandler() {
            /**
             * 客户端接收到消息后回调此方法
             * @param msgApi 接收到的消息的消息api名
             * @param msgId 接收到的消息的消息id
             * @param bizContent 接收到的消息的内容,json格式
             */
            public void onMessage(String msgApi, String msgId, String bizContent) {
                System.out.println("receive message. msgApi:" + msgApi + " msgId:" + msgId + " bizContent:" + bizContent);
            }
        });
        alipayMsgClient.connect();
        AlipayOpenAppOpenbizmockMessageSendRequest request2 = new AlipayOpenAppOpenbizmockMessageSendRequest();
        AlipayOpenAppOpenbizmockMessageSendModel model = new AlipayOpenAppOpenbizmockMessageSendModel();
// 设置业务参数
        model.setShopId("111");
        model.setStatus("ffcc");
        model.setUserId("209988278");
        request2.setBizModel(model);
// 发送消息
        request2.putOtherTextParam("app_auth_token",authToken);
        ProduceMsgAck produceMsgAck = alipayMsgClient.sendMessage(request2);
        if (produceMsgAck.getxStatus() == MsgStatusEnum.SUCCESS) {
            System.out.println("服务端接收消息成功");
        } else {
            System.out.println("服务端接收消息失败,错误码:" + produceMsgAck.getxCode() + " 错误描述:" + produceMsgAck.getxError());
        }

** 异常**


 MsgAck{xCmd='PRODUCE_ACK', xStatus=FAIL, xCode='20001', xError='msg.no-permission', xMessageId='null'}       

提问

在查询官方文档后 说明如下: 20001 msg.no-permission 无权限发送该消息 请检查是否开通相关消息服务 这就奇怪了,明明我第三方消息服务功能都订阅了,而且接入方式都是websocket长链接,为什么会提示以上信息。快出来帮帮忙!!!

展开
收起
游客kdm5ngerletsy 2020-09-14 11:20:37 901 分享 版权
阿里云 AI 助理回答

遇到错误码20001,提示msg.no-permission,即无权限发送该消息时,尽管您已经订阅了第三方消息服务并使用了Websocket长链接接入,但仍然出现权限问题,这可能涉及到以下几个方面的问题:

  1. 检查应用权限配置:请确保您的支付宝开放平台账户下,对应的应用已经正确开通了需要使用的具体消息服务。在支付宝开放平台的“产品中心”中找到相关消息服务,并确认是否已为您的应用成功开通。

  2. AppID与开通服务匹配:确认您在代码中使用的appId与在支付宝开放平台开通消息服务所用的应用ID完全一致。有时候,开发者可能会因为误用或混淆不同应用的AppID而导致权限问题。

  3. 消息类型权限:检查您尝试发送的消息类型(如AlipayOpenAppOpenbizmockMessageSendRequest)是否属于已开通的服务范围。某些特定类型的消息可能需要单独授权或有额外的权限要求。

  4. 权限刷新:有时权限更新可能存在延迟,如果您最近刚完成权限开通操作,可以尝试等待一段时间后再次测试,或者联系支付宝开放平台客服确认权限是否已生效。

  5. 官方文档最新性:确认您参考的官方文档是最新的版本,支付宝开放平台的接口和服务可能会有更新,旧文档中的指引可能不适用。

  6. 沙箱环境与正式环境差异:如果是在沙箱环境下测试,确保沙箱环境也正确配置了相应的权限。沙箱环境和正式环境的权限管理是独立的。

  7. 咨询支付宝技术支持:如果上述步骤都确认无误,建议直接联系支付宝开放平台的技术支持或通过开发者论坛提问,提供详细的错误信息和您的应用ID,以便他们能更准确地帮助您定位问题所在。

希望以上建议能帮助您解决问题,如果还有其他疑问,欢迎继续提问。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答