最近接手一个小程序需求,小程序可以自己进行注册,想查看哪个参数很方便,但是需求方那边需要他们自己注册商户信息,要用到的商户信息就需要自己跟需求方对接了,里面需要进行很多关联操作。把对接过程中遇到的问题以及需要注意的点都简单记录一下,希望对小程序支付遇到同样问题的同学有所帮助。
首先需要注册小程序,这个比较简单,这里不做说明,需要注意一下两个非常重要的参数:小程序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://www.yuntian.biz/support/112.html
微信商户证书申请流程参考链接:https://www.yw-jz.com/h-nd-1285.html