<?php
/*** 头条小程序对接微信、支付宝支付* 服务端获取OrderInfo* tt.pay 文档地址:* https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/payment/tt-pay*/
function GetOrderInfo (){$order_id = $_POST['order_id'];//订单ID$service = $_POST['service'];//支付类型 1拉起小程序收银台,3微信 API 支付,4支付宝 API 支付$order = M('order')->where(['id'=>$order_id])->field('id,order_sn,title,money')->find();//订单信息$orderInfo = ['merchant_id' => C('BYTE_MERCHANT_ID'),//开发者后台支付设置页的商户号'app_id' => C('BYTE_APP_ID'),//开发者后台支付设置页的 app_id'sign_type' => 'MD5',//固定值:MD5。商户生成签名的算法类型'timestamp' => (string)time(),//发送请求的时间戳,精确到秒'version' => '2.0',//固定值:2.0'trade_type' => 'H5',//固定值:H5//'sign' => '',//签名,具体签名方案见 服务端签名'product_code' => 'pay',//固定值:pay'payment_type' => 'direct',//固定值:direct'out_order_no' => $order['order_sn'],//商户订单号'uid' => C('BYTE_APP_ID'),//固定值:同 app_id'total_amount' => $order['money'] * 100,//金额,整型,单位:分(不能有小数)'currency' => 'CNY',//固定值: CNY。币种'subject' => $order['title'],//商户订单名称'body' => $order['title'],//商户订单详情'trade_time' => (string)time(),//下单时间戳,精确到秒'valid_time' => '600',//订单有效时间(单位 秒)'notify_url' => 'https://tp-pay.snssdk.com/paycallback',//固定值:https://tp-pay.snssdk.com/paycallback//'alipay_url' =>'',//调用支付宝 App 支付所需的支付请求参数//'wx_url' =>'',//调用微信 H5 支付统一下单接口 返回的 mweb_url 字段值(请注意不要进行 urlencode)。//'wx_type' =>'',//wx_url 非空时传 'MWEB'。wx_url 为空时,该字段不传'risk_info' => json_encode(['ip'=>getIP()]),//支付风控参数。序列化后的 JSON 结构字符串,JSON 结构如下:{ip: '用户外网IP'}];if($service == 3){//获取微信H5支付的mweb_url(需自己对接)$wx_pay_url = get_wx_pay_url($order_id);$orderInfo['wx_url'] = $wx_pay_url;$orderInfo['wx_type'] = 'MWEB';}elseif ($service == 4){//获取支付宝App支付请求参数(需自己对接)$ali_pay_url = get_ali_pay_url($order_id);$orderInfo['alipay_url'] = $ali_pay_url;}$orderInfo['sign'] = get_tt_pay_sign($orderInfo,C('BYTE_APP_SECRET'));return $orderInfo;
}/*** @desc 服务端签名* @param array $orderInfo 签名前的支付数据* @param string $app_secret 头条支付secret* @return string 签名结果字符串*/
function get_tt_pay_sign(array $orderInfo, $app_secret){//1.去掉请求参数中 sign 与 risk_info 字段、value 为空的字段。foreach ($orderInfo as $k=>$v){if($k == 'sign' || $k == 'risk_info' || empty($v)){unset($orderInfo[$k]);}}//2.把筛选后的 k-v 集合按照 key 的 ASCII 码升序排序ksort($orderInfo);//3.k-v 按照 key=value 的格式链接,并且按照 key 排序使用 & 连接成一个字符串,生成待签名字符串$parts = [];foreach ($orderInfo as $k => $v) {$parts[] = $k . '=' . $v;}//4.待签名字符串$unsigned_str = implode('&', $parts);file_put_contents('unsigned_str.txt',$unsigned_str);//保存一下 支付自助校验时会用到//5.MD5 加签$sign = md5($unsigned_str.$app_secret);return $sign;
}

头条小程序对接微信、支付宝相关推荐

  1. springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...

  2. 小程序 - 各种小程序「微信/支付宝/百度等」 - 学习/实践

    1.应用场景 主要用于学习和快速高效开发小程序,完成需求开发. 2.学习/操作 1. 文档阅读 小程序技术演进史 -- 推荐阅读 手册: 教程 | <小程序开发指南>.// 开发者文档 推 ...

  3. 淘宝客小程序制作(4)-小程序(微信支付宝)

    服务器设置 1.注册微信 1.1 微信小程序注册流程 2.微信小程序编写代码 2.1 编写微信小程序 2.1.1 打开微信小程序工具,导入项目 2.1.2 替换url 2.1.3 微信小程序的工具文件 ...

  4. java超详细小程序对接微信支付(二),看完不会你打我

    4.支付通知回调 B-验证签名 因为这个接口是微信进行回调的,但是如果别人知道了这个接口就给进行伪造信息进行调用这个接口 补充一点,这里这个接口最后要返回给微信success 不然会一直进行调用该接口 ...

  5. 抖音、头条小程序开发与营运攻略,猛戳获取

    「头条.抖音小程序」是即微信.百度.支付宝后,上线最晚的小程序.但这两者亦是即微信之后,最具电商潜力的小程序.近来,头条与抖音小程序如何开发与营运正成品牌关切的热门话题. 本文多图预警,可依照下方目录 ...

  6. dedecms小程序插件升级到1.4.4(支持百度小程序,微信小程序,头条小程序,QQ小程序,支付宝小程序...)

    从2019年6月份开发到现在 dede织梦小程序插件已经升级到1.4.4版本,现在已经支持:微信小程序,百度小程序,头条/抖音小程序,QQ小程序,支付宝小程序. dedecms小程序插件目前主要的功能 ...

  7. 微信小程序不支持打开非业务域名_开达应用五端合一:抖音/头条小程序基础配置...

    抖音/头条小程序基础配置 小程序AppKey AppSecret获取 登录到字节跳动小程序管理平台,开发: 域名配置 登录到字节跳动小程序管理平台,进入 开发»服务器域名,点击添加自己的网站域名 登录 ...

  8. 使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5)

    使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5) 准备工作 微信支付配置 支付宝支付配置 字节跳动配置 1,微信支付配置: 开通微信支付的h5支付,关联APPID,保存k ...

  9. map和foreach的区别和应用场景_支付宝小程序和微信小程序,两者有何区别?

    原标题:支付宝小程序和微信小程序,两者有何区别? 自2017年1月微信推出小程序之后,小程序的发展势头便愈来愈猛.作为腾讯老对头的阿里,也开始投入小程序的研发.在一年多的开放公测后,支付宝小程序终于于 ...

  10. 基于uniapp开发的适用于微信小程序,头条小程序

    基于的uni-app开发的跨平台商城小程序(微信小程序,头条小程序,抖音小程序),合理的代码结构和规范的编码风格,能够让你很轻松的上手并转化成为自己的作品. 与之相支持的是,我们提供了一套完整的项目代 ...

最新文章

  1. 一份忧伤的大厂生存百科
  2. Android JNI 和 NDK
  3. 一天一小步_我学C#入门精典_第八天
  4. UITabBarController的一些基础设置
  5. Eclipse—在Eclipse中如何发布创建的JavaWeb工程
  6. python中formatter的用法_python中 logging的使用详解
  7. RS232和RS485通讯接口的区别
  8. Android开发,MapBox地图详细介绍、使用、部分功能实现(初始化、标记、定位、styleurl)
  9. 计算机英语知识竞赛题库,大学生计算机基础知识竞赛题库_大学生计算机基础知识竞赛试题附答案...
  10. PMP考试备考个人体会
  11. ios 个人苹果开发者账号申请
  12. 函数周期与对称与奇偶性与单调性
  13. 老李聊股:中油工程(第二篇)
  14. 数据可视化:使用Excel制作雷达图
  15. 网络电视html5软件,网络电视软件哪个好
  16. Kotlin Language
  17. 中国健身器材行业市场深度分析及发展规划咨询综合研究报告
  18. Python之判断语句(if语句)
  19. c语言中0xa0f对应的十进制,c语言起始
  20. 【数据库】快速导出表结构到excel中

热门文章

  1. 计算机中哪些服务是可以禁止的,win10哪些服务可以禁用?优化win10系统服务的方法...
  2. 水星无线路由器设置虚拟服务器,水星路由器无线中继设置步骤
  3. 惠普HP Color LaserJet Pro MFP M476 打印机驱动
  4. Team building | 什么?团建还能这么玩?
  5. visual studio 提高速度的选项
  6. 公众号两年,粉丝一万,收益五千。
  7. Leetcode︱448. Find All Numbers Disappeared in an Array找到所有数组中消失的数字.java
  8. 系统集成项目管理工程师(软考中级)—— 第二十二章 安全管理 笔记分享
  9. centos安装jetbrains projector(解决不能复制问题)
  10. 计算机分区硬盘有写保护,磁盘被写保护怎么办?总结几种去掉磁盘写保护的方法...