ThinkPHP微信扫码支付接口
最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下
一.将有用的官方lib文件和使用的相关文件放置到vendor当中
二.调用同一支付接口
WechatController
//调用同一支付接口
public function native($v_oid='',$v_amount=''){
ini_set('date.timezone','Asia/Shanghai');
error_reporting(E_ERROR);
//添加相关的类文件
vendor('Wxpay.WxPayApi');
vendor('Wxpay.log');
vendor('Wxpay.NativePay');
//初始化日志
$logHandler= new \CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = \Log::Init($logHandler, 15);
//接受订单信息
if(trim($v_oid)<>"") //判断是否有传递订单号
{
$v_oid = trim($v_oid);
}
else
{
$this->error('订单号为空',U('User/index'));
exit;
} $v_amount = trim($v_amount*100); //支付金额 //调用同一支付接口
$notify = new \NativePay();
$input = new \WxPayUnifiedOrder();
//商品描述----------------------------需要参数传递/统一信息
$input->SetBody("商品描述位置");
//附加数据
$input->SetAttach("附加数据位置");
//商户订单号
$input->SetOut_trade_no($v_oid);
//总金额
$input->SetTotal_fee($v_amount);
//开始时间
$input->SetTime_start(date("YmdHis"));
//结束时间
$input->SetTime_expire(date("YmdHis", time() + 600));
//商品标记
$input->SetGoods_tag("商品标记位置");
//异步通知地址,不能携带任何参数
$input->SetNotify_url(U('NotifyProcess'));
//交易类型
$input->SetTrade_type("NATIVE");
//商品id
$input->SetProduct_id("123456789");
//获取同一支付接口结果
$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"]; $this->assign('data',urlencode($url2));
$this->assign('v_oid',$v_oid); $this->assign('v_amount',$v_amount/100); $this->display();}三.生成二维码
三.微信支付生成二维码
public function qrcode(){
error_reporting(E_ERROR);
vendor('Wxpay.phpqrcode.phpqrcode');
$url = $_GET["data"];
\QRcode::png($url);
} 四.异步处理
具体处理流程和方式按个人需求
//微信异步查询订单机制
public function Queryorder($transaction_id)
{
$input = new \WxPayOrderQuery();
$input->SetTransaction_id($transaction_id);
$result = \WxPayApi::orderQuery($input);
\Log::DEBUG("query:" . json_encode($result));
if(array_key_exists("return_code", $result)
&& array_key_exists("result_code", $result)
&& $result["return_code"] == "SUCCESS"
&& $result["result_code"] == "SUCCESS")
{
return true;
}
return false;
} 五.再来个form表单展示二维码
<form action="" method="post" id="myForm-table">
<h2>订单信息</h2>
<div class="orderNumber">
<p class="a">订单号:"{$v_oid}"</p>
<p class="b">
<span class="left">应付金额:<strong><em>{$v_amount}</em>元</strong></span>
<span class="right">付款后,飞行之翼客服会与您联系,如有问题请咨询24小时飞行热线 400-700-2016</span>
</p>
</div>
<h2>微信支付</h2>
<img src="{:U('qrcode')}?data={$data}" alt="微信扫码">
<div class="order-submit"><a href="javascript:history.go(-1);" class="submitOrder Order">返回其他支付方式</a></div>
</form> 成功的图就不附上了,这是我遇到的问题,由于要重构,所以比较乱,无效代码也比较多,需要整理,记录下来,分享一二
ThinkPHP微信扫码支付接口的更多相关文章
- thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5
前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...
- 如何对接payjs的个人微信扫码支付接口
在众多个人支付接口的产品中,要寻找一个稳定可靠的产品是比较难的,所幸遇到payjs,感觉逼格较高,非常满足自己的品味.推荐大家使用.下边是我在对接payjs的过程中的一些经验和技巧,分享给大家. 一. ...
- .NET MVC结构框架下的微信扫码支付模式二 API接口开发测试
直接上干货 ,我们的宗旨就是为人民服务.授人以鱼不如授人以渔.不吹毛求疵.不浮夸.不虚伪.不忽悠.一切都是为了社会共同进步,繁荣昌盛,小程序猿.大程序猿.老程序猿还是嫩程序猿,希望这个社会不要太急功近 ...
- .NET微信扫码支付模式二API接口开发测试
主要实现微信扫码支付,官网的SDKdemo 就不要使用 一直不能调试通过的,还是自己按照API接口文档一步一步来实现,吐槽下微信一点责任感都木有,能不能demo搞个正常的吗,不要坑惨了一大群码农们有点 ...
- MVC 微信扫码支付
微信扫码支付有两种模式, 模式一和模式二, 两者具体的区别可参考官网文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 微 ...
- Net MVC微信扫码支付
微信扫码支付+Asp.Net MVC 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下. 一.准备工作 使用的微信API中的统一下单方法,关键的 ...
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- php微信扫码支付
一 概述 扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信"扫一扫"完成支付的模式.该模式适用于PC网站支付.实体店单品或订单支付.媒体广告支付等场景.前几天公司需要做 ...
- Thinkphp5整合微信扫码支付开发实例
ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...
随机推荐
- sql按中文数字排序
有表4张 建表和插入数据sql DECLARE @p_Building TABLE ( id INT , BidName ) ); DECLARE @p_Room TABLE ( id INT , R ...
- Node服务端极速搭建 - nvmhome
本文意在让你掌握极速搭建Node服务端(任何Project) $ whoami name: kelvin email: kelvv@outlook.com homepage: www.kelvv.co ...
- Tinker + Bugly + Jenkins 爬坑之路
前阵子 Android 端的线上崩溃比较多,热修复被提上日程.实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发.主要在 Jenkins 打包这一块爬了不少坑,现记 ...
- Java容器之HashMap源码分析
在java的容器框架中,hashMap是最常用的容器之一,下面我们就来深入了解下它的数据结构和实现原理 先看下HashMap的继承结构图 下面针对各个实现类的特点进行下说明:1)HashMap: 它是 ...
- Value与Sql Value
在使用Value作为参数传递给SqlServer时 实际上传递的是SqlValue 为其赋值的一种方式,可以将datetime类型转换成string类型(yyyy-MM-dd HH:mm:ss)
- vue从安装到初始化项目
- Intel酷睿前世今生(二)
上一文,讲述到了酷睿构架的诞生.可以显而易见的知道,酷睿构架其实源于笔记本处理器构架.因为在当年的技术趋势中,因为提升主频而带来的负面影响如发热与高功率已经让普通消费者所不满.然而提升主频并没有提升多 ...
- C++ Primer(6) 模板和泛型编程(上)
问题聚焦: 泛型编程是独立于变量类型的方式编写代码: 模板是泛型编程的基础. 本篇主要介绍模板的基础知识,包括:模板的定义和模板的实例化. 1 模版定义 必要性: Demo int compare(c ...
- Http扫盲
https://www.kancloud.cn/kancloud/tealeaf-http/43832
- 《C++ Primer Plus》读书笔记之三—循环与关系表达式
第五章 循环与关系表达式 1.表达式是值或者值与操作符的结合,每个C++表达式都有值.表达式到语句的转换只要加一个分号就可以完成.但是,反过来,从语句中删除分号,并不一定能将它转化成表达式. 2.前缀 ...