小程序支付:appid和mch_id不匹配采坑实录

    最近接手一个小程序需求,小程序可以自己进行注册,想查看哪个参数很方便,但是需求方那边需要他们自己注册商户信息,要用到的商户信息就需要自己跟需求方对接了,里面需要进行很多关联操作。把对接过程中遇到的问题以及需要注意的点都简单记录一下,希望对小程序支付遇到同样问题的同学有所帮助。
    首先需要注册小程序,这个比较简单,这里不做说明,需要注意一下两个非常重要的参数:小程序APPID和AppSecret(小程序密钥),前者是创建小程序之后系统会自动创建,后者是需要手动进行生成的,并且手动生成之后需要自己单独记一下,如果找不到了只能进行重置,系统不会进行保存的。
在这里插入图片描述
    下面进入到开发阶段,简单说一下涉及到的信息.
    1.需要用到的参数信息以及查看路径
        1.1小程序appid(小程序账号中查看)
        1.2AppSecret小程序密钥(小程序账号中查看)
        1.3商户号(商户平台中查看)
在这里插入图片描述

        1.4商户秘钥(商户平台中查看,需要商户进行手动记录,系统不会记录,忘记只能重置)
在这里插入图片描述

        1.5商户证书(商户平台中查看,文末附参考链接)
    2.支付相关代码
    2.1此处使用封装好的支付依赖weixin-java-pay:

			 <dependency>
                <groupId>com.github.binarywang</groupId>
                <artifactId>weixin-java-pay</artifactId>
                <version>3.5.0</version>
            </dependency>

    2.2支付配置类伪代码
    应用启动时读取支付配置文件相关信息并创建WxPayService对象(此处省略配置文件):

@Configuration
@RequiredArgsConstructor
@ConditionalOnClass(WxPayService.class)
public class WxPayConfiguration {

    @Bean
    public WxPayService wxMpPayService() {
 WxPayConfig payConfig = new WxPayConfig();
        payConfig.setAppId("小程序APPID");
        payConfig.setMchId("商户id");
        payConfig.setMchKey("商户秘钥");
        payConfig.setKeyPath("商户证书路径,商户证书一般放在resource下面,参考路径:classpath:apiclient_cert.p12");
        payConfig.setSignType(WxPayConstants.SignType.MD5);
        WxPayService wxPayService = new WxPayServiceImpl();
        wxPayService.setConfig(payConfig);
        return wxPayService;
    }
}

    2.3统一下单伪代码

	 @PostMapping("/pay")
    @SneakyThrows
    public ResponseEntity<WxPayMpOrderResult> pay(@RequestBody PayParam payParam) {
      	
      	// 省略业务代码,封装支付请求信息
        WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
     	// 设置支付回调地址
        orderRequest.setNotifyUrl("设置支付回调地址");
        // 设置支付类型
        orderRequest.setTradeType(WxPayConstants.TradeType.JSAPI);
        // 设置当前登录用户的唯一标识:openId
        orderRequest.setOpenid(openId);

		// 调用封装的wxPayService调用支付接口
		wxPayService.createOrder(orderRequest)

        // 省略业务代码
    }

    如果配置文件信息正确并相关授权已配置则可以进行正常支付并回调.
3.开发中问题汇总
    3.1 APPID传公众号APPID还是小程序的APPID?
    小程序支付下单api接口文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml,
特别说明一下APPID为微信旗下产品的唯一id,这里对接的小程序支付,所以这里的APPID为小程序的APPID.这里有个小插曲,找支付文档的时候看的是:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1,里面明确标注的APPID为公众号的APPID,误以为所有的微信支付都是基于公众号的APPID.这是个大坑,希望避免!这个也是appid和mch_id不匹配出现频率最高的原因。
在这里插入图片描述

    3.2 网上帖子翻遍之后如何接入人工客服
    登录小程序账号中按照标注位置进行操作(其他页签下找不到人工客服入口):
![在这里插入图片描述](https://img-blog.csdnimg.cn/f706abcaa2824a7c8854a1cd4fa96d27.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2W5p-054Gr55qE5bCP5LyZ5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16在这里插入图片描述
小程序的在线人工客服一般回答非技术类的审核问题,对于技术问题需要官方协助定位的,需要从社区中进行发帖求助,回复的速度还是比较快的,应该是有一部分技术支持会时刻关注最新发帖动态。
    3.3 商户号绑定小程序
    下单接口中返回报文:appid和mch_id不匹配,需要从商户平台以及小程序账号中检查是否进行关联.首选看商户平台中是否关联了小程序,如果没有关联需要手动进行添加.添加路径:商户平台–产品中心–appid授权管理.
在这里插入图片描述
    绑定成功之后商品平台页面截图:
在这里插入图片描述
    小程序账号下关联的商户信息截图(商户平台提交关联申请之后小程序账号中允许授权会立即同步):
在这里插入图片描述

微信商户账号申请参考链接:https://www.yuntian.biz/support/112.html
微信商户证书申请流程参考链接:https://www.yw-jz.com/h-nd-1285.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序的"拉起支付\sub_mch_id与sub_appid不匹配"是指在支付过程中,子商户号(sub_mch_id)与子商户的小程序AppID(sub_appid不匹配的错误提示。 微信小程序支付子商户号(sub_mch_id)与小程序AppID(sub_appid)应该是绑定在一起的,意味着只有绑定了对应关系的子商户号才能够使用对应的小程序AppID进行支付。如果在支付过程中出现"拉起支付\sub_mch_id与sub_appid不匹配"错误,可能是以下几个原因导致的: 1. 子商户号和小程序AppID没有正确绑定:在微信商户平台进行商户号和小程序AppID的绑定时,可能出现绑定错误的情况,需要确认绑定的子商户号与小程序AppID是否正确匹配,确保绑定过程正确完成。 2. 请求参数中的子商户号和小程序AppID不匹配:在拉起支付的请求参数中,可能传入了错误的子商户号或小程序AppID,需要仔细检查传入的参数是否正确。 3. 子商户号和小程序AppID不属于同一个商户:微信小程序支付要求子商户号和小程序AppID是属于同一个商户的,如果不是同一个商户的,就无法进行支付。需要核实子商户号和小程序AppID是否来自同一个商户。 如果出现"拉起支付\sub_mch_id与sub_appid不匹配"错误,可以通过检查以上原因来解决问题。如果仍然无法解决,建议联系微信支付的技术支持或相关的开发人员进行进一步的排查和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卖柴火的小伙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值