之前有个项目要做微信支付功能,开发过程硬是踩了不少坑,现在将其记录下来方便自己查询也方便在微信支付开发中遇到问题的童鞋参考。

首先是到微信文档那里下载api,还有商家配置、生成订单这些我就不说了。下面直接说微信支付。
微信支付先是要统一下单,先贴码

//构建微信统一订单function construct_wxorder($attach, $fee, $power){global $smarty, $config, $db, $index_url, $site_config, $wap_url, $host_url, $admin_url;ini_set('date.timezone', 'Asia/Shanghai');require_once(ROOT_PATH . "WxpayAPI/lib/WxPay.Api.php");require_once(ROOT_PATH . "WxpayAPI/example/WxPay.JsApiPay.php");require_once(ROOT_PATH . "WxpayAPI/example/log.php");require_once(ROOT_PATH . "WxpayAPI/example/WxPay.NativePay.php");$notify = new NativePay();$notify->GetPrePayUrl("123456789");//②、统一下单$input = new WxPayUnifiedOrder();$input->SetBody('支付页面');//支付页面标题$input->SetAttach($attach);$out_trade_no = WxPayConfig::MCHID . date("YmdHis");$input->SetOut_trade_no($out_trade_no);$input->SetTotal_fee($fee * 100);$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis", time() + 600));$input->SetGoods_tag("test");$input->SetNotify_url("回调函数url");//回调函数$input->SetTrade_type("NATIVE");$input->SetProduct_id($power);//goods_id$result = $notify->GetPayUrl($input);return $result["code_url"];}

下面是调用统一下单函数获得二维码:


//微信支付统一下单$attach_info = array();$attach_info['user_id'] = $_SESSION['user_id'];//用户id$attach_info['power'] = $_GET['goodid'];//商品id$attach_info['payid'] = $_GET['payid'];//订单号$attach_info['orderid'] = $_GET['orderid'];//订单号$attach_info['fee'] = substr_replace($_GET['payNum'],"",0,3);//费用$wxorder_attachinfo_json = json_encode($attach_info);$code_url = construct_wxorder($wxorder_attachinfo_json, $attach_info['fee'], $attach_info['power']);//二维码URL

这段代码就是统一下单的代码,其中$attach_info这个数组内容是自己定义的,是发生支付的时候发送给回调函数的。而最后两句代码就是生成二维码,这个生成的二维码url是不能直接用的,大家可以到草料二维码是一下这个二维码是否有效先。至于转化二维码是有几种方式可以转化的,我用的是jq的一个插件转的,这里就不详说了。

好了下面就是回调函数(也就是扫码后执行的函数):

require_once(ROOT_PATH . "WxpayAPI/lib/WxPay.Api.php");
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];//接收数据
$return_data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);//转化格式$return_code = $return_data->return_code; //返回通讯标识(SUCCESS/FAIL)
$result_code = $return_data->result_code; //业务标识(是否成功交易SUCCESS/FAIL)$attach = $return_data->attach;//取出数据
$attach=json_decode($attach,true);if ($return_code == "SUCCESS") {//通讯成功if ($result_code == "SUCCESS") {//这里就是写支付成功后的数据或者数据库操作}}

到这里整个支付过程已经完成,配合微信支付官方文档看会更好;新人刚开始写文章,如果有写得不好的地方请大家见谅,也欢迎大家来指正。

php开发之微信支付(扫码支付)相关推荐

  1. 微信网页扫码支付(公众号)JAVA实现

    今天我们来说说微信网页扫码支付,这个支付的步骤和微信公众号网页是差不多的,也和微信小程序的步骤是一致的,不过appid是微信公众号的,我自己收集的微信开发文档希望对大家有用: https://blog ...

  2. Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内 ...

  3. Win10环境前后端分离项目基于Vue.js+Tornado+Python3实现微信(wechat)扫码支付流程

    在生活具有广泛性.高效性.使用方便性的支付方式是扫码支付,扫码的优点在于推广成本低,上至钓鱼台国宾馆,下至发廊地摊都能用,打印出来就完事了,而相比其他支付方式,现金的找零及假钞问题,信用卡的办理门槛. ...

  4. 微信支付宝扫码支付聚合系统

    一.简介 微信支付宝扫码支付聚合系统,聚合了微信支付和支付宝的所有扫码支付模式.并支持微信支付服务商子商户模式.支持五种扫码技术. 二.主要功能 1. 微信扫码支付:包括扫码支付模式一.扫码支付模式二 ...

  5. Java 微信native扫码支付 亲测有用

    最近在网上总结了spring cloud 微信扫码支付的流程, 本人是刚入行的小白,有不对的地方请大家指出 也欢迎大家来多多交流 我的商户APPID和秘钥的一些配置信息,是公司的 这些需要微信的商户认 ...

  6. Java之微信支付(扫码支付模式二)案例实战

    摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...

  7. 关于微信PC扫码支付

    关于微信PC扫码支付 扫码支付 有两种模式 官网有说  这里采用简单明白的模式2 前期准备  1 需要公众号 开通了微信支付权限 2 需要微信支付商户平台账号 服务器生成订单号 发送请求 https: ...

  8. 【开发技巧】-- 一篇女朋友也能看懂的Spring整合第三方支付(微信支付-扫码支付实现篇)

    1.1 为什么要在项目中使用微信支付? 众所周知,支付宝与财付通(微信支付)是如今第三方支付的两大领头企业,同是微信是一个拥有大量用户群体的一个软件,在项目中整合微信支付在一定程度上可以方便用户购物支 ...

  9. 微信「扫码支付」被诉侵犯专利权;苹果回应“iOS 13 频繁提醒 App 定位”;Python 2 退休 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  10. 微信支付宝扫码支付简介

    微信平台 支付模式 付款码支付 Native支付 JSAPI支付 APP支付 H5支付 小程序支付 各种模式的定义可以查看微信官方文档 这里应用Native支付,它是商户系统按微信支付协议生成支付二维 ...

最新文章

  1. Java .net 心得_关于Java和.Net的一些感想
  2. 精度 vs 效率:模型越小,精度就一定越低吗?
  3. Cannot connect to the Docker daemon. Is the docker daemon running on this host?
  4. 10个重要的Linux ps命令实战
  5. python第三方库文件传输_python3 post方式上传文件。
  6. 领域应用 | 小米在知识表示学习的探索与实践
  7. python循环经典例题_python练习题:循环打印嵌套列表
  8. c语言中time 0 返回值,clock()返回值为什么是0
  9. 蓝桥杯 基础练习 数的读法
  10. softmax分类算法原理(用python实现)
  11. 利用函数求任意两个数之间的和
  12. 武汉大学计算机学院毕业选题,《计算机毕业论文写作指导》
  13. PHP5.2\5.3 Xdebug 调试器配置及应用
  14. inttypes.h源码,VS编译需要
  15. 基于交比不变性的太阳定位算法的研究
  16. flac格式歌曲如何转换成mp3格式,flac转mp3详细图文教程
  17. ubuntu 下应用 Python 和 SL4A 的 Android 应用程序搭建您自己的android研发环境
  18. 数据集制作之xml文件转化为csv
  19. jdk9 jdk10 jdk11启动rocketMQ的问题
  20. 7000词汇这么背我比较可以接受,连续看20天足以

热门文章

  1. vue中velocity
  2. 亚马逊kyc审核要多久?万顿思电商
  3. 详解基于图卷积的半监督学习
  4. mysql查询between_MySQL查询数据过滤之BETWEEN操作符简介
  5. XXE知识总结,有这篇就够了!
  6. VINS-Mono(二)——优化问题建模
  7. vue2文件流下载成功后的压缩包打不开
  8. Java之Fraction
  9. Pr——保存裁剪过后的视频(去除黑边)
  10. 2021年中国家庭教育白皮书【附下载链接】