Skip to content
biangbiangPublic

About

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

Resources

Stars

190 stars

Watchers

16 watching

Forks

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wxpay-php

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

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


前言

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

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

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

注意点

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

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

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

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

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

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

关于签名

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

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

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

  3. 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

About

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

Resources

Stars

190 stars

Watchers

16 watching

Forks

Releases

Packages

Contributors

Languages