快手小程序预下单

快手官方文档中只有java的demo,没有php的,只能按照文档中的流程自己写了一个demo,主要注意的是,预下单中的app_idaccess_token 参数并不是一起post过去的,而是拼接到url中
生产sign 是把所有必要签名的参数,去除值为空的参数,然后ASCII 码升序排列处理,具体参考getSign function

控制器代码
<?php
namespace app\controller\api;use app\BaseController;
use app\model\Banner;
use app\model\Video;
use think\facade\Cache;
use think\facade\Env;class Ks extends BaseController
{/*** 获取access_token* @param* @date    2022/2/22*/public function access_token(){$ks_access_token = Cache::store('redis')->get('ks_access_token');if(empty($ks_access_token)){$url = 'https://open.kuaishou.com/oauth2/access_token';$app_id = env('KS.AppID');$app_secret = env('KS.AppSecret');$data = array('app_id'=>$app_id,'app_secret'=>$app_secret,'grant_type'=>'client_credentials',);$result = curl_post($url,$data);$result = json_decode($result,true);if($result['result'] == 1){$ks_access_token = $result['access_token'];$expires_in = $result['expires_in'];Cache::store('redis')->set('ks_access_token',$ks_access_token,$expires_in);}}$data = array('access_token' => $ks_access_token);return $this->success('请求成功',$data);}/*** 预下单* @param* @date    2022/2/22*/public function create_order(){$video_id = $this->request->param('video_id/d');$open_id = $this->request->param('open_id/s');$access_token = $this->getAccessToken();$app_id = env('KS.AppID');$order_no = time();$open_id = "f19d3e538ff1eeef14bf57247a22c2c0";$notify_url = 'https://ksvideo.fanshengyun.com';$total_amount = 1;$data = array('app_id'=>$app_id, //小程序 AppID'access_token'=>$access_token, //拥有小程序支付权限的access token'out_order_no'=> $order_no, //商户系统内部订单号'open_id' =>$open_id, //快手用户在当前小程序的open_id'total_amount'=>$total_amount, //用户支付金额,单位为[分]。不允许传非整数的数值'subject' => '商品描述', //商品描述。注:1汉字=2字符。'detail' => '商品详情', //商品详情。注:1汉字=2字符。'type'=> 1233, //商品类型,不同商品类目的编号见 担保支付商品类目编号'expire_time'=>172800, //订单过期时间,单位秒,300s - 172800s'attach'=>'', //开发者自定义字段,回调原样回传.'notify_url'=>$notify_url, //通知URL必须为直接可访问的URL,不允许携带查询串。'goods_id'=>1, // 下单商品id,长度限制256个英文字符,1个汉字=2个英文字符;'goods_detail_url'=>'', // 订单详情页跳转path。长度限制500个英文字符,1个汉字=2个英文字符; 示例值:/page/index/anima);$data['sign'] = $this->getSign($data);$url = 'https://open.kuaishou.com/openapi/mp/developer/epay/create_order';$url .= '?app_id='.$app_id.'&access_token='.$access_token;unset($data['app_id']);unset($data['access_token']);$result = curl_post_json($url,$data);$data = json_decode($result,true);return $this->success('请求成功',$data);}/*** 获取access_token* @param* @date    2022/2/22*/public function getAccessToken(){$ks_access_token = Cache::store('redis')->get('ks_access_token');if(empty($ks_access_token)){$url = 'https://open.kuaishou.com/oauth2/access_token';$app_id = env('KS.AppID');$app_secret = env('KS.AppSecret');$data = array('app_id'=>$app_id,'app_secret'=>$app_secret,'grant_type'=>'client_credentials',);$result = curl_post($url,$data);$result = json_decode($result,true);if($result['result'] == 1){$ks_access_token = $result['access_token'];$expires_in = $result['expires_in'];Cache::store('redis')->set('ks_access_token',$ks_access_token,$expires_in);}}$data = array('access_token' => $ks_access_token);return $ks_access_token;}/*** 获取access_token* @param* @date    2022/2/22*/public function getSign($param){$app_secret = env('KS.AppSecret');$sign_data = [];foreach ($param as $k=>$v){if(!in_array($k,array('access_token','sign')) && !empty($v)){$sign_data[$k] = $v;}}ksort($sign_data);$sign_str = '';$i = 1;foreach ($sign_data as $k=>$v){if($i == 1){$sign_str .= $k.'='.$v;}else{$sign_str .= '&'.$k.'='.$v;}$i++;}$sign_str .= $app_secret;$sign = MD5($sign_str);return $sign;}}
env配置文件代码
[KS]
AppID = you AppID
AppSecret = you AppSecret

快手小程序预下单 tp6 demo相关推荐

  1. 快手小程序担保支付php源码封装

    抖音担保支付,虽然官方社区论坛已经有人整理分享了部分源码,但是并不全,我这边重新封装了一下,并且整合了入账,退款.查询等方法 <?php/*** 快手支付*/class KspayService ...

  2. java整合快手小程序(登陆,支付,结算,退款,手机号授权登陆)

    快手小程序官方文档 快手小程序官网地址 快手小程序后台配置回调域名 代码部分 KSUrlConstants(请求地址常量) 商品类目编号根据业务自行替换 package com.dfjs.consta ...

  3. 快手小程序、网红探店小程序、多商户版(裂变分销+商家核验+集字卡片活动+积分抵扣)

    软件架构 - 前端开源 前端 uniapp.(uView ui框架)后端 TP6.0 + VUE + SWOOLE +Redis 功能说明 1.前后端分离   2.多商户管理   3.独立商家后台   ...

  4. 一键搭建微信小程序开发环境 及demo运行(腾讯云上一键搭建node.js服务器环境,PHP,Java,.NET服务类似)

    一.首先准备下本地环境(本地就需要一个微信开发工具) 1.首先得有一个微信小程序账号,登陆微信小程序首页:mp.weixin.qq.com,点击右上角立即注册. 注册登陆后,首页填写一些小程序基本信息 ...

  5. uni-app 快手小程序如何设置跟元素样式

    首先判断是否为快手小程序 /* #ifdef MP-KUAISHOU */ 如果是快手小程序 则该部分代码块生效 /* #endif */ 使用元素选择器 + 属性选择器获取根标签 /* #ifdef ...

  6. 互联网日报 | 蚂蚁集团10月27日网上路演;快手小程序开放内测邀请;苏宁战队晋级英雄联盟S10决赛...

    今日看点 ✦ 茅台前三季度成绩单:营收672.15亿元,净利338.27亿元 ✦ 蚂蚁集团10月27日举行网上路演,董事长及管理层主要成员将参与 ✦ 拼多多联合湖南卫视推出"11.11超拼夜 ...

  7. 快手小程序常用事件绑定使用场景总结

    快手小程序常用事件使用场景说明与总结 bindtap="clickMe" 点击事件 // 实现返回上一页动作 clickMe:function(){ks.navigateBack( ...

  8. 微信小程序预览无法播放视频

    微信小程序预览无法播放视频,但是用开发工具可以播放,真机调试也可以播放,是因为勾选了"不校验合法域名.web-view(业务域名).TLS 版本以及 HTTPS 证书"吗?

  9. uni-app-微信小程序-预览报错

    遇到的问题记录: uni-app-微信小程序-预览报错 首先打开config.js 配置文件,查看host 如下图: host 在为127.0.0.1 的情况下预览失败,无法加载数据 解决办法:使用 ...

  10. 微信小程序预览 word、excel、ppt、pdf 等文件

    目录 微信小程序预览 word.excel.ppt.pdf 等文件 预览效果 前言 注意点 实现代码 微信小程序预览 word.excel.ppt.pdf 等文件 预览效果 前言 微信官方提供了相关的 ...

最新文章

  1. 传图识字有次数限制吗_5岁娃识字3000?别羡慕!过早逼娃认字,后果很严重
  2. 干货丨科普丨大牛的《深度学习》笔记,Deep Learning速成教程
  3. linux 修改图片的尺寸
  4. linux内核更新/修补程序,Ubuntu 18.04.3 LTS无需重启即可轻松修补Linux内核
  5. 面试必问!Tomcat 优化篇!
  6. 栈顶指针到底指向哪_被称为“程序员试金石”的指针真的没有那么难!不信的话你来看看
  7. VC常用数据类型使用转换详解
  8. latex插入表格心得
  9. [Java in NetBeans] Lesson 06. Custom classes
  10. Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序
  11. 天池 在线编程 圣杯咒语
  12. IDEA MySql之增删改查
  13. 分布式事务实践 解决数据一致性 分布式事务实现,模式和技术
  14. html中tab页怎么写,html如何实现tab页面切换
  15. Go 语言基础(三)——基本数据类型
  16. SAP License:关于SAP 对生产订单的月度结算
  17. 笔记本电脑处理器_华硕推出首款第11代英特尔处理器VivoBook,ZenBook笔记本电脑...
  18. 波士顿动力新机器人登场!
  19. com.mysql.jdbc.jdbc2.optional.MysqlXADataSource 找不到
  20. 管理感悟:下结论的套路

热门文章

  1. raw格式镜像文件转vmdk
  2. python_opencv_haze加雾处理
  3. FPGA 之 SOPC 系列(三)Nios II 体系结构
  4. html5 blockquote,html5 – 正确的HTML Blockquote
  5. pyTorch常用工具包
  6. mac触控板 鼠标中键_如何在Mac的触控板上添加中键
  7. html5离散数学,离散数学怎样判断合取范式和析取范式
  8. [状压DP]帮助Bubu
  9. dimens文件生成器
  10. python调用dll文件