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

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

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

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

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

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

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

PHP开发api接口,如何做才算是安全的

PHP开发api接口,如何做才算是安全的

php的api接口在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,...

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

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

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

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

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

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

curl实用请求方法函数(个人用),含支付pem校验

curl实用请求方法函数(个人用),含支付pem校验

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这...

发表评论

访客

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