微信公众号在社会上的应用越来越广泛,对应的开发需求也日益增长,微信支付是公众号服务的重中之中,下面我来介绍一下关于微信的普通商户和子商户两种模式。
普通商户,它的申请入口在微信公众号,它跟微信公众号的耦合度相对较大,大多是自营运的公众号居多,由于微信一开始只有普通商户,所以前期的公众号也大多数是采用该模式。
子商户号,它的申请入口在特约商户手中,特约商户一般都是软件开发公司,他们承接外部项目进行开发,会存在商户管理的需求。这种子商户跟公众号是弱耦合,只要公众号的主体名称跟子商户号一致,在特约商户平台可以直接绑定,也可以随时解绑。
普通商户:
appid,公众号appId;
mch_id,商户号Id;
openid,公众号对应的用户Id;
子商户:
appid,特约商户号对应的appId;
sub_appid,公众号的appId;
mch_id,特约商户号;
sub_mch_id,子商户号;
openid,特约商户号对应的用户Id,不必填;
sub_openid,公众号对应的用户id
加密
在微信支付预下单的时候,是需要加密签名。由于微信给出了加密工具类,我们只需要把对应的参数填进去即可得到加密后的字符串。这个工具类的使用,在普通商户和子商户是没有区别的,区别的是在获取到生成prepay_id后,需要签名返回到前端页面的参数生成。
RequestHandler reqHandler = new RequestHandler(null, null);
reqHandler.init(公众号appId, 公众号secret, 商户号的mchkey);
普通商户: appid,公众号的appId
子商户号:appid,特约商户号的appId
当生成的参数返回到前端页面,到了这里,预下单发起支付就结束了。
具体的开发细节需要自己去看文档,这里只是简单的描述它们的不同之处。