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

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

atao4年前 (2021-02-25)技术文章3443

此篇文章主要介绍了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://yizhanhongtu.cn/post/57.html

分享给朋友:

相关文章

什么是flex布局,它的常用属性有哪些

什么是flex布局,它的常用属性有哪些

什么是flex 布局?flex是 flexible box 的缩写,就是弹性布局的意思。任何一个元素(块元素、行内块元素、行内元素),都可以设置为弹性盒子属性。语法:块元素: display:flex...

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 //...

MySQL中,21个写SQL语句的好习惯

MySQL中,21个写SQL语句的好习惯

每一个好习惯都是一笔财富,本文分 SQL 后悔药、SQL 性能优化、SQL 规范优雅三个方向,分享写 SQL 的 21 个好习惯。1. 写完 SQL 先 explain 查看执行计划。【SQL 性能优...

Redis Desktop Manager简单介绍及配置使用

Redis Desktop Manager简单介绍及配置使用

Redis Desktop Manager 简单的来讲就是Redis可视化工具,可以让我们看到Redis中存储的内容。一、下载Redis Desktop Manager百度网盘下载地址:https:/...