最近开发自动售货机的项目用到微信支付(Native扫码模式二),下载微信官方的SDK最新版本为3.0.9,这个版本与之前的变化也不算太多,最明显的是配置文件从Lib文件夹跑到example里面去了,找不到的朋友可以在example里找一下。由于官方SDK不带自动回调,所以也参照了网络上的众多文章,大部分都是基于旧SDK实现的,朋友们也可能都试过了,基本没有拿过来就能用的,于是在SDK的基础上简单的写了一个,分享给大家。
本实例在微信支付SDK3.0.9(20190227下载)的基础上修改,只更改了一下几个文件即可实现NATIVE扫码支付并成功跳转页面。
example/native.php 二维码显示页面,商品信息需自行更改,订单号随机生成
example/WxPay.Config.php 自行替换以下三个参数
GetAppId()//公众号APPID 通过微信支付商户资料审核后邮件发送
GetMerchantId()//微信支付商户号 PartnerID 通过微信支付商户资料审核后邮件发送
GetKey()//https://pay.weixin.qq.com 帐户设置-安全设置-API安全-API密钥-设置API密钥
example/zfcx.php 支付查询页面,返回各种支付状态
example/success.php 支付成功自动跳转页面,自己创建一个页面写上几个字就可以。
下面把native.php代码贴出来
<?php
ini_set('date.timezone','Asia/Shanghai');
//error_reporting(E_ERROR);
require_once "../lib/WxPay.Api.php";
require_once "WxPay.NativePay.php";
require_once 'log.php';//初始化日志
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);$notify = new NativePay();
//模式二
/**
* 流程:
* 1、调用统一下单,取得code_url,生成二维码
* 2、用户扫描二维码,进行支付
* 3、支付完成之后,微信服务器会通知支付成功
* 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
*/
$input = new WxPayUnifiedOrder();
$input->SetBody("1分钱");
$input->SetAttach("商品测试");
$num=uniqid();
$input->SetOut_trade_no($num);
$input->SetTotal_fee("1");
$input->SetTime_start(date