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

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

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

此篇文章主要介绍了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

分享给朋友:

相关文章

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

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

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

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

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

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

thinkphp6资源路由解决同源策略、跨域问题。

thinkphp6资源路由解决同源策略、跨域问题。

一般开发接口资源请求服务端都会遇到跨域请求。在跨域请求的时候,明明设置的是POST请求,却请求的时候报跨域错误,检查http请求头发现不是POST请求,而是发起了OPTIONS请求。路由设置:Rout...

TP6常用的增删改查方法合集(DB类+模型类)

TP6常用的增删改查方法合集(DB类+模型类)

注意:1、注意引入DB和模型的门面类2、想要添加视图文件,一定要先composer引入view模板引擎3、下面方法来自官方手册,只是写了一些个人常用的,并非齐全。增(添加)DB类方法方法一: ...

thinkPHP实现微信支付之退款,附demo示例

thinkPHP实现微信支付之退款,附demo示例

此篇文章主要介绍了ThinkPHP6框架下整合微信支付之退款功能手册里面有的东西不多介绍,请求参数、返回结果之类的请移步官方手册查看。本文主要是通过一个demo实例进行讲解微信支付退款接口。手册地址:...

Apache自带的ab压力测试工具用法详解

Apache自带的ab压力测试工具用法详解

ab的原理ab是apache bench命令的缩写。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apach...