字节跳动小程序的一些坑
1.激励视频广告支持版本
抖音安卓 10.3 及以上,抖音 iOS10.7 及以上 ,需要通过 tt.getSystemInfoSync() 判断版本号 。
// 抖音版本 验证 function validVer() { let sys = tt.getSystemInfoSync(); console.log(version, sys.appName, sys.platform, sys.version, sys); // 为 true 不支持激励视频广告 if (sys.appName !== "Douyin") { return true; }
// 安卓抖音10.30支持 IOS 10.70支持 激励视频 //......
}
2.小程序广告相关设置
1.激励视频
/* 需先做版本判断处理 */ if (!this.verFlag) { // 抖音 this.showModel();
} else { / 头条 or 低版本 }
/* 全局 */ const videoAd = null; //... /* 初始化广告对象 */ initTTAd() { let that = this; if (tt.createRewardedVideoAd) { /* 设置广告对象 */ videoAd = tt.createRewardedVideoAd({ adUnitId: "广告ID", }); /* 捕捉错误 */ videoAd.onError((err) => { console.log(err.errCode); if (err.errCode == "1004") { // 暂时没有合适的广告,请稍后在试 } }); /* 监听广告关闭 */ videoAd.onClose((res) => { if (res.isEnded) { //成功 给予奖励 } else { // 中途关闭 } }); } }
!!字节小程序激励视频全局只全局只有一个videoAd
实例,重复创建没有用 只能抖音加载激励视频。
不同页面使用可能会冲突 参考封装的方法⬇️
<https://www.cnblogs.com/ZeroShiro/p/13530805.html>
2.AD组件
<!-- AD组件支持只头条小程序 , 可通过外部view设置样式 --> <view class="ad" v-if="touTAD"> <ad unit-id="广告ID" ad-intervals="100" bindload="adloadhandler" binderror="aderrorhandler" bindclose="adclosehandler" ></ad> </view>
3.输入框违规字段验证 (走后端)
先获取token
GET https://developer.toutiao.com/api/apps/token
POST https://developer.toutiao.com/api/v2/tags/text/antidirt
let url = "https://developer.toutiao.com/api/v2/tags/text/antidirt"; /* 验证字段 */ let data = { tasks: [ { content: v, }, ], }; /* 发送请求 */ // ....... { url: url, method: "POST", token: token, data: data, } //请求成功 验证 prob 字段 let data = res.data.data;
let flag = data.some((item, index) => { // 有一个是 1 表示有不合字段 return item.predicts[0].prob == 1; });
4.微信H5支付 pay
ios暂不支持虚拟支付 需要做判断
// 微信支付成功后 function tPay(res, ip = "127.0.0.1", out) { // 获取支付链接 分解 xml let mweb_url = getXMLNodeValue("mweb_url", res.data.toString("utf-8")); // 字节支付 secret let key = "xxxxxxx"; // 字节需要的字段 let orderInfo = { app_id: "80085xxxx", //头条支付分配给商户 app_id body: "xx订单", //商户订单详情 currency: "CNY", //固定值: CNY。币种 merchant_id: "190xxxx", //头条支付分配给商户的商户号, notify_url: `http://tp-pay.snssdk.com/cashdesk/test/paycallback`, //填任意非空 URL 即可(具体看官网) out_order_no: out, // 商户订单号 payment_type: "direct", //固定值:direct product_code: "pay", //固定值:pay sign_type: "MD5", //固定值:MD5。 subject: "xx订单", //商户订单名称 timestamp: createTimeStamp(), //发送请求的时间戳,精确到秒, total_amount: 100, // 金额,整型,单位:分(不能有小数) trade_time: createTimeStamp(), //下单时间戳,精确到秒 trade_type: "H5", //固定值:H5 uid: "80085xxxx", // uid 可和 app_id 一样 valid_time: "300", // 订单有效期 version: "2.0", //固定值:2.0 wx_type: "MWEB", //wx_url 非空时传 'MWEB'。wx_url 为空时,该字段不传 wx_url: mweb_url, // mweb_url 字段值 微信返回的支付链接 https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241 }; // 排序 let reStr = sortStr(orderInfo, key, false); // 获取 签名 let sign = nodMd5(reStr); orderInfo.sign = sign; // ip 不参与签名 orderInfo.risk_info = `{"ip":"${ip}"}`; return orderInfo; }
H5支付详细参考
https://www.cnblogs.com/ZeroShiro/p/13305716.html