抖音【交易系统2.0-生活到综poi小程序开发】步骤三、四

准备工作:

1.抖音开放平台=》控制台=》我的应用=》点击对应小程序=》开发=》解决方案配置=》找到对应的行业,设置回调地址

必须设置项

交易扩展点能力-退款申请回调扩展点  (退款申请提交,回调扩展) 

交易消息通知能力-交易系统退款通知  (退款同意|拒绝通知接口)

交易消息通知能力-预下单回调扩展点   (tt.createOrder下单回调,不然收银台调不起来)

步骤三:开始下单

 流程:前端调用JSAPI组件请求,抖音回调预下单回调,响应正确结果后。收银台调起。

 提示:下单链路一定要问清楚抖音同学,这个坑我已经踩过了。我们这种模式。只能用JSAPI去下单,我之前用的服务端OPENAPI,又重做了一把~~。这个问题是抖音对于这种模式的链路也属于摸石头过河阶段,服务端的OPENAPI不健全。

最重要的,下单的商品,

一个是通过创建商品接口,创建到抖音来客后台显示的。单独下单(poi商品下单)

一个是有服务端自己的商品和抖音来客后台商品混合下单(sku+poi商品下单)

tt.createOrder JSAPI下单。这个贴代码,剩下的看文档就可以了。

SKU创建和POI单商品创建:

if (data.lists.sku_flag) { //判断是否附带服务端商品信息,是代表混合下单,不是代表单POI商品下单
	const sku = data.lists.sku_list;
	let skuList = [];
	for (let i = 0; i < sku.length; i++) {
		let v = {
			skuId: sku[i].sku_id + '',
			skuType: sku[i].skuType,
			quantity: sku[i].quantity,
			price: sku[i].price,
			goodsInfo: data.lists.goods_list,
		}
		skuList.push(v);
	}
	let payment = {
		totalAmount: data.lists.payment.totalAmount
	};
	let callbackData = {//方便服务端判断的自定义参数
		sku_flag: data.lists.sku_flag, //true 混合支付  false 单业务购买
		duration: data.lists.duration, //服务时间
		order_type: '0',
	}
	uni.hideLoading()
	tt.createOrder({
		skuList,
		payment,
		callbackData,
		success: (res) => {
			const {
				orderId,
				outOrderNo
			} = res;
			this.setData({
				orderId, //内部商户订单号
				outOrderNo //开发者订单号
			});
			console.log([orderId, outOrderNo, payment.totalAmount])
			if (errMsg === "createOrder:ok") {
			//支付成功之后回调服务端处理订单
				this.processOrder(orderId, outOrderNo, payment
					.totalAmount);
			} else {
				$msg('操作失败');
			}
		},
		fail: (res) => {
			const {
				orderId,
				outOrderNo,
				errNo,
				errMsg,
				errLogId
			} = res;
			if (errLogId) {
				$msg('下单失败,请联系客服');
				console.log("预下单失败", errNo, errMsg, errLogId, 1);
			}
			if (errNo == 1 || errNo == 2 || errNo == 3 || errNo == 4) {
				//支付超时 支付失败 支付关闭 支付取消
				this.goPage("/pages/order/order")
			}
			//$msg('下单失败,请联系客服');
			//console.log(errNo, errMsg, errLogId, 3);
		},
	});
} else {
	const god = data.lists.goodsList;
	let goodsList = [];
	for (let i = 0; i < god.length; i++) {
		let v = {
			quantity: 1,
			price: god[i].price,
			goodsName: god[i].goodsName,
			goodsPhoto: god[i].goodsPhoto,
			goodsId: god[i].goodsId,
			goodsType: god[i].goodsType,
		}
		goodsList.push(v);
	}
	let payment = {
		totalAmount: data.lists.payment.totalAmount
	};
	let callbackData = {
		sku_flag: data.lists.sku_flag, //true 混合支付  false 单业务购买
		duration: data.lists.duration, //服务时间
		order_type: 0,
	}
	uni.hideLoading()
	tt.createOrder({
		goodsList,
		payment,
		callbackData,
		success: (res) => {
			const {
				errMsg,
				orderId,
				outOrderNo
			} = res;
			console.log([orderId, outOrderNo, payment.totalAmount])
			if (errMsg === "createOrder:ok") {
				this.processOrder(orderId, outOrderNo, payment
					.totalAmount);
			} else {
				$msg('操作失败');
			}
		},
		fail: (res) => {
			const {
				orderId,
				outOrderNo,
				errNo,
				errMsg,
				errLogId
			} = res;
			if (errLogId) {
				$msg('下单失败,请联系客服');
				console.log("预下单失败", errNo, errMsg, errLogId, 1);
			}
			if (errNo == 1 || errNo == 2 || errNo == 3 || errNo == 4) {
				//支付超时 支付失败 支付关闭 支付取消
				this.goPage("/pages/order/order")
			}
			//$msg('下单失败,请联系客服');
			console.log(errNo, errMsg, errLogId, 3);
		},
	});
}

 正常就是调起收银台,获取组件执行结果。可以自行判断处理订单还是创建未支付订单。只要调起收银台,不管是否支付抖音都会出现一个未支付订单。服务端也需要记录。如果是多个不同商品。每个商品价格不一样。商品的支付单号和以往像支付宝、微信的支付单号不一样。需要将数据存储服务端。

重要字段-预下单回调

order_id  抖音订单号

item_order_id  对应商品的支付单号,退款会用到,如果多个商品。每个支付单号都不一致。单独存储!!!

步骤四:退款

 提示:退款链路一定要问清楚抖音同学!!

调用退款JSAPI组件,tt.applyRefund  贴代码

//三个参数依然是服务端组装过来的,操作过创建订单这个就不多介绍
tt.applyRefund({outOrderNo: orderId,refundInfo,itemOrderList,
  success(res) {
	const { outRefundNo } = res;
	if(res.errMsg == "applyRefund:ok"){
		that.refundStatus = 'success'//显示成功界面
	}
  },
  fail(res) {
	that.refundStatus = 'fail'//显示失败界面
  },
});

这一步只是退款申请,回调是请求的

1.上述解决方案中设置的回调地址。交易扩展点能力-退款申请回调扩展点

这个操作代表这个订单需要退款,只是申请发送到了抖音。并不是实际退款。

2.申请处理完毕之后,抖音会异步继续通知

上述解决方案中设置的回调地址。交易消息通知能力-交易系统退款通知

整体流程:用户调用退款组件-》执行成功-》抖音异步回调退款申请回调扩展点地址=》服务端处理订单退款状态逻辑调整=》如果退款需要审核=》这一步抖音是不会异步通知的。需要在服务端做一个审核按钮,调用同步退款结果=》抖音退款=》退款成功调用退款通知回调=》回调中处理订单退款真实成功或者失败

这个操作代表,抖音需要服务端把这笔订单的退款审批结果在送达抖音端。之后抖音再开始正式的退款或者拒绝操作。

退款多式多样,整退。单独退。主要和创建订单-》预下单回调。中返回的“item_order_id”有关

做到这里基本上整个除了相关业务逻辑操作(im客服小功能就不讲了,看文档就可以了)。和抖音交互的基本没有了。

结语:

       抖音的这套链路,和以往常规对接有点出入,对接支付宝、微信的话。基本是都封装好了。业务逻辑处理完传入对应的字段就可以了。这套链路我感觉是更贴合开发者,更深入商品细节。让开发者细微的参数都需要一一处理。包括支付、退款逻辑。单独退款。也比较贴切,更灵活区分业务。还有中途不要被抖音同学的属于给混淆。poi、poi货架、sku。中途也是重工好多功能。希望大家一遍过~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拖拉机上的优雅罗

实用并赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值