PHP支付接口教程,详解微信支付(一)

本文涉及的产品
.cn 域名,1个 12个月
简介: 微信支付三大支付方式里面,最复杂也是坑最多的非微信支付莫属,我们从微信开始讲。常见的微信支付种类有下列四种:微信JS支付,也称公众号内支付,使用场景就是微信里面的H5商城,在微信以外的地方无法使用微信PC支付,也称扫码支付,使用场景是PC端,注意这里并不是“原生扫码支付”微信APP支付,使用场景是原生或者混合APP微信WEB支付,场景是微信外的触屏网站,这个接口一直都有,只是最近才开放出来可以让普通公司申请,这个如果有机会的话也会讲一讲从接口申请阶段开始,四种方式就各有各的坑,这里不得不感谢一下腾讯,替我们增加了很多工作量。

微信支付

三大支付方式里面,最复杂也是坑最多的非微信支付莫属,我们从微信开始讲。
常见的微信支付种类有下列四种:

  1. 微信JS支付,也称公众号内支付,使用场景就是微信里面的H5商城,在微信以外的地方无法使用
  2. 微信PC支付,也称扫码支付,使用场景是PC端,注意这里并不是“原生扫码支付”
  3. 微信APP支付,使用场景是原生或者混合APP
  4. 微信WEB支付,场景是微信外的触屏网站,这个接口一直都有,只是最近才开放出来可以让普通公司申请,这个如果有机会的话也会讲一讲

从接口申请阶段开始,四种方式就各有各的坑,这里不得不感谢一下腾讯,替我们增加了很多工作量。

微信JS支付

第一阶段:接口申请

因为是面向开发人员的教程,所以具体的申请条件、如何申请等内容并不会讲的太详细,只需要注意下面几点即可:

  1. 请领导把你的微信号设置为公众号的临时管理员
  2. 把公众号和商户平台的账号密码拿到手
  3. 微信平台需要自己去重查看APPSECRET,这个过程需要公众号管理员授权
  4. 商户平台需要自己去配置KEY,这个过程会有两条验证短信发到领导手机上

总之第一阶段最后需要把这四个数据准确的拿到手:

  1. APPID——登录公众平台查看
  2. APPSECRET——登录公众平台申请重置之后查看
  3. MCHID——商户平台的ID
  4. KEY——商户平台自己设置的KEY
查看APPID

查看APPSECRET

查看MCHID

设置KEY

第二阶段:配置

这里指的配置是配置公众平台,配置有必要详细的说一下,现在各种现成的项目和集成支付代码比比皆是,可是你就是用不起来,这个时候千万不要花时间去审查代码,是你的配置出了问题。让我们从原理上来理解一下:
业务域名、 JS接口安全域名、网页授权域名

PHP支付接口教程,详解微信支付、支付宝支付、银联支付(一)

这三个参数在同一个页面进行配置,配置方法也相同,直接填写域名即可。如果你遇到的问题是REDIRECT_URI错误,那多半就是这里出现了问题。
支付授权目录
PHP支付接口教程,详解微信支付、支付宝支付、银联支付(一)

这里一定要填写实际发起支付的页面的URL,并且以斜杠结尾。那么就有三个问题:

1. 我完全没搞懂实际发起支付的是哪个URL
2. 我并不清楚什么叫斜杠结尾
3. 我配置对了为什么没用
  1. 在获取OPENID的过程中会有一次重定向,一般是重定向回本页面,但也有部分项目不会这么做,比如ecshop,就被重定向到了别的页面,所以实际发起页面也就变成了别的页面。
  2. 斜杠结尾就是把你的URL从右边开始数,碰到第一个斜杠,把你数过的部分删掉,剩下的就是正确的配置内容。当然还有广大ThinkPHP3.2用户,你们的参数用斜杠来传,就意味着你们在支付页面只能带一个参数,否则怎么配置都不会对的。
  3. 有可能你压根没配置对,请参考前两条。如果你确定配置对了,请去喝一杯咖啡,这个配置有时候不会马上生效。

第三阶段:调试

倒一杯咖啡,打开你心爱的代码编辑器,按照这6个步骤来,不要浮躁,你将会再次感谢腾讯……
把你在第一阶段准备的参数放到项目中(运气好的话此时你已经完成了开发)

  1. 测试CODE有没有获取到
  2. 测试OPENID有没有获取到
  3. 测试预支付订单是否正常
  4. 测试JS是否正常
  5. 测试回调数据是否正常

把踩过的坑或者套路与大家分享一下:

在官方DEMO中,JsApiPay类下面GetOpenid方法中第4行,
$_SERVER['PHP_SELF']
和
$_SERVER['QUERY_STRING']
之间少了一个问号。导致的问题就是有一些用GET传参的同学,OPENID死活获取不到。
订单名称里面不能含有&,暂时只发现这个符号会使得支付发起失败
签名错误,一般是再去检查参数,特别是一些看不到的字符可能混在参数中,最好不要怀疑签名方法有问题。
流程中有4个左右的地方会签名,或者验证签名,一定要确保所使用的KEY都是正确的。
在调试JS的时候用
alert(res.err_code+res.err_desc+res.err_msg)
把错误弹出来
测试回调的时候用
$GLOBALS['HTTP_RAW_POST_DATA']
来接收微信的通知,做好是接收到就存到数据库里,先确保接收到了,再去调签名和业务逻辑。

写在最后

操作类的内容和理论类的内容是分开的,例如本文就是操作类的,今后将会有探讨JS支付原理或者公私钥原理的文章,但不是现在,因为不想开留太多坑。
在文章节奏的把控上略显得有些不足,不过我会尽量不出现大篇幅代码,多分享经验干货,多以初学者的角度行文。如果有问题欢迎留言讨论,希望能对大家有帮助!



以上内容属于作者原创,特此声明,如需转载,请取得同意

目录
相关文章
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
74 6
|
2天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
1月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
2月前
|
PHP Windows
thinkPhP6.0安装教程图解--PHP框架安装
本文是一篇关于ThinkPHP 6.0安装教程的图解,包括环境检查、安装Composer、修改Composer镜像地址、安装ThinkPHP框架以及启动运行ThinkPHP的步骤。文章详细描述了每个步骤的操作方法,并提供了相应的命令和截图,帮助用户理解并顺利完成ThinkPHP 6.0的安装和运行。
thinkPhP6.0安装教程图解--PHP框架安装
|
29天前
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
34 0
|
2月前
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
|
3月前
|
小程序 编译器 数据安全/隐私保护
小白保姆级教程:微信公众号开发,从0到1
【8月更文挑战第8天】小白保姆级教程:微信公众号开发,从0到1
192 3
小白保姆级教程:微信公众号开发,从0到1
|
3月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
38 2
|
3月前
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。
|
3月前
|
网络协议 API PHP
PhalApi:在宝塔一键安装部署PHP开源接口框架的教程
要在宝塔面板上一键安装部署PhalApi开源接口框架,首先进入宝塔软件商店,切换到“一键部署”选项,搜索“phalapi”并点击“一键部署”。安装时需填写接口域名、数据库名及密码,提交后等待安装完成。安装成功后可在宝塔面板中查看新站点和源代码目录,并通过DNS解析设置访问接口域名,如`http://myapi.phalapi.net/`。默认开启的调试模式便于测试,可通过修改`config/sys.php`中的`debug`值为`false`关闭。最后,在源代码中开发自己的PHP接口,PhalApi会自动生成在线接口文档,方便后续调用与维护。更多详细教程可参考官方文档。