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() ...
随机推荐
- BootstrapValidator超详细教程
一.引入必要文件 下载地址:(https://github.com/nghuuphuoc/bootstrapvalidator/archive/v0.4.5.zip) <link rel=&qu ...
- MongoDB 投影
mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.例如一个文档有5个字段,只需要显示其中3个 find() 方法 在MongoDB中,当执行find()方法,那么它会显示一个文 ...
- 几个 h5页面效果和 自动 app 生成网站 微页
用MAKA.易企秀.兔展就够了,MAKA和兔展用户体验好些,易企秀广告有点丑,不过模板多一些. 至于交互类工具,iH5.Mugeda.Epub360这三个里面选一个就行. -------------- ...
- js解决千分符问题[收藏下]
//js数字千分符处理 function commafy(num) { num = num + ""; var re = /(-?\d+)(\d{3})/ while (re.te ...
- 重温C语言(1)----计算算术表达式的值
<C程序设计语言>练习题 5-10 编写程序 expr,计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令 expr 2 3 4 + * 计算表达式 ...
- android studio 3.0 以上 查看sharedpreference
android studio 3.0 以上 查看sharedpreference 点击android studio 右侧的device file explore,找到data / data 目录: 找 ...
- seacms 6.45 命令执行漏洞分析
前言 这是一个比较老的漏洞了,不过漏洞原理还是挺有意思的. 正文 漏洞位于 search.php 文件中. 首先包含了 common.php, 这个文件里面做了一些初始化工作,其中最重要的是对提交参数 ...
- 【转】使用expect实现shell自动交互
原文地址:http://www.nginx.cn/1934.html shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd.scp 对自动部署免去用 ...
- 从零开始——Java异常处理机制
在编程的时候,总是出现需要throws的情况,然后需要在SQLException和Exception中进行选择,看着名字,总有一种错觉,认为SQLException是Exception的一个子类,因此 ...
- 图书管理系统 基于form组件
models: from django.db import models # Create your models here. class Book(models.Model): name = mod ...