当前位置: 首页 > news >正文

php实现抖音小程序支付

 

开发者发起下单_小程序_抖音开放平台

第一步、抖音小程序发起支付

tt.pay_小程序_抖音开放平台

前端提交订单数据到后端接口,然后使用 tt.pay发起支付

请求参数

属性

类型

必填

说明

order_id

string

担保交易服务端订单号

order_token

string

担保交易订单号 token

methods: {requestPayment() {tt.showLoading();getDeviceId().then(deviceId => {tt.request({url: 'https://xxx.comm',method: 'POST',header: {'Content-Type': 'application/json','token': '75dda91d-cb3d-4126-8f63-decee26e9ada'},data: {amount: 1,device_id: deviceId ,sid: 8 ,uid: 1572 ,pricebuy: 1 ,lx: 2 ,priced: 1 ,sum: 1 ,buytype: '抖音' ,},success: (res) => {console.log('orderInfo是:', res.data.data);console.log('order_id:', res.data.data.order_id);console.log('order_id:', res.data.data.order_token);tt.pay({orderInfo: {order_id: res.data.data.order_id,order_token:res.data.data.order_token},service: 5,success(res) {if (res.code == 0) {// 支付成功处理逻辑,只有res.code=0时,才表示支付成功// 但是最终状态要以商户后端结果为准}},fail(res) {// 调起收银台失败处理逻辑},});tt.hideLoading();}});});}}

第二步、后端请求抖音预支付接口

1.使用预下单接口

//amount金额  subject标题 body详情  out_trade_no订单号  notify_url回调地址
public function pay($amount,$subject,$body,$out_trade_no,$notify_url){$site=config('site');if($amount<=0){$this->error(__('金额不对'));}$amount=$amount*100;$url = 'https://developer.toutiao.com/api/apps/ecpay/v1/create_order';$data = ["app_id" => $site['douyin']['appid'],"out_order_no" =>$out_trade_no,"total_amount" => $amount,"subject" => $subject,"body" => $body,"valid_time" => 180,"cp_extra" =>$subject,"notify_url" => $notify_url];$data['sign']= dysign($data,$site['douyin']['salt']);$res= jsonPost($url,$data);$res=json_decode($res,true);if(!is_array($res)){$this->error($res);}if($res['err_no']!=0){$this->error($res['err_tips']);}$payData=$res['data'];$this->success('订单提交成功 正在跳转支付',$payData);}

2.支付签名 

//支付签名
function sign($map,$salt) {$rList = [];foreach($map as $k =>$v) {if ($k == "other_settle_params" || $k == "app_id" || $k == "sign" || $k == "thirdparty_id")continue;$value = trim(strval($v));if (is_array($v)) {$value = arrayToStr($v);}$len = strlen($value);if ($len > 1 && substr($value, 0,1)=="\"" && substr($value, $len-1)=="\"")$value = substr($value,1, $len-1);$value = trim($value);if ($value == "" || $value == "null")continue;$rList[] = $value;}$rList[] =$salt;sort($rList, SORT_STRING);return md5(implode('&', $rList));
}

3.http请求

   function jsonPost($url, $postData, $customHeaders = []) {// 初始化curl$ch = curl_init($url);// 设置curl选项curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 注意:不推荐在生产环境中禁用SSL验证curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是直接输出curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向curl_setopt($ch, CURLOPT_POST, true); // 发送POST请求curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); // JSON格式数据// 设置HTTP头curl_setopt($ch, CURLOPT_HTTPHEADER, $customHeaders);// 执行请求$response = curl_exec($ch);// 检查是否有错误发生if (curl_errno($ch)) {$error = 'Curl error: ' . curl_error($ch);curl_close($ch); // 关闭curl资源return $error; // 返回错误信息}curl_close($ch); // 关闭curl资源// 直接返回原始响应,不进行json_decodereturn $response;}

第三步回调处理

    public function notify(){$post = file_get_contents('php://input');$post=json_decode($post,true);$token='token';//抖音后台配置的token$post['token']=$token;$sign=$this->callbackSign($post);if($sign!=$post['msg_signature']){echo "签名失败";}$return=json_encode(["err_no"=>0,"err_tips"=>'success']);echo $return;exit;}

回调签名

   public   function callbackSign(array $params) {$data = [$params['timestamp'],(string) $params['nonce'],(string) $params['msg'],(string) $params['token'],];sort($data, SORT_STRING);return hash('sha1', join('', $data));}

相关文章:

php实现抖音小程序支付

开发者发起下单_小程序_抖音开放平台 第一步、抖音小程序发起支付 tt.pay_小程序_抖音开放平台 前端提交订单数据到后端接口&#xff0c;然后使用 tt.pay发起支付 请求参数 属性 类型 必填 说明 order_id string 是 担保交易服务端订单号 order_token string 是 …...

代码审计(1):CVE-2022-4957分析及复现

0x00漏洞描述&#xff1a; ѕрееdtеѕt iѕ а vеrу liɡhtԝеiɡ&#xff48;t nеtԝоrk ѕрееd tеѕtinɡ tооl imрlеmеntеd in Jаvаѕсriрt. Thеrе iѕ а Crоѕѕ-ѕitе Sсriрtinɡ vulnеrаbilitу in librеѕроndеd ѕрееdtеѕt…...

问题:设备管理指标为完好率不低于( ),待修率不高于5%,事故率不高于1%。 #知识分享#经验分享#经验分享

问题&#xff1a;设备管理指标为完好率不低于( )&#xff0c;待修率不高于5%&#xff0c;事故率不高于1%。 A、100% B、95% C、90% D、80% 参考答案如图所示...

【Linux】(六)—— vim编辑器

vim文件编辑器 Vim&#xff08;Vi Improved&#xff09;是一个高度可配置的文本编辑器&#xff0c;最初基于UNIX下的Vi编辑器发展而来&#xff0c;广泛用于程序开发和系统管理中。vim编辑器可以只通过终端命令即可编写修改文件&#xff0c;不需要和gedit一样需要打开类似于记事…...

06016传感器原理与应用202207

06016传感器原理与应用202207 选择题&#xff08;2*11&#xff09; 1.基本的电子测量系统由四部分组成&#xff0c;即电源、信号调节、显示系统和B&#xff08;P7&#xff09; A.分档器 B.传感器 C.处理器 D.采集器 2.热电阻温度计的测量电路采用精度较高的是B&am…...

java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程

java web&#xff1a;springboot mysql开发的一套家政预约上门服务系统源码&#xff1a;家政上门服务系统的运行流程 家政上门服务系统的优势 服务质量更稳定&#xff1a;由专业的家政人员提供服务&#xff0c;经过严格的培训和筛选。 价格更透明&#xff1a;采用套餐式收费&…...

二叉树的后序遍历-力扣

二叉树的后序遍历&#xff0c;指首先遍历二叉树的左节点&#xff0c;然后遍历二叉树的右节点&#xff0c;最后遍历中间节点。按照顺序进行递归遍历即可。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *rig…...

C++基础编程100题-008 OpenJudge-1.3-06 甲流疫情死亡率

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/06/ 描述 甲流并不可怕&#xff0c;在中国&#xff0c;它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数&#xff0c;计算甲流在各省的死亡率。 输入 输入仅一行&#xff…...

计算机网络 ——网络层(IPv4地址)

计算机网络 ——网络层&#xff08;IPv4地址&#xff09; 什么是IPv4地址IP地址的分类特殊的IP地址 查看自己的IPv4地址 我们今天来看IPv4地址&#xff1a; 什么是IPv4地址 IPv4&#xff08;Internet Protocol version 4&#xff09;是第四版互联网协议&#xff0c;是第一个被…...

重写mybatisPlus自定义ID生成策略

1.项目中需要引入mybatisplus核心组件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mp.version}</version></dependency> 2.新建一个类实现IdentifierGenera…...

华为坤灵路由器配置SSH

配置SSH服务器的管理网口IP地址。 <HUAWEI> system-view [HUAWEI] sysname SSH Server [SSH Server] interface meth 0/0/0 [SSH Server-MEth0/0/0] ip address 10.248.103.194 255.255.255.0 [SSH Server-MEth0/0/0] quit 在SSH服务器端生成本地密钥对。 [SSH Server…...

盘点一个Python网络爬虫的实战问题

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 西宫南内多秋草&#xff0c;落叶满阶红不扫。 大家好&#xff0c;我是Python进阶者。 一、前言 前几天在Python最强王者交流群【&#x1f1ff; &#x…...

100道面试必会算法-32-二叉树右视图用栈实现队列

100道面试必会算法-32-二叉树右视图&用栈实现队列 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,n…...

⽀付逻辑漏洞思路⼩集合

⼀.直接的价格修改 ⼆.修改⽀付状态 三.修改购买数量 四&#xff1a;⽀付附属值修改 ➀&#xff1a;修改优惠劵⾦额 ➁&#xff1a;修改优惠劵⾦额及业务逻辑问题 ➂&#xff1a;修改积分⾦额 ➃&#xff1a;满减修改 五&#xff1a;订单替代⽀付 六&#xff1a;⽀付接…...

嵌入式学习——Linux高级编程复习(线程)——day40

1. 线程 1.1 定义 线程是一个轻量级的进程 是一个任务被创建、调度、消亡的过程 1.2 线程和进程的区别与联系 1. 线程是CPU任务调度的最小单元 2. 进程是操作系统资源分配的最小单元 3. 线程&#xff08;Thread&#xff09;是操作系统能够进行运算调度的最小单位…...

kvm管理工具-virsh

virsh 查看全部虚拟机列表停止虚拟机列表启动虚拟机强制关闭虚拟机连接虚拟机控制台查看虚拟机的详细信息查看虚拟机接口信息查看虚拟机xml文件配置删除虚拟机 KVM&#xff08;Kernel-based Virtual Machine&#xff09;是一种基于 Linux 内核的虚拟化技术&#xff0c;允许在一…...

VisionPro的应用和入门教程

第1章 关于VisionPro 1.1 康耐视的核心技术 1. 先进的视觉系统 康耐视的视觉系统结合了高性能的图像传感器、复杂的算法和强大的计算能力&#xff0c;能够实时捕捉、分析和处理高分辨率图像。其视觉系统包括固定式和手持式两种&#xff0c;适用于各种工业环境。无论是精密电…...

整数规划问题算法例子

整数规划问题算法概述 整数规划(Integer Programming, IP)问题是优化问题的一种,其中决策变量必须取整数值。整数规划问题在许多实际应用中广泛存在,如资源分配、排班、路径优化等。 0-1背包问题旅行商问题利用线性规划库求解整数规划问题的方法 以下是两个常见的整数规划…...

C#启动一个cmd.exe多次随时输入命令并获取输出

想要实现的效果&#xff0c;程序通过Process类一次启动cmd&#xff0c;后台线程每隔一定时间&#xff0c;向其输入命令&#xff0c;获得并处理输出。 一、基本操作 首先&#xff0c;通常操作的例子一抓一大把&#xff1a; 1、通过Process启动cmd执行一条/多条&#xff08;&am…...

持续总结中!2024年面试必问 20 道分布式、微服务面试题(五)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道分布式、微服务面试题&#xff08;四&#xff09;-CSDN博客 九、请解释API网关在微服务架构中的作用。 API网关是微服务架构中的一个重要组件&#xff0c;它充当所有客户端请求的单一入口点&#xff0c;然后…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...