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

简介: PC扫码支付扫码支付首先是要分清楚两种模式:【模式一】:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号)。

PC扫码支付

扫码支付首先是要分清楚两种模式:

【模式一】:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号)。

【模式二】:商户后台系统调用微信支付【统一下单API】生成预付交易,将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易。

上面是官方的说法,简单来说就是模式一多用于线下,而模式二用于线上。我们所说的扫码支付都是指模式二,它算是4种常用的微信支付方式里面最简单的了。说它简单主要体现在两个地方:

  1. 不需要像微信JS支付一样,获取网页授权,获取OPENID
  2. 不需要组装JS,只用把接口返回的code_url转成二维码然后放到页面上

第一阶段:接口申请

只要在微信公众申请了微信支付的,JS支付和扫码支付就都可以集成。如何申请不会讲的太详细,只需要注意下面几点即可:

  1. 成为公众号的临时管理员
  2. 把公众号和微信商户的账号密码都拿到手
  3. 微信商户需要自己去配置一下秘钥,这个过程会有两次短信验证

会发现,如果只是做扫码支付的话,我们并不需要用到APPSECRET。原因是使用微信扫码的这个过程会验证付款者的身份,所以统一下单时是不需要去获取OPENID的,自然也用不到公众号的接口,也就不需要SECRET。
当然这种只有PC站点的情况很少,所以建议还是把四个参数都拿其,具体的获取位置可以看之前的(一)。
PHP支付接口教程,详解微信支付(一)

第二阶段:配置

支付授权目录

img_26774cf5811c184b7136ffa6fd3dec84.jpe
PHP支付接口教程,详解微信支付(二)

关于授权目录的配置方式在上一篇中有详细描述。这里要注意的是上图里面的扫码支付回调URL,和我们所做的扫码支付并没有任何关系,如果支付出现问题,千万不要认为是这里出了错。

第三阶段:调试

  1. 把你的参数放到项目中并确保他们正确
  2. 测试统一下单接口能否正常获取到预支付订单
  3. 测试支付回调数据是否正常,这里有个小技巧,就是可以直接把code_url发送到你的微信打开,同样是可以完成支付的
  4. 找一个稳定的二维码生成库(例如phpqrcode),把code_url转化成二维码

到这里基本支付就可以验收了,但是体验不太好,和支付宝的扫码相比,微信扫码支付要把二维码放到我们自己的页面上,这就需要我们自己设计一个放二维码的地方。
还有微信扫码支付并不存在前台回调页面一说(其他支付方式都有),意思也就是你扫码支付明明成功了,可是如果不处理的话支付页面将不会有任何反应。给大家两个建议:

  1. 放一个支付成功的按钮到页面上让用户自己确认已付款成功,你只需要在下一个页面验证是否真的付款成功。听起来有点蠢,可是这种方式曾经也被很多大网站使用过。
  2. 在支付页写一个AJAX用轮询的方式不断的向后台询问订单支付的情况,如果返回成功则跳像成功页面。这样会让用户觉得PC和手机似乎是同步的,体验比较好。

写在最后

作为比较简单的支付方式,扫码支付集成起来不会有太多困难,更多的是对于支付页面的处理。
这里需要提一下我们最终的目的,写一个通用的支付类,让支付接口开发变得轻松愉快。目前为止,我们在微信支付上已经遇到了两种不同返回情况:

  1. 通过支付类得到一个按钮,按钮触发微信JSSDK
  2. 通过支付类得到一张二维码图片和一个轮寻页面的JS

第二种情况,即便是把轮寻的JS也封装到支付类中,还是需要自己写一个被轮询的页面,这似乎不是一个很好的设计,因为这样一来,支付发起的流程和页面逻辑之间将产生很强的耦合。具体的解决办法,将在分析完所有的常用支付方式之后再讨论。

希望能对大家有帮助!


img_d65f73ad3413b07da6af693cee5650d4.jpe
PHP支付接口教程,详解微信支付(二)

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

目录
相关文章
|
4月前
|
应用服务中间件 PHP nginx
|
7月前
|
安全 Java PHP
PHP/JAVA交易所系统开发(成熟案例)丨需求步骤丨指南详细丨方案逻辑丨逻辑教程丨源码功能
An exchange refers to an institution or platform that provides a centralized market for buying and selling transactions, where participants can trade various assets, such as securities, commodities, cryptocurrencies, etc. Exchanges provide market infrastructure and rules to facilitate compliant, saf
|
7月前
|
关系型数据库 MySQL Linux
百度搜索:蓝易云【Centos8 stream系统编译安装PHP教程。】
以上是在CentOS 8 Stream系统上编译安装PHP的基本教程。请注意,具体的配置和参数可能因您的需求而有所不同,您可以根据自己的情况进行调整。同时,请确保在执行任何操作之前备份重要的文件和配置。
224 0
|
4月前
|
存储 JavaScript 前端开发
百度搜索:蓝易云【php设置和获取Cookie教程。】
需要注意的是,为了确保在向浏览器发送任何输出之前设置Cookie,应该在 `<html>`标签之前或PHP脚本的顶部设置Cookie。
73 0
|
4月前
|
应用服务中间件 Linux PHP
百度搜索:蓝易云【在centos中配置nginx+php的环境教程。】
请注意,上述步骤是基本的配置指南,实际操作中可能会有特定的需求和配置。建议参考Nginx和PHP官方文档或其他详细教程以获得更全面和准确的信息。
43 0
|
7月前
|
Ubuntu PHP Apache
百度搜索:蓝易云【Ubuntu 18.04系统编译安装PHP教程。】
现在,您已经成功地在Ubuntu 18.04上编译和安装了PHP 7.4,并将其与Apache集成。请注意,这只是基本的安装过程,您可能需要根据自己的需求进一步配置和调整PHP。确保在实际操作中根据您的需求进行适当的配置和保护。
203 0
|
7月前
|
Ubuntu 应用服务中间件 PHP
百度搜索:蓝易云【Ubuntu 20.04系统编译安装PHP教程。】
请注意,以上是一个基本的编译安装PHP的示例,您可能需要根据您的特定需求进行进一步配置和调整。
81 0
|
7月前
|
PHP
百度搜索:蓝易云【Debian11系统编译安装PHP教程。】
在Web浏览器中访问该文件,如果看到PHP信息页面,则表示安装成功。 以上是在Debian 11系统上编译安装PHP的基本步骤。请根据实际情况进行相应的调整和配置。
57 0
|
7月前
|
Linux PHP
百度搜索:蓝易云【Cnetos7编译安装PHP教程。】
请注意,上述步骤提供了基本的编译安装PHP的指南,具体的过程可能会因您选择的PHP版本和特定需求而有所不同。
64 0
|
8月前
|
PHP
vscode添加PHP代码注释的插件及设置教程
在vscode中点击扩展-->安装插件koroFileHeader
341 0