当前位置:首页 > 技术教程 > 技术文章 > 正文内容

ThinkPHP框架整合微信支付统一下单接口之Native扫码支付模式

atao3年前 (2021-02-25)技术文章2670

此篇文章主要介绍了ThinkPHP6框架下整合微信支付之Native

手册里面有的东西不多介绍,请求参数、返回结果之类的请移步官方手册查看。本文主要是通过一个demo实例进行讲解微信支付之统一下单接口。

手册地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1

微信支付统一下单接口流程介绍:

  1. 将基本请求参数和随机字符串(见下文)写入到数组

  2. 生成签名(按照字典序排序)写入数组

  3. 将数组转为xml包

  4. 提交CURL请求(POST)

  5. 微信返回数据

生成随机字符串方法和签名生成方法见下文微信支付类下载地址。

微信支付统一下单接口必填请求参数:

  1. appid 公众号ID

  2. mch_id 商户号

  3. nonce_str 随机字符串

  4. body 商品描述

  5. out_trade_no 商户订单号

  6. total_fee 标价金额(单位为分)

  7. spbill_create_ip 终端IP

  8. notify_url 通知地址

  9. trade_type 交易类型

  10. sign 签名

至于请求参数为什么和微信官方手册不一样?因为手册长时间不更新可能存在错误,用户可自行测试。

此方法一共涉及两个类文件,分别为WxPay(微信支付类)和QRcode(二维码类),下载地址见下文。

// 发起NATIVE支付实例
public function pay(){
    $order_sn = "wx202102051234"; //订单编号
    $money = "0.01"; //价格
    $title = "东北大鸭梨"; //标题
    $notify = "http://wx.yizhanhongtu.cn/index/Login/notify"; //回调地址
    // 实例化微信支付类,并传入参数
    $wx = new WxPay($notify); // 传入回调地址
    $content = $wx->prepay("",$order_sn,$money,$title,"NATIVE");
    // 生成二维码
    QRcode::png($content['code_url']);
    // 将流放到缓存区,并且base64加密
    $imageString = base64_encode(ob_get_contents());
    ob_end_clean(); // 结束流
    // 输出文件
    return $imageString;
}

// 微信支付回调结果
public function notify(){
    // 实例化支付类,并传入参数
    $wx = new WxPay("");
    $content = $wx->PayNotify(file_get_contents("php://input")); //获取到微信返回的数据
    // 继续执行业务流程修改订单状态
    $arr=['pay_sn'=>"{$content['transaction_id']}",'status'=>"20"];
    $rt = Db::table("lr_order")->where('order_sn',$content['out_trade_no'])->update($arr);
}

前台怎么显示图片:

<img src='data:image/png;base64,返回的base64图片编码' />

image.png


文章:微信支付类下载二维码类下载

扫描二维码推送至手机访问。

版权声明:本文由武景涛的博客发布,如需转载请注明出处。

本文链接:http://www.yizhanhongtu.cn/post/57.html

分享给朋友:

相关文章

file_get_contents很慢?来看看php访问url的四种方式

file_get_contents很慢?来看看php访问url的四种方式

在使用file_get_contents方式访问URL的时候,会导致速度变的很慢,据说这是file_get_contents的一个bug,本文主要介绍PHP引入url的四种方式,其中包括file_ge...

CSS度量的单位px、rem、em、vw、vh有什么区别

CSS度量的单位px、rem、em、vw、vh有什么区别

1、px绝对单位,页面按精确像素展示2、em相对长度单位,相对于当前对象内文本的字体尺寸, 根据父元素的大小变化而变化对单位,基准点为父节点字体的大小。em是指字体高度 浏览器默认1em=16px,所...

PHP获取和操作配置文件php.ini的几个函数介绍

PHP获取和操作配置文件php.ini的几个函数介绍

1.ini_get()获取配置参数,ini_set()设置配置参数<?php echo ini_get('display_errors'); //1 //...

jQuery Growl 插件(消息提醒) 弹出层插件

jQuery Growl 插件(消息提醒) 弹出层插件

jQuery Growl 插件(消息提醒) 允许您很容易地在一个覆盖层显示反馈消息。消息会在一段时间后自动消失,不需要单击"确定"按钮等。用户也可以通过移动鼠标或点击关闭按钮加快隐...

【推荐】10个提升用户体验图像特效库

【推荐】10个提升用户体验图像特效库

1.imagehover地址:https://github.com/ciar4n/imagehover.css imagehover.css- 纯CSS3鼠标滑过图片效果动画库,44种鼠标滑过效果2....

用PHP如何打造一个高可用高性能的网站

用PHP如何打造一个高可用高性能的网站

1. 说到高可用的话要提一下redis,用过的都知道redis是一个具备数据库特征的nosql,正好弥补了PHP的瓶颈,个人认为PHP的 瓶颈在于数据库,像Apache和Nginx的高级web服务器在...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。