wxpay-php

php项目基于微信支付JS SDK和JS API的接入开发

因为php框架繁多,而且项目开发进度比较赶,线上代码迁移出来的时间也有限,此处的代码没有经过备案域名和线上服务器测试,肯定会有很多问题,所以样例代码仅供参考

前言

因为抢红包风波,微信封杀了支付宝链接,不得不紧急加入微信支付。

微信支付的开发文档太坑,不才已被虐哭,趁现在还在坑里,记录一下留个纪念。

开发相关资料(排名不分先后)

注意点

微信5.0后的版本才支持微信支付

微信支付的jssdk接口只能在微信客户端里面才有效果,普通浏览器无法测试

微信支付的相关代码必须部署在线上,域名必须备案,而且域名必须跟 里相关设置里的域名一致

微信大小写非常敏感,timestamp和timeStamp以及appId和appid不要弄错,要在对的接口使用对的大小写,里面是混着用的

商户号和微信商户号要区分出来,也就是MCHID,开通微信支付后有一封邮件,里面会有相关的信息,登陆商户后台也能找到

只有服务号才能接入微信支付,不同的服务号之前可以跨号支付,订阅号里面不能调用微信支付,会报“不允许跨号支付”的错误

关于签名

我开发的时候遇到三次签名生成:

wx.config 里面有一次 signature 的签名生成,调用的是官方sdk的方法,它用的是 SHA1 加密,生成之后的签名没有转大写

获取prepay_id的时候,中间会生成一次签名,调用的是官方sdk的方法,它用的是 MD5 加密,生成之后的签名统一转成大写

wx.chooseWXPay 里面有最后一次 paySign 的签名生成,我调用了步骤2里面的那个接口,最后测试成功了

分享代码

因为目前用的项目的框架是比较奇葩的,我之前已经把官方的代码临时整合并修改成适合项目的代码,不能直接用了,后面的日子将逐步等工作闲暇的时候,整理出直接能用的来分享给还没入坑有需要的童鞋们。

代码相关

开发环境

本地相关开发环境如下:

编辑器: MacVim

php: 5.5.13,接入微信支付的相关扩展都装了,主要应该是curl扩展

nginx: 1.4.2

操作系统: Yosemite 10.0.2

创建相关文件

WxPay.pub.config.sample.php => WxPay.pub.config.php // 配置文件

access_token.sample.json => access_token.json // 临时存储access_token

jsapi_ticket.sample.json => jsapi_ticket.json // 临时存储jsapi_ticket

代码文件结构

.

├── LICENSE

├── README.md -------------------------说明文档

├── callback --------------------------回调

│   └── notifyUrl.php -----------------回调接口文件

├── conf ------------------------------配置

│   ├── WxPay.pub.config.php ----------配置文件

│   └── WxPay.pub.config.sample.php ---配置文件样本

├── index.php -------------------------主入口文件

├── lib -------------------------------类库

│   ├── CommonUtilPub.php -------------所有接口的基类

│   ├── JsSdk.php ---------------------微信支付新推出的js sdk

│   ├── Log.php -----------------------日志类库

│   ├── SDKRuntimeException.php -------异常类库

│   ├── UnifiedOrderPub.php -----------统一支付接口类

│   ├── WxpayClientPub.php ------------请求型接口的基类

│   └── WxpayServerPub.php ------------响应型接口的基类

├── log -------------------------------日志

│   ├── access_token.json -------------access_token临时存储文件

│   ├── access_token.sample.json ------access_token临时存储文件样本

│   ├── jsapi_ticket.json -------------jsapi_ticket临时存储文件

│   ├── jsapi_ticket.sample.json ------jsapi_ticket临时存储文件样本

│   └── notify_url.log ----------------回调接口日志文件

└── master.sh -------------------------git提交shell懒人脚本

4 directories, 19 files

wx_xcx_api.php,GitHub - biangbiang/wxpay-php: php项目基于微信支付JS SDK和JS API的接入开发...相关推荐

  1. ssm毕设项目基于微信的的高校起床协会管理61rmm(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目基于微信的的高校起床协会管理61rmm(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysq ...

  2. SSM项目————整合微信支付

    一.准备页面 1.第一个页面,购票页面 2.第二个页面,详情支付页面 3.第三个页面,支付成功跳转页面 二.准备二维码(测试一下) 三.准备微信参数.环境.HttpClient工具类.雪花算法工具类. ...

  3. python项目开发计划_开源项目 | 企业微信第三方Python SDK项目启动计划

    各位知友大家好!我是量潮科技创始人 @iGuo ,这篇文章和大家分享我们公司目前的一些技术进展和一些开源项目的规划. 在技术方面,我们目前还处在搭建平台的早期阶段:在架构完善以后,我会专门写一篇文章介 ...

  4. 基于HBuilder 开发 项目之微信支付

    @(HBuilder)[微信支付 |vue] 此项目是基于vue开发的一款移动端app,然后基于HBuilder进行打包成apk文件. 一 .用户申请微信开放平台申请移动应用 首先进入微信开放平台,如 ...

  5. node.js+uni计算机毕设项目基于微信小程序的网上购物系统(程序+小程序+LW)

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

  6. vue项目生成微信支付二维码(web端),其他二维码也可以生成

    第一步引入第三方插件: npm install –save qrcodejs2 第二步,在vue页面中引用: <template><h2>微信扫码支付</h2>&l ...

  7. node.js+uni计算机毕设项目基于微信小程序在线抽签系统(程序+小程序+LW)

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

  8. node.js+uni计算机毕设项目基于微信小程序的车位共享系统LWPPT(程序+小程序+LW)

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

  9. node.js+uni计算机毕设项目基于微信小程序点餐与结账系统LW(程序+小程序+LW)

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

  10. node.js+uni计算机毕设项目基于微信小程序的美甲预约系统(程序+小程序+LW)

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

最新文章

  1. Python学习--not语句
  2. (深入理解)matplotlib绘图原理(figure,axes,axis,canvas的区别)
  3. 【NOIP2015模拟10.22】最小代价
  4. VTK:碰撞检测用法实战
  5. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
  6. 0006-ZigZag Conversion(Z 字形变换)
  7. 前端学习(3269):js中this在类中的表现
  8. 【绪论】——声呐概述
  9. matlab根据给定3点画圆弧_圆弧齿廓面齿轮齿顶尖化研究
  10. C++中cout流的输出顺序
  11. [面试] 删除多余的数组内容
  12. Angular2快速入门-1.创建第一个app
  13. mysql外键约束_mysql 外键约束
  14. iOS测试——ios未受信任的企业级开发者怎么解决?
  15. cat3 utp是不是网线_网线UTP-CAT5、UTP-CAT5e、UTP-cat6产品简介讲解
  16. i7 9750h和i7 8750h参数对比差多少
  17. PotPlayer + VSFilter 加载双字幕视频教程
  18. html背景音乐自动播放embed,HTML中添加音乐video embed audio
  19. Office软件Android无法登录,office mobile(安卓版)无法使用
  20. 服务器维护首先查看指示灯,HP ILO2 使用详细教程[图文]

热门文章

  1. V2X消息之MAP消息解读
  2. 宽搜入门代码模板详解 HDOJ1253
  3. 混合现实开发教程unity2017
  4. 光猫恢复出厂后,逻辑ID重新注册
  5. footer的设置绝不只是设置footer:使html高、宽自适应和footer始终在网页最末尾
  6. 使用Aspose Java在word中绘制插入表格
  7. 网页第三方追踪原理——如何通过1像素的图片追踪
  8. nim game代码java_LeetCode Nim Game
  9. Android平台的音乐资源管理与播放
  10. 《回炉重造》——注解