抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付 | 您所在的位置:网站首页 › 抖音可以微信支付么 › 抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付 |
大家好,我是小悟 在抖音小程序刚出来的时候就对接过在抖音小程序里面的支付,想一下,那都是三年前的事情了。 经过这么长的时间,抖音小程序也越来越完善了,不仅体现在本身的功能上,就连开放平台也焕然一新。在体验上,不管是对开发者或者用户,都是更上一层楼的。 抽空又研究了下抖音小程序的收银台,可以支持多种渠道支付,包括抖音支付、支付宝支付、微信支付。 1、开通支付 先在小程序后台,能力-支付那边开通支付能力,开通也很简单,按要求上传资料,可以同时开通抖音、支付宝和微信支付。 审核通过后,抖音和支付宝支付是立即开通的,但是微信支付还需要微信支付管理员扫码签约,签约后会显示审核中,审核通过后会显示已开通。 2、后端接入 在开发文档处找到担保支付,后端需要接入预下单接口,发往小程序服务端的请求,在没有特殊说明时,均需要使用担保支付密钥进行签名,用于保证请求的来源。 public static String Map2String(Map paramsMap) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("map["); List params = new ArrayList(); List paramsArr = new ArrayList(); for (String key : paramsMap.keySet()) { paramsArr.add(key); } Collections.sort(paramsArr); for (String key : paramsArr) { Object objValue = paramsMap.get(key); if (objValue instanceof Map) { params.add(key + ":" + Map2String((Map) objValue)); } else if (objValue instanceof List) { params.add(key + ":" + List2String((List) objValue)); } else { params.add(key + ":" + objValue.toString()); } } stringBuilder.append(String.join(" ", params)); stringBuilder.append("]"); return stringBuilder.toString(); } public static String List2String(List list) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("["); List paramsArr = new ArrayList(); for (Object item : list) { if (item instanceof List) { paramsArr.add(List2String((List) item)); } else if (item instanceof Map) { paramsArr.add(Map2String((Map) item)); } else { paramsArr.add(item.toString()); } } stringBuilder.append(String.join(" ", paramsArr)); stringBuilder.append("]"); return stringBuilder.toString(); } public final static List REQUEST_NOT_NEED_SIGN_PARAMS = Arrays.asList("app_id", "thirdparty_id", "sign", "other_settle_params"); public static String requestSign(Map paramsMap) { List paramsArr = new ArrayList(); for (Map.Entry entry : paramsMap.entrySet()) { String key = entry.getKey(); if (REQUEST_NOT_NEED_SIGN_PARAMS.contains(key)) { continue; } Object objValue = entry.getValue(); String value = ""; if (objValue instanceof Map) { value = Map2String((Map) objValue); } else if (objValue instanceof List) { value = List2String((List) objValue); } else { value = entry.getValue().toString(); } value = value.trim(); if (value.startsWith("\"") && value.endsWith("\"") && value.length() > 1) { value = value.substring(1, value.length() - 1); } value = value.trim(); if (value.equals("") || value.equals("null")) { continue; } paramsArr.add(value); } paramsArr.add(SALT); Collections.sort(paramsArr); StringBuilder signStr = new StringBuilder(); String sep = ""; for (String s : paramsArr) { signStr.append(sep).append(s); sep = "&"; } return md5FromStr(signStr.toString()); } private static String md5FromStr(String inStr) { MessageDigest md5; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } byte[] byteArray = inStr.getBytes(StandardCharsets.UTF_8); byte[] md5Bytes = md5.digest(byteArray); StringBuilder hexValue = new StringBuilder(); for (byte md5Byte : md5Bytes) { int val = ((int) md5Byte) & 0xff; if (val "err_no": 0, "err_tips": "success", "data": { "order_id": "N7274614689692403869", "order_token": "GVVxECgwIARDGJRiuMiABK4uiCoAESTgpMn+ejoVk1fqzVSL4HFO6myCMTzR1WyueGMGJV/iugWtIXFshTgpx5IQSRPxApgtm2VaQwSJPOsW0g1wUccxLoAqOgeYBmlu.E", "url": "" } }3、小程序端接入 接收到后端生成的预下单信息后,再调用小程序api,就可以唤起收银台。 唤起收银台的小程序appid需要和请求预下单接口传参的appid一致,否则会拉起收银台失败。
支付能力即功能关闭后,小程序将关闭支付能力,新增订单支付将被拦截。该能力不影响历史订单的退款、分账与账户提现。 支付方式即关闭支付方式后,小程序收银台将不展示对应的支付方式,用户无法使用该支付方式进行支付。 您的一键三连,是我更新的最大动力,谢谢 山水有相逢,来日皆可期,谢谢阅读,我们再会 我手中的金箍棒,上能通天,下能探海 |
CopyRight 2018-2019 实验室设备网 版权所有 |