微信扫码充值 php,微信扫码支付,php版
今天和大家分享一下关于微信扫码支付的主要流程。
1、从官网下载下来sdk后,按照说明进行商户信息的配置。
2、官网demo中,打开example文件夹中的native.php,可以看到一下两行。我们需要把这两行传入的数据记录到自己的数据表中。
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));//设置订单号
$input->SetProduct_id("123456789");//这里可以订单表的id号
3、用户使用微信支付成功后,微信会回调数据给我们。回调数据中,有几个重要返回参数
"cash_fee":"1",
"is_subscribe":"Y",//是否支付
"out_trade_no":"139762060220161101101840", //订单号:使用这个返回值与之前我们记录到数据库中的值进行比对
"result_code":"SUCCESS",
"return_code":"SUCCESS",
"total_fee":"1",//支付总金额
"trade_state":"SUCCESS",
4、判断返回的数据是否支付成功,进而变更我们的订单的支付状态
实例:
1、请求微信获取支付码并输出
//请求微信获取支付码并输出
$.post('/zhifu/weixin/example/native.php',{'order_id':order_id},function(data2){
if(data2.return_code=='SUCCESS'){
$('#wx_pay_img').attr({'src':data2.zhifu_url});
$('#wx_pay_img').show();
}else{
alert("失败:"+data2.return_msg);
}
},'json')
2、在请求微信支付时,写一些业务逻辑
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';
$servername = "localhost";
$username = "*****";
$password = "*****";
if (!$link = mysql_connect($servername, $username, $password)) {
echo 'Could not connect to mysql';
exit;
}
if (!mysql_select_db('vip_house0769', $link)) {
echo 'Could not select database';
exit;
}
$order_id = $_REQUEST['order_id'];
$sql = "SELECT * FROM v9_chongzhi_order where id={$order_id} ";//echo $sql;
$result = mysql_query($sql, $link);
$order_info = mysql_fetch_assoc($result);
$notify = new NativePay();
$input = new WxPayUnifiedOrder();
$input->SetBody("充值");
$input->SetAttach("chongzhi");
$input->SetOut_trade_no($order_info['sn']);//设置订单号
$input->SetTotal_fee($order_info['chongzhi_money']);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("chongzhi");
$input->SetNotify_url("http://www.域名.com/zhifu/weixin/example/notify.php");//支付成功后的回调地址
$input->SetTrade_type("NATIVE");
$input->SetProduct_id($order_info['id']);
$result = $notify->GetPayUrl($input);
if($result['return_code']=='SUCCESS'){
$url2 = $result["code_url"];
$result['zhifu_url'] = "http://www.域名.com/zhifu/weixin/example/qrcode.php?data=".urlencode($url2);
}
echo json_encode($result);
//echo ";
?>
3、支付成功后,回调文件中,写业务逻辑
ini_set('date.timezone','Asia/Shanghai');
error_reporting(E_ERROR);
require_once "../lib/WxPay.Api.php";
require_once '../lib/WxPay.Notify.php';
require_once 'log.php';
//初始化日志
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);
class PayNotifyCallBack extends WxPayNotify
{
//查询订单
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")
{
//在这里写业务逻辑
$servername = "localhost";
$username = "*****";
$password = "******";
if (!$link = mysql_connect($servername, $username, $password)) {
echo 'Could not connect to mysql';
exit;
}
if (!mysql_select_db('vip_house0769', $link)) {
echo 'Could not select database';
exit;
}
$order_sn = $result['out_trade_no'];
$update_order_sql = "update v9_chongzhi_order set pay_time={$result['time_end']},pay_amount={$result['total_fee']},is_pay=1 where sn='{$order_sn}' ";//echo $sql;
$update_order_result = mysql_query($update_order_sql, $link);
$order_sql = "SELECT * FROM v9_chongzhi_order where sn='{$order_sn}' ";//echo $sql;
$order_result = mysql_query($order_sql, $link);
$order_info = mysql_fetch_assoc($order_result);
$chongzhi_money = round($result['total_fee']/100,2);
$update_amount_sql = "update v9_member set amount=amount+{$chongzhi_money} where userid={$order_info['user_id']} ";//echo $sql;
$update_amount_result = mysql_query($update_amount_sql, $link);
return true;
}
return false;
}
//重写回调处理函数
public function NotifyProcess($data, &$msg)
{
Log::DEBUG("call back:" . json_encode($data));
$notfiyOutput = array();
if(!array_key_exists("transaction_id", $data)){
$msg = "输入参数不正确";
return false;
}
//查询订单,判断订单真实性
if(!$this->Queryorder($data["transaction_id"])){
$msg = "订单查询失败";
return false;
}
return true;
}
}
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(false);
最近做了支付宝支付和微信支付,对这两中支付功能有了一些认识,有需要帮助的小伙伴可以留言
微信扫码充值 php,微信扫码支付,php版相关推荐
- 计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW)
计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...
- 计算机毕业设计PHP扫码点餐微信小程序(源码+程序+uni+lw+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 【附源码】Java计算机毕业设计扫码点餐微信小程序(程序+LW+部署)
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...
原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...
- 微信生成带参数的二维码,合成海报,扫码后推送小程序?
微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...
- PHP小程序码扫码登录网站,WeAuth微信小程序实现PC网站扫码授权登录
目前微信扫码登录的实现有以下2种方式: 1.微信服务号扫码网页授权登录 2.微信开放平台Oauth2.0授权登录 以上2种方式少不了微信认证,都是需要交300元认证后才可以获得开发能力.所以我就想到了 ...
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...
- thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现
thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...
- 微信公众平台开发[5] —— 微信扫码支付介绍
背景:因为微信占据众多的用户群,作为程序开发,自然而然也成了研究的重点.毕竟个人能力有限,很难想象设计的复杂性,多数时间接触起来,各种蒙圈,在此笔记自己的操作流程,仅做参考,欢迎指正. 一.微信扫码支 ...
最新文章
- js获取html代码中所有图片地址
- Java基础班学习笔记(8)
- 带有BERT模型代码的BILSTM+BERT+CRF
- 纳微科技完成近亿元融资,华兴医疗产业基金独家投资
- 比特币现金众筹应用Lighthouse正式上线
- 图形学大牛归国投身产业,还是个让女孩们败家的赛道
- 《1万小时成功定律——解构成功》
- Vim中数字自增、自减
- Flink入门看完这篇文章就够了
- python爬虫过程中遇到的问题_python爬虫过程中出现的问题汇总-Go语言中文社区
- gitd mysql_MySQL GTID (一)
- 数据结构之算法初涉(2)
- Fedora进入超级用户的方法
- uncode移动后端云【www.uncode.cn】--简介
- 序列化、模块 day21
- 转 web 开发字体
- tcp和icmp测速哪个好_ping icmp和tcp区别:
- UCOS操作系统——系统内部任务(六)
- 三极管的基础知识(下)①
- spacy和en安装