乐趣区

关于聚合:年初五迎财神-一张码如何实现多渠道微信支付宝云闪付收款

大家好,我是小悟

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

既然要发财,那天然少不了收款咯。如果你是一个商家,必定是想收款的形式越不便越好,但领取渠道有那么多种,也就意味着顾客的领取抉择也是多种。

那总不能把所有的渠道收款码都贴上吧,那会十分的乱,对顾客来说也极其不不便,一个码能解决的事件,就不要搞复杂化了。那这个是怎么实现的呢?

要实现一码多渠道收款其实也不难,毋庸置疑,当初支流的领取形式就是微信和支付宝,而在微信和支付宝申请的商户相同点是都反对余额、银行卡和信用卡领取,不同点是微信反对云闪付领取,支付宝反对花呗领取。所以只有对接了微信和支付宝,那基本上就够用了。

值得一提的是,随着微信领取生态的倒退,当初想实现这样的性能是越来越不便了。借助微信扫一般链接二维码关上小程序的性能,无需判断前端是微信还是支付宝或者其余 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 扫码就能够实现领取了。反对微信、云闪付、支付宝、花呗、银行卡、信用卡领取。打完出工。

一码在手,生意你有。

您的一键三连,是我更新的最大能源,谢谢

山水有相逢,来日皆可期,谢谢浏览,咱们再会

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

上一篇:给大家筹备了程序员专属红包封面,审核通过后我哭了,太心酸了(┬_┬)

退出移动版