首页 > 编程语言 >ios端通过微信小程序客服助手进行支付

ios端通过微信小程序客服助手进行支付

时间:2024-08-12 13:55:03浏览次数:15  
标签:程序 微信 ios 接口 消息 客服 String

文章目录


前言

小程序的ios端在众所周知的原因无法支付虚拟商品信息,互联网公司的处理方案:1.引导客户在H5页面进行支付,2.通过微信小程序客服助手引导客户授权公众号进行JSAPI调用支付

题主在查阅网上资料的时候,发现网上只是总结了大概得实现方案,并没有相关的实际案例代码给大家参考,如是题主使用的是接入小程序客服助手引导客户进行微信公众号授权后的JSAPI支付写了一套支付逻辑代码供大家参考。


一、如何开通微信小程序客户助手?

进入到微信公众平台—>登录选择–>开发–>开发管理–>开发设置–>消息推送
在这里插入图片描述
设置小程序客服消息需要转发到后端的url地址,设置token,数据格式题主选的xml,大家根据实际场景选择,影响不大。

注意:我们配置后端的url地址时,微信小程序提交的校验接口需要和服务器接收的转发的url地址保持一致,服务器校验的接口使用GET请求,小程序将用户消息转发到后端的接口需要用POST。例如:/wxMini//msg GET作为校验,/wxMini//msg POST作为处理接口转发请求的接口,在此接口里实现业务逻辑


二、如何配置小程序消息回复的接口校验?

    @GetMapping("/msg")
    @ResponseBody
    public String wechatInitCheck(HttpServletRequest request, HttpServletResponse response) {
        // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
        String signature = request.getParameter("signature");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");
        // 随机字符串
        String echostr = request.getParameter("echostr");
        log.info("signature:{},timestamp:{},nonce:{},echostr:{}", signature, timestamp, nonce, echostr);
       //这边的数组排序,大家一定要按照这个要求来,这个是微信官方文档的要求
       //,不然校验会报错
        String[] sort = {wxConfig.getMiniAppToken(), timestamp, nonce};
        Arrays.sort(sort);
        String sign = SecureUtil.sha1(StringUtils.join(sort));
        if (sign.equals(signature)) {
            return echostr;
        }
        return "接入失败";
    }

接入成功后的小程序消息推送的配置效果,这样我们就完成了接收小程序客服消息的能力。
在这里插入图片描述


三、小程序客服消息如何处理?

    @ApiOperation(value = "微信小程序消息回复处理")
    @PostMapping("/msg")
    public ResponseEntity<String> disposeEvent(HttpServletRequest request) throws IOException {
        //解析
        BufferedReader br = request.getReader();
        StringBuilder xmlData = new StringBuilder();
        String temp;
        while ((temp = br.readLine()) != null) {
            xmlData.append(temp);
        }
        //将收到的xml文件转换成map,大家可以根据具体的业务场景再次转换成对象
        Map<String, Object> msgMap = XmlUtil.xmlToMap(xmlData.toString());
        //处理转发过来的微信小程序客服消息
        wxMiniService.disposeMsg(msgMap);
        return ResponseEntity.ok("");
    }

处理收到的小程序转发的客服消息,解析消息后,可以在消息体当中解析出,用户小程序的openid参数为FromUserName,以及消息的类型参数为MsgType,然后内容content,大家根据实际的场景去debug下消息的格式,下面是一个示例。

{
	AppId=xxxxxxxxxxxxx,
 	PagePath=pages/mine/vip/index, 
	Title=AI短视频, 
	ToUserName=xxxxx, 
	//解析出来的用户的小程序openid
	FromUserName=xxxxx, 
	//解析出来的消息类型,此处为小程序卡片消息
	MsgType=miniprogrampage, 
	ThumbMediaId=xxxxxxx,
	MsgId=24659455xxxxxxx}
    @Override
    public Object disposeMsg(Map<String, Object> msgMap) {
        if (Objects.isNull(msgMap)) {
            return null;
        }
        log.info("微信客服消息事件处理:{}", msgMap);
        String msgType = (String) msgMap.get("MsgType");
        if (StringUtils.isBlank(msgType)) {
            return null;
        }
        //题主这边处理的是小程序消息和普通文本类型的消息,实际应用场景大家可以自行转换
        if (!msgType.equals("miniprogrampage") && !msgType.equals("text")) {
            return null;
        }
        String userOpenId = (String) msgMap.get("FromUserName");
        //todo 获取当用户的小程序openid,就可以通过小程序客服助手给指定的
        //openid的小程序用户发送消息
	}

效果如下图所示,我这边处理的的小程序卡片消息,小程序卡片消息当中包含了订单信息,后端根据这个订单消息进行后续处理,然后返回给用户一个包含一个跳转地址的图文连接消息。

在这里插入图片描述

四、小程序客服消息已经回复了,如何使用公众号授权让用户进行微信付款了?

题主当时想到的办法是,返回一个包含一个H5页面地址给前端,前端在根据打开的H5页面地址进行,后续的微信公众号的授权及付款操作。但是这样处理起来整个流程就会特别复杂,链路会很长,于是题主采用了一种更简单的方式,就是返回的小程序卡片消息中直接包含了微信公众号授权跳转地址,用户点击授权地址授权完成后,携带用户的授权code查询出用户的微信公众号的openid,然后携带订单号
和用户的公众号的openid重定向到前端地址,前端通过调用JSAPI的支付接口就可以完成支付了。卡片消息的内容为吊起微信微信公众号授权接口,具体参照微信接口文档。示例如下:整个流程图如下:

//授权重定向时记得带上订单编号或者订单id
    public static String OPEN_LINK_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
            WX_PUB_APP_ID + "&redirect_uri=" + REDIRECT_URI + "%3ForderNo%3D" +
            ORDER_NO_PLACEHOLDER + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";

请添加图片描述

总结

通过微信小程序客服消息,以及微信公众号授权,既可以通过在微信内通过JSAPI进行支付。具体的业务处理流程大家可以根据实际的业务场景去调整。如果对您有帮助,麻烦点赞收藏,谢谢!

标签:程序,微信,ios,接口,消息,客服,String
From: https://blog.csdn.net/m0_37903574/article/details/141128397

相关文章

  • 实时聊天系统/在线客服系统源码
    维恩云信息科技/唯一客服系统:基于Golang语言自主开发的在线客服系统。Golang实现的守护进程服务,非常稳定高性能,充分使用了多groutine并发机制,可以承载大访问量。网上有泛滥版本的PHP客服系统源码,强烈不建议部署使用。网上的源码大部分都有后门,会被控制服务器权限,会被偷取资料或者......
  • 使用微信小程序开发制作一个简单的在线学习应用
    微信小程序是一种可以在微信客户端中运行的应用程序,可以通过微信进行分享和使用。在制作一个简单的在线学习应用之前,我们首先需要了解微信小程序的开发环境和基础知识。微信小程序开发环境为了进行微信小程序的开发和调试,我们需要安装以下工具:Node.js:用于安装和管理小程序......
  • 如何为微信小程序添加位置定位和周边服务功能
    要为微信小程序添加位置定位和周边服务功能,可以通过调用微信小程序提供的API来实现。下面是一个示例代码,展示了如何使用微信小程序API来获取用户位置信息,并根据用户位置获取周边服务。首先,在小程序的json配置文件中,需要设置权限,允许使用地理位置信息。在app.json文件中添加如......
  • iPhone官方商店软件下载---免费看各种剧第③弹【iOS版包括iPad】
    ①点击iPhone自带软件AppStore②点击搜索,输入“便利阅读”,点击下载到手机 ③进入软件页面后,我们需要激活页面,点击“feedback” ④在反馈界面输入“真厉害”,点击“提交”⑤等软件闪退后,再点击重新进入,就可出现如下页面 ......
  • 基于微信小程序的心理测评平台设计与实现
    基于微信小程序的心理测评平台设计与实现DesignandImplementationofaPsychologicalAssessmentPlatformbasedonWeChatMiniProgram完整下载链接:基于微信小程序的心理测评平台设计与实现文章目录基于微信小程序的心理测评平台设计与实现摘要第一章引言1.1......
  • 微信小程序学习记录
    一、为什么要写这篇文章来公司已经1个半月了,虽然应聘的是嵌入式软件工程师,但是由于在实习期,公司也不太清楚具体给我一些什么任务,在完成第一项“bootloader错误注入”测试的任务之后,又给我增派了基于已有蓝牙小程序来进行修改的任务。没办法,学吧!!反正自己也有想要学习小程序开发的......
  • 想省时又高效?微信自动回复神器解救你!
       你还在为手动回复微信消息忙到飞起,错过一个个潜在客户吗?   告别繁琐,拥抱智能,自动回复设置,简直是职场人的超级英雄披风!【一键设置,轻松应对新客户】    想象一下,每当有新好友添加你时,微信自动通过对方的好友请求,并自动打招呼+贴心询问,比你还懂怎么拉近距......
  • 微信批量自动添加好友,自动备注,智能高效!
        告别手动加好友的繁琐,让个微管理系统成为你的智能助手,轻松扩展社交网络!1.多账号聚合管理   个微管理系统允许你同时在线管理多个微信号,实现无缝切换,告别繁琐的登录登出流程。2.客户数据一键导入    通过个微管理系统,你可以轻松批量导入客户......
  • 基于Java Springboot传统戏曲推广微信小程序
    一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse+微信开发者工具数据库:MySQL5.7数据库管理工具:Navica......
  • 基于Java Springboot宠物中心信息管理app或微信小程序
    一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse+微信开发者工具数据库:MySQL5.7数据库管理工具:Navica......