今天和大家分享一下关于微信扫码支付的主要流程。

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版相关推荐

  1. 计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  2. 计算机毕业设计PHP扫码点餐微信小程序(源码+程序+uni+lw+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue ...

  3. 【附源码】Java计算机毕业设计扫码点餐微信小程序(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  4. (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...

    原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...

  5. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  6. PHP小程序码扫码登录网站,WeAuth微信小程序实现PC网站扫码授权登录

    目前微信扫码登录的实现有以下2种方式: 1.微信服务号扫码网页授权登录 2.微信开放平台Oauth2.0授权登录 以上2种方式少不了微信认证,都是需要交300元认证后才可以获得开发能力.所以我就想到了 ...

  7. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  8. thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现

    thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...

  9. 微信公众平台开发[5] —— 微信扫码支付介绍

    背景:因为微信占据众多的用户群,作为程序开发,自然而然也成了研究的重点.毕竟个人能力有限,很难想象设计的复杂性,多数时间接触起来,各种蒙圈,在此笔记自己的操作流程,仅做参考,欢迎指正. 一.微信扫码支 ...

最新文章

  1. js获取html代码中所有图片地址
  2. Java基础班学习笔记(8)
  3. 带有BERT模型代码的BILSTM+BERT+CRF
  4. 纳微科技完成近亿元融资,华兴医疗产业基金独家投资
  5. 比特币现金众筹应用Lighthouse正式上线
  6. 图形学大牛归国投身产业,还是个让女孩们败家的赛道
  7. 《1万小时成功定律——解构成功》
  8. Vim中数字自增、自减
  9. Flink入门看完这篇文章就够了
  10. python爬虫过程中遇到的问题_python爬虫过程中出现的问题汇总-Go语言中文社区
  11. gitd mysql_MySQL GTID (一)
  12. 数据结构之算法初涉(2)
  13. Fedora进入超级用户的方法
  14. uncode移动后端云【www.uncode.cn】--简介
  15. 序列化、模块 day21
  16. 转 web 开发字体
  17. tcp和icmp测速哪个好_ping icmp和tcp区别:
  18. UCOS操作系统——系统内部任务(六)
  19. 三极管的基础知识(下)①
  20. spacy和en安装

热门文章

  1. 手机怎么修改视频的封面?这三个方法和步骤让你实现
  2. 安装Ubuntu 20.04后要做的几件事(换源,精简,定制)
  3. 生产排程系统_生产计划排程APS系统中排产算法的探讨
  4. 区块链基本概念和名词解释
  5. 如何快速在两台电脑之间传输大文件
  6. 银行 结算 清分清算 对账
  7. 微信公众号开发之编码问题
  8. php- 秒的转换 (天 小时 分钟) (小时 分钟 )
  9. python中的列表
  10. 关于 JWT、JWS、JWE