1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 抖音小程序开发 唤起收银台 包括抖音支付 支付宝支付 微信支付

抖音小程序开发 唤起收银台 包括抖音支付 支付宝支付 微信支付

时间:2022-02-01 16:00:37

相关推荐

抖音小程序开发 唤起收银台 包括抖音支付 支付宝支付 微信支付

大家好,我是小悟

在抖音小程序刚出来的时候就对接过在抖音小程序里面的支付,想一下,那都是三年前的事情了。

经过这么长的时间,抖音小程序也越来越完善了,不仅体现在本身的功能上,就连开放平台也焕然一新。在体验上,不管是对开发者或者用户,都是更上一层楼的。

抽空又研究了下抖音小程序的收银台,可以支持多种渠道支付,包括抖音支付、支付宝支付、微信支付。

1、开通支付

先在小程序后台,能力-支付那边开通支付能力,开通也很简单,按要求上传资料,可以同时开通抖音、支付宝和微信支付。

审核通过后,抖音和支付宝支付是立即开通的,但是微信支付还需要微信支付管理员扫码签约,签约后会显示审核中,审核通过后会显示已开通。

2、后端接入

在开发文档处找到担保支付,后端需要接入预下单接口,发往小程序服务端的请求,在没有特殊说明时,均需要使用担保支付密钥进行签名,用于保证请求的来源。

public static String Map2String(Map<String, Object> paramsMap) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("map[");List<String> params = new ArrayList<>();List<String> 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<Object> list) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("[");List<String> 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<String> REQUEST_NOT_NEED_SIGN_PARAMS = Arrays.asList("app_id", "thirdparty_id", "sign", "other_settle_params");public static String requestSign(Map<String, Object> paramsMap) {List<String> paramsArr = new ArrayList<>();for (Map.Entry<String, Object> 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 < 16) {hexValue.append("0");}hexValue.append(Integer.toHexString(val));}return hexValue.toString();}

然后发起预下单请求,返回如下信息即调用成功,order_id和order_token需要传给小程序端,唤起收银台。

{"err_no": 0,"err_tips": "success","data": {"order_id": "N7274614689692403869","order_token": "GVVxECgwIARDGJRiuMiABK4uiCoAESTgpMn+ejoVk1fqzVSL4HFO6myCMTzR1WyueGMGJV/iugWtIXFshTgpx5IQSRPxApgtm2VaQwSJPOsW0g1wUccxLoAqOgeYBmlu.E","url": ""}}

3、小程序端接入

接收到后端生成的预下单信息后,再调用小程序api,就可以唤起收银台。

唤起收银台的小程序appid需要和请求预下单接口传参的appid一致,否则会拉起收银台失败。

tt.pay({orderInfo: {order_id: 'N7274614689692403869',order_token: 'GVVxECgwIARDGJRiuMiABK4uiCoAESTgpMn+ejoVk1fqzVSL4HFO6myCMTzR1WyueGMGJV/iugWtIXFshTgpx5IQSRPxApgtm2VaQwSJPOsW0g1wUccxLoAqOgeYBmlu.E',},service: 5,success(res) {if (res.code == 0) {// 支付成功处理逻辑,只有res.code=0时,才表示支付成功// 但是最终状态要以商户后端结果为准}},fail(res) {// 调起收银台失败处理逻辑},});

在小程序后台还可以控制支付能力和收银台的支付方式。

支付能力即功能关闭后,小程序将关闭支付能力,新增订单支付将被拦截。该能力不影响历史订单的退款、分账与账户提现。

支付方式即关闭支付方式后,小程序收银台将不展示对应的支付方式,用户无法使用该支付方式进行支付。

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。