当前位置: 首页 > Web前端 > HTML

SpringBoot+UniApp+微信商家优惠券使用

时间:2023-03-28 17:58:37 HTML

参考微信官方文档微信支付商家优惠券API介绍:https://pay.weixin.qq.com/wik...后端第三方集成服务Github-WxJava:https://github.com/Wechat-Gro...前端小程序发卡插件官方小程序发卡插件:https://pay.weixin.qq.com/wik...uniapp引用小程序发卡插件使用心得-in:https://ask.dcloud.net.cn/art...后端API:https://pay.weixin.qq.com/wik...importpom.xmlcom.github.binarywangweixin-java-pay4.1.0application.yml注:wx.pay.mchKey为微信支付apiv2的signkey,加密的时候可能会用到V2和V3密钥这里看文档要求wx:pay:appId:wxoinweoih3098340h#微信公众号或者小程序的appid等mchId:1234456789#微信支付商户账号certSerialNo:KOKLJB45BB45KB45OIBOB45OUBB45OUBB45商户申请APPID改正对应微信公众平台服务号apiv3Key:kljbawerkuoin324ointoin34#微信支付商户密钥V3秘钥KeymchKey:oeairbngonegnoINoijOIHNoino#微信支付商户密钥V2秘钥密钥证书:https://api.mch.weixin.qq.com/v3/certificates#微信获取平台证书列表地址#微信统一下单API地址,用于二维码支付payScoreNotifyUrl:https://api.mch.weixin.qq.com/v3/pay/transactions/jsapicallbackUrl:https://api.sampleabc.com/api/pay/callback/#异步接收微信支付结果通知的回调地址subAppId:#服务商模式下的子商户公众号idsubMchId:#服务商模式下的子商户号privateKeyPath:D:/samplePathabc/apiclient_key.pemprivateCertPath:D:/samplePathabc/apiclient_cert.pem#p12证书所在位置,可以指定绝对路径或类路径(以classpath开头:)keyPath:D:/samplePathabc/apiclient_cert.p12相关类项目中可以找到以下类,gitclonedown后搜索即可,通过测试可知使用界面类:https://github.com/Wechat-Gro...实现类:https://github.com/Wechat-Gro...测试类:https://github.com/Wechat-Gro...生成商户优惠券//生成优惠券@PostMapping(value="/port/to/create")publicStringcreateCoupon(@RequestBodyMapbody)抛出异常{StringstockId=this.testCreateFavorStocksV3();returnstockId;}//生成商家优惠券publicStringtestCreateFavorStocksV3()throwsWxPayException{BusiFavorStocksCreateRequestrequest=newBusiFavorStocksCreateRequest();request.setStockName("这是商家优惠券666");请求.setBelongMerchant(wxPayService.getConfig().getMchId());request.setComment("这是评论");request.setGoodsName("伦纳德专用");request.setCouponCodeMode("WECHATPAY_MODE");request.setOutRequestNo(wxPayService.getConfig().getMchId()+"20210204"+"1024102410");//CouponUseRulecouponUseRule=newCouponUseRule();//离线验证couponUseRule.setUseMethod("OFF_LINE");//小程序注销//couponUseRule.setUseMethod("MINI_PROGRAMS");//couponUseRule.setMiniProgramsAppid("小程序APPID");//couponUseRule.setMiniProgramsPath("/pages/index/index/abc.html?sadf=xxx");//CouponAvailableTimecouponAvailableTime=newCouponAvailableTime();couponAvailableTime.setAvailableBeginTime("2021-10-22T13:29:35+08:00");couponAvailableTime.setAvailableEndTime("2021-10-29T13:29:35+08:00");couponUseRule.setCouponAvailableTime(couponAvailableTime);//固定面额优惠券request.setStockType(StockTypeEnum.NORMAL);FixedNormalCouponfixedNormalCoupon=newFixedNormalCoupon();fixedNormalCoupon.setDiscountAmount(31600);fixedNormalCoupon.setTransactionMinimum(98400);couponUseRule.setFixedNormalCoupon(fixedNormalCoupon);request.setCouponUseRule(couponUseRule);//发布规则StockSendRulestockSendRule=newStockSendRule();stockSendRule.setMaxCoupons(108);stockSendRule.setMaxCouponsPerUser(5);request.setStockSendRule(stockSendRule);BusiFavorStocksCreateResultresult=wxPayService.getMarketingBusiFavorService().createBusiFavorStocksV3(request);字符串stockId=result.getStockId();System.out.println("stockId:[{}]"+stockId);returnstockId;}查询商家证券详情//获取证券详情@PostMapping(value="/port/to/get")publicAjaxResultgetCouponDetails(@RequestBodyMapbody)throwsException{StringstockId=body.get("股票编号");BusiFavorStocksGetResult结果=this.testGetBusiFavorStocksV3(stockId);returnAjaxResult.success(result);}//获取商家详细信息信息publicBusiFavorStocksGetResulttestGetBusiFavorStocksV3(StringstockId)throwsWxPayException{BusiFavorStocksGetResultresult=wxPayService.getMarketingBusiFavorService().getBusiFavorStocksV3(stockId);System.out.println(结果);ResourceprivateWxPayServicewxPayService;//生成小程序版本发送商家优惠券请求所需参数@GetMapping(value="/get/coupon/params/{stockId}")publicMapgenerateCouponParams(@PathVariable("stockId")StringstockId)throwsException{优惠券coupon=couponMapper.selectCouponByStockId(stockId);BusiFavorCouponsUrlRequestrequest=newBusiFavorCouponsUrlRequest();request.setOutRequestNo(coupon.getOutRequestNo);request.setSendCouponMerchant(this.wxPayService.getConfig().getMchKey());request.setStockId(stockId);//签名字符串sign=this.buildBusiFavorCouponinfoMiniapp(request);Mapresult=newHashMap<>();result.put("存货k_id",stockId);result.put("out_request_no",request.getOutRequestNo());result.put("sign",request.getSign());result.put("send_coupon_merchant",request.getSendCouponMerchant())复制代码;返回结果;}//签名publicstringbublingBusifavorcouponIniaiapp(busifavorcoupOuponSurlrequestrequest)thorwxpayException{////////////////////ofor_request_no0=expoct_ID011yd_dy_dy_dy_and_and_and_and_1100rect_inyoft_10&ex_10&ton=即使xxxxxMapsignMap=newHashMap<>(8);signMap.put("out_request_no0",request.getOutRequestNo());signMap.put("send_coupon_merchant",request.getSendCouponMerchant());signMap.put("stock_id0",request.getStockId());Stringsign=SignUtils.createSign(signMap,WxPayConstants.SignType.HMAC_SHA256,this.wxPayService.getConfig().getMchKey(),null);returnsign;}前端导入第一步:点击manifest.json中的源码查看,在mp-weixin中添加:"plugins":{"sendCoupon":{"version":"latest","provider":"wxf3f436ba9bd4be7b"}}step2:在pages.json的globalStyle中添加"usingComponents":{"send-coupon":"plugin://sendCoupon/send-coupon"}Step3:在需要调用插件的页面调用,按照微信的对接文档即可。唯一需要注意的是优惠券事件bindcustomevent