大家好,我是小悟

今天是正月初五,气候超级好,也是迎财神的日子,祝大家顺风顺水,财源滚滚,钱兔似锦。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

既然要发财,那自然少不了收款咯。如果你是一个商家,肯定是想收款的方法越便利越好,但付出途径有那么多种,也就意味着顾客的付出选择也是多种。

那总不能把所有的途径收款码都贴上吧,那会十分的乱,对顾客来说也极端不便利,一个码能解决的工作,就不要搞杂乱化了。那这个是怎样完结的呢?

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

要完结一码多途径收款其实也不难,毋庸置疑,现在主流的付出方法就是微信和付出宝,而在微信和付出宝请求的商户相同点是都支撑余额、银行卡和信用卡付出,不同点是微信支撑云闪付付出,付出宝支撑花呗付出。所以只需对接了微信和付出宝,那根本上就够用了。

值得一提的是,跟着微信付出生态的开展,现在想完结这样的功用是越来越便利了。借助微信扫一般链接二维码打开小程序的功用,无需判别前端是微信仍是付出宝或许其他APP扫码,能够减少许多工作量。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

所以要点来了,我们都知道,微信和付出宝依据前端不同而有多种付出方法,比方APP付出,H5付出,小程序付出等。

为了完结更全和更简略的功用,付出宝需求对接H5付出,而微信需求对接的却是小程序付出。提到这里你或许就有疑问了,为啥不都是H5付出或都是小程序付出?

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

首先对接付出宝H5付出的话,当你运用其他APP比方抖音、快手打开的时分也能够跳转到付出宝完结付出,一了百了。再者由于微信小程序付出支撑云闪付付出,所以微信对接的是小程序付出。

提到这里不知道你已经想到完结思路了吗?是的,前端需求开发一个简略的页面,可是再简略,起码能够输入金额吧。然后简略做下金额正则校验,由于涉及到H5和小程序,所以能够运用uniapp编写前端页面布置更便利,也就是说付出宝布置的是H5,微信布置的是小程序。

我写的demo是搞了两个,不要学我哦,怎样便利怎样来,左面是付出宝H5扫出来的姿态,右边是微信小程序扫出来的姿态。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

付出做多了服务端其实也不杂乱,注意,付出宝对接的是H5付出,微信对接的是小程序付出,简略贴一下代码。需求写回调的话也必定不要忘了哦。

付出宝H5付出
public AjaxResult aliPayH5(PayModel payModel) {
    payModel.setBody("付出宝H5付出").setSubject("付出宝H5付出");
    String outTradeNo = IdUtil.getSnowflake(1,1).nextIdStr();
    payModel.setOutTradeNo(outTradeNo).setPassbackParams(outTradeNo);
    String form = aliPayService.aliPayH5(payModel);
if(StringUtils.isNotBlank(form)) {
        Map<String, Object> result = new HashMap<>(2);
        result.put("form", form);
return AjaxResult.success(result);
    }
return AjaxResult.error("数据预备反常");
}
微信小程序付出
public AjaxResult jsapiMaPayCommon(JsapiOrderParam param, HttpServletRequest request) {
    String openId = param.getOpenId();
    String remoteAddr = IpUtils.getIpAddr(request);
    String outTradeNo = IdUtil.getSnowflake(1,1).nextIdStr();
    BigDecimal decimal100 = new BigDecimal("100");
    BigDecimal orderAmount = new BigDecimal(String.valueOf(param.getAmount()));
    JsapiParam jsapiParam = new JsapiParam();
    jsapiParam.setAppid(wechatProperties.getMaAppId())
            .setMchid(wechatProperties.getMchId())
            .setDescription("微信小程序付出")
            .setOut_trade_no(outTradeNo)
            .setAttach(outTradeNo)
            .setNotify_url(wechatProperties.getNotifyUrlCommon());
    Amount amount = new Amount();
    amount.setTotal(decimal100.multiply(orderAmount).intValue());
    jsapiParam.setAmount(amount);
    Payer payer = new Payer();
    payer.setOpenid(openId);
    jsapiParam.setPayer(payer);
    SceneInfo sceneInfo = new SceneInfo();
    sceneInfo.setDevice_id("POS1:12");
    sceneInfo.setPayer_client_ip(remoteAddr);
    jsapiParam.setScene_info(sceneInfo);
    BaseParam baseParam = new BaseParam();
    baseParam.setAppName(wechatProperties.getAppName())
            .setMchId(wechatProperties.getMchId())
            .setMchSerialNo(wechatProperties.getMchSerialNo())
            .setWechatSerialNo(wechatProperties.getWechatSerialNo())
            .setMchPrivateKeyPath(wechatProperties.getMchPrivateKeyPath())
            .setWechatPubKeyPath(wechatProperties.getWechatPubKeyPath());
    JSONObject result = wechatService.jsapiPay(jsapiParam, baseParam);
    int status = result.getInteger("requestStatus");
if (status == 200) {
        SortedMap<Object, Object> params = new TreeMap<>();
        String timestamp = Long.toString(System.currentTimeMillis() / 1000);
        String nonceStr = UuidUtils.randomUUID();
        String packageParam = "prepay_id=" + result.getString("prepay_id");
        String paySign = SignUtils.paySign(wechatProperties.getMaAppId(), timestamp, nonceStr, packageParam,
                wechatProperties.getMchPrivateKeyPath());
        params.put("appId", wechatProperties.getMaAppId());
        params.put("timeStamp", timestamp);
        params.put("paySign", paySign);
        params.put("signType", "RSA");
        params.put("nonceStr", nonceStr);
        params.put("package", "prepay_id=" + result.getString("prepay_id"));
        logger.info("params:{}",params);
return AjaxResult.success(params);
    } else {
return AjaxResult.error(result.getString("message"), result);
    }
}

布置起来后,付出宝根本就这样了,能付出就行,微信还需求装备一些东西。首先,微信商户号后台,付出方法装备,云闪付需求敞开状态。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

其次,小程序后台,需求装备扫一般链接二维码打开小程序,将布置的付出宝H5付出链接地址映射到微信小程序的付出页面,测试规模选择线上版,全网发布即可。这样,当运用微信扫描该二维码地址时,就会主动跳转到微信小程序付出页面。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

然后运用草料二维码生成器将H5地址塞到二维码里边,就大功告成了,今后运用微信或付出宝,或许其他APP扫码就能够完结付出了。支撑微信、云闪付、付出宝、花呗、银行卡、信用卡付出。打完收工。

年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

一码在手,生意你有。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,往日皆可期,谢谢阅览,我们再会

我手中的金箍棒,上能通天,下能探海

上一篇:出人意料拿了个年度优异作者