关于今日头条小程序(字节跳动小程序)相关问题(代码片段)

zdzdbk zdzdbk     2022-12-16     153

关键词:

上周突然遇到让开发今日头条小程序(字节跳动小程序)的需求,然后看了下文档发现真的简陋。而且文档有错别字。槽点有点多。但是和老版本的小程序相差不多,然后我就抱着试一试的心态,真的是试一试把微信小程序换了个id,然后打包上传,发现竟然跑的通!跑的通!跑的通!再说一次跑的通。当时我的内心是崩溃的,说好的tt.标签那,这样照搬真的好吗,好歹稍微改下啊。

先说下遇到的提审不通过的几个原因:

  1、在部分页面有微信分享或者微信二维码等和微信有关的东西(因为是直接把微信小程序扔过去的所有清楚有点麻烦)

  2、要求页面不能有空白,没东西最少要有文字提示,这个算是一开始没想到的用户体验性

  3、视频要求能够下拉页面跳过的时候自动暂停或者悬浮窗显示(因为文档不详细,网上资料很少,社区资料 也没有,特别吐槽,社区的官方人员回应速度慢,基本都是扔个文档链接或者示例,感觉对开发者很不友好,特别是在文档不是太清晰的问题)

遇到的坑,主要在支付这边,其他地方有问题的可以参考微信小程序,文档基本通用。头条因为没有自己的支付渠道,所以使用的是支付宝,利用tt.requestPayment()调起支付宝APP支付:

支付具体流程为:后端通过openid和自己这边的订单号生成一个头条的订单号,具体操作可以看文档流程,然后生成调用支付宝的一个字符串,这里需要使用支付宝文档,我使用的支付宝SDK,这边支付宝文档很好的,网上资料很多。最后就是组装后返回给前端调用支付宝。特别注意的是这里使用的所有appid等参数都是头条分配给商户的appid等。

  1、签名,在官方文档中,支付接入文档中,有签名说明和签名不通过说明,这里有个坑就是,签名说明是下单的签名的说明,签名不通过说明与示例是前端调用支付宝APP的签名。

  我的代码,这里为了方便展示,用的拼接:

$biz_content = array(

            ‘out_order_no‘ => $ordersn,

            ‘uid‘ => $openid,

            ‘merchant_id‘ => $ttshcode[$appid],

            ‘total_amount‘ =>$order[‘orderAmount‘] ? $order[‘orderAmount‘] * 100 : 0,

            ‘currency‘ => ‘CNY‘,

            ‘subject‘ => $order[‘goodsName‘] ? $order[‘goodsName‘] :‘名称‘ ,

            ‘body‘ => $ordersn.‘,‘.$order[‘orderAmount‘],

            ‘trade_time‘ => $time,

            ‘valid_time‘ => ‘60‘,

            ‘notify_url‘ => ‘http://www.******.com‘,

            ‘risk_info‘ => ‘127.0.0.1‘,

        );


        $biz_content = json_encode($biz_content);

        $data[‘app_id‘] = $ttapppay[$appid];

        $data[‘biz_content‘] = $biz_content;

        $data[‘charset‘] = ‘utf-8‘;

        $data[‘method‘] = ‘tp.trade.create‘;

        $data[‘sign_type‘] = ‘MD5‘;

        $data[‘timestamp‘] = $time;

        $data[‘version‘] = ‘1.0‘;

        ksort($data);

        $var = ‘‘;

        foreach($data as $key => $value)

            $var .= $key.‘=‘.$value.‘&‘;

        
        $var = trim($var,‘&‘);


        $c = $var.$secret;

        $data[‘sign‘] = MD5($c);
  
        ksort($data);

        $vars = ‘‘;
        $vars = ‘app_id=‘.$data[‘app_id‘].‘&biz_content=‘.$data[‘biz_content‘].‘&charset=‘.$data[‘charset‘].‘&method=‘.$data[‘method‘].‘&sign=‘.$data[‘sign‘].‘&sign_type=‘.$data[‘sign_type‘].‘&timestamp=‘.$data[‘timestamp‘].‘&version=‘.$data[‘version‘];
        $url = ‘https://tp-pay.snssdk.com/gateway‘;
     //进行post请求

2.支付宝这边支付的字符串参考支付宝文档生成

3.前端调用支付宝app,这边示例有个坑就是在支付宝字符串外面有一个花括号,这里有就提示签名错误,

代码示例:

     $goodsName = $order[‘goodsName‘] ? $order[‘goodsName‘] :‘名称‘;
        $urls = $this->alipay_get($goodsName,$datas[‘response‘][‘trade_no‘] , $order[‘orderAmount‘]); //这里是我写了个方法调用支付宝SDK的签名函数

        $list[‘app_id‘] = $ttapppay[$appid]; // test
        $list[‘method‘] = ‘tp.trade.confirm‘;
        $list[‘sign_type‘] = MD5;
        $list["uid"]=$openid;
        $list["total_amount"]=$order[‘orderAmount‘] ? $order[‘orderAmount‘]*100 : 0;
        $list[‘timestamp‘] = time();
        $list[‘pay_channel‘] = "ALIPAY_NO_SIGN";
        $list["pay_type"] = "ALIPAY_APP";
        $list["trade_no"]= $datas[‘response‘][‘trade_no‘];
        $list["merchant_id"]= $ttshcode[$appid];
        $list["risk_info"]= $this->input->ip_address();
        $list["uid"]=$openid;
        $arrParam=array("url" =>  $urls);
        $strParam=json_encode($arrParam);
        $list["params"]=$strParam;
        $list[‘url‘] =$urls;
        $signKeys=array("app_id","sign_type","timestamp","trade_no","merchant_id","uid","total_amount","params");
        $signData=array();
        foreach ($signKeys as $v) 
            $signData[$v] = $list[$v];
        

        ksort($signData);
        $var = ‘‘;
        foreach($signData as $key => $value)
            $var .= $key.‘=‘.$value.‘&‘;
        
        $var = trim($var,‘&‘);
        $list[‘sign‘] = MD5($var . $secret);
$datas[‘response‘][‘trade_no‘]为生成的单号。
4.前端代码:
var obj = JSON.parse(res.data.data);//

                tt.requestPayment(
                    data: 
                        app_id: obj.app_id,
                        method: ‘tp.trade.confirm‘,
                        sign: obj.sign,
                        sign_type: ‘MD5‘,
                        timestamp: obj.timestamp.toString(),
                        trade_no: obj.trade_no,
                        merchant_id: obj.merchant_id,
                        uid: obj.uid,
                        total_amount: obj.total_amount,
                        pay_channel: ‘ALIPAY_NO_SIGN‘,
                        pay_type: ‘ALIPAY_APP‘,
                        risk_info: "‘ip‘:‘"+obj.risk_info+"‘",
                        params: JSON.stringify(
                                url:obj.url
                           ),
                        return_url: ‘https://***********/‘,
                        show_url: ‘https://*********/‘,
                    ,
                    success (res) 
                        succ(res);
                        console.log(res);
                    ,
                    fail (res) 
                        console.log(res);
                        wx.showModal(
                            title: ‘支付失败‘,
                            content: ‘‘,
                            complete (res) 
                                return tt.navigateTo(
                                    url: ‘/pages/user/orders/orders‘
                                );
                            
                        );
                        fail(res);
                    
                )

我这边后端返回的是json格式,前端转换为对象。

字节跳动(今日头条)的题目真的难吗?

...每天都努力精进,并努力分享的主儿。今天给聊得话题是关于字节跳动笔试题难度的。在各种交流群了,总是能看到大家在说字节跳动的题目好难呀,4个编程题没有一个题AC。天天觉得大家好难呀,所以找了一些==字节跳动==关... 查看详情

字节跳动(今日头条)的题目真的难吗?

...每天都努力精进,并努力分享的主儿。今天给聊得话题是关于字节跳动笔试题难度的。在各种交流群了,总是能看到大家在说字节跳动的题目好难呀,4个编程题没有一个题AC。天天觉得大家好难呀,所以找了一些==字节跳动==关... 查看详情

微信小程序-今日头条案例

github地址:  https://github.com/HowName/toutiao项目为仿今日头条,使用了百度ApiStore接口查询数据,使用微信组件/api有封装请求方法,底部tab,启动页动画,loading,scroll-view,swiper,列表页支持上下拉加载更多效果图: 启动欢迎页,几行代... 查看详情

今日头条marketingapi小工具(.netcore版本)(代码片段)

...做一些广告投放的定制化开发。然后看现在网上也没多少关于头条MarketingAPI的文章,于是便就有了该篇文章。  头条MarketingAPI主页地址:https://ad.toutiao.com/openapi/index.html。  头条MarketingAPI开发文档:https://ad.toutiao.com/opena 查看详情

锤子科技"临死前"被"接盘",内部人士爆料已改签今日头条母公司

...在昨天已经接到了相关的临时通知,要求改签劳动合同至今日头条的母公司——字节跳动。至于这是锤子科技真正再度复活还是借尸还魂都不重要,重要的是,作为忠实的锤粉者们,悬着的心终于要落地了。image早有征兆而根据... 查看详情

微慕wordpress小程序增强版

...年9月12日,支付宝小程序正式上线2018年11月17日,今日头条发布节跳动小程序 查看详情

java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知

...,在入职字节跳动的面试流程,当然要先酸一下今日头条的粉丝。基本信息公司:字节跳动地点:北京工作经验:3年岗位:大数据事业部面试次数& 查看详情

java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知

...,在入职字节跳动的面试流程,当然要先酸一下今日头条的粉丝。基本信息公司:字节跳动地点:北京工作经验:3年岗位:大数据事业部面试次数& 查看详情

今日头条seo研究,值得深思的5个问题

在做SEO的过程中,实际上,我并不是“技术挂”更多的是基于搜索原理与大量的实战,总结相关的经验,这么多年,经常养成一个小习惯,总是记录一些工作中遇到的一些小问题与小技巧。特别是2017年,12月份开始跟踪熊... 查看详情

关于微信小程序自定义交易组件升级处理的相关问题,及解决思路(代码片段)

系列文章目录微信自定义交易组件开发步骤(视频号加小程序实现直播带货)你进来看不懂算我输!文章目录系列文章目录前言🍊一、本次升级更新内容🔍二、本次升级更新途中遇到的问题记录🔍三、本次升级相关的功... 查看详情

微信小程序使用iconfont彩色图标(mini-program-iconfont-cli)(代码片段)

...多色彩。0支持平台微信小程序支付宝小程序百度小程序头条小程序(字节跳动)快手小程序QQ小程序1安装插件npminstallmini-program-iconfont-cli-D2生成配置文件npxiconfont-init会在根目录生成iconfont.json文件: 查看详情

小程序大小(15 兆字节)太重而无法加载?

】小程序大小(15兆字节)太重而无法加载?【英文标题】:Appletsize(15megabytes)tooheavytoload?【发布时间】:2011-10-1921:57:15【问题描述】:我想知道15mega是不是很重的小程序要加载?我的主要问题是两个声音文件(.Au),其重量约为9... 查看详情

h5跨平台能力调研

...ndroidAPP、微信小程序、支付宝小程序、百度智能小程序、今日头条小程序等)对H5页面的支持是通过提供<web-view/>组件的方式。<web-view/>组件是一个可以用来承载H5网页的组件,会自动铺满整个小程序页面。各平台能力比... 查看详情

wx2tt微信小程序转头条小程序工具(代码片段)

wx2tt微信小程序转头条小程序工具安装npmiwx2tt-g使用方法wx2tt<path/to/wxapp><path/to/ttapp>[--watch][--minify][--minify-wxss][--minify-js][--minify-wxml]参数说明path/to/wxapp表示微信小程序目录path/to/ttapp表示头条小程序目录--watch表示监听模式... 查看详情

红色小恐龙团队--冲刺day3(代码片段)

...优化视图效果,将购物车和支付界面完成好刘颖洁:设计关于我们的界面设计,并进行相应的优化,并解决连接中卡退的问题赵沛凝:继续研究服务器,并实现摄像头功能与程序的连接。胡泊:完成研究根据字符串长度跳到不同... 查看详情

[新浪]今日头条被高估了吗?

今日头条被高估了吗?   欢迎关注“创事记”的微信订阅号:sinachuangshiji  文/华生  来源:砺石商业评论(ID:libusiness)  砺石导言  对于今日头条这样一家缺乏核心竞争力,并且始终头顶较大法律与道德风险... 查看详情

默认今日小部件中的布局约束冲突

...述】:我在刚刚为我的应用程序创建的TodayWidget中观察到关于Autolayout的非常奇怪的行为。试图找到问题的根源,我最终创建了一个普通的新Xcode项目(单视图应用程序)并添加了一个TodayExtension作为新目标-甚至没有触及 查看详情

python3-三天学会微信小程序(python后端研习)(代码片段)

...age3.3样式3.3.14.flex布局5.实战二、day02微信小程序内容回顾今日概要今日内容1.跳转1.1标签绑定点击事件1.2页面跳转1.3通过标签跳转2.数据绑定2.1基本显示2.2数据更新3.获取用户信息方式一方式二4.获取用户的位置信息5.for指令6.获取... 查看详情