search
HomeBackend DevelopmentPHP TutorialPHP如何实现微信扫码支付

PHP如何实现微信扫码支付

Jun 06, 2016 pm 08:10 PM
php

PHP实现微信扫码支付的方法:首先把SDK引入项目中;然后在SDK中lib目录下的“WxPay.Config.php”中修改配置项;最后根据微信通知的结果去处理业务逻辑即可。

PHP如何实现微信扫码支付

PHP实现微信扫码支付

PHP的SDK地址  :https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip

流程图链接地址  :https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5

微信小程序支付  :https://blog.csdn.net/wskaitt/article/details/80284656

把SDK引入你的项目中

在SDK中lib目录下的WxPay.Config.php中,修改你的配置项

891d393c668cea5851ccd43a2523a38.png

      1.  在你网站的web页面,进行订单的提交,在后台生成你的订单信息(未支付状态)

      2.  根据你的订单信息,去调用SDK中的统一下单API

      3.  调取到统一下单API后,会生成预支付交易,返回预支付交易链接(也就是二维码链接)

      4.  把预支付链接和你需要展示给用户的相关订单信息返回给web端,由web端展示给用户

      5.  用户进行扫码支付并确认支付后,微信官方会返回给用户支付结果

      6.  微信官方异步通知我们用户的支付结果

      7.  根据微信通知的结果去处理我们的业务逻辑()

      在这里可能有的小伙伴获取不到微信通知结果(这个原因暂时不清楚)

      在你设置的notify路径中 使用   file_get_contents("php://input");  来获取结果是没有问题的

      结果集是xml格式,可以使用一下方法将xml转换成array

      aac91a838a03c51c2e9d68f09df596a.png

      在做测试的时候,可把结果集转为json格式,输出到日志中,方便我们知道是否获取到通知结果

      根据获取到的结果集去处理订单状态。处理完成之后返回给微信一个SESSUCE 或者FAIL

      由于微信会在30分钟内异步通知8次。我本人在返回给微信接收状态的时候,微信还是一直给我通知

      3ee804bdc39bb5670601e29f34913cc.png

       以上代码未生效。所以我在处理的时候根据订单号加了一个缓存,在订单处理成功的时候,根据订单号创建一个缓存,设置的生效时间为1小时(微信通知只有30分钟,时间完全够),在入口位置判断是否存在这个订单,如果有的话就说明已经处理过了,直接返回不进行处理。这样就解决了我的问题。

       最后  在处理订单完之后,还需要通过前端调用一个接口,在平台返回给用户是否支付成功

更多相关知识,请访问PHP中文网

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What is the difference between unset() and session_destroy()?What is the difference between unset() and session_destroy()?May 04, 2025 am 12:19 AM

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

What is sticky sessions (session affinity) in the context of load balancing?What is sticky sessions (session affinity) in the context of load balancing?May 04, 2025 am 12:16 AM

Stickysessionsensureuserrequestsareroutedtothesameserverforsessiondataconsistency.1)SessionIdentificationassignsuserstoserversusingcookiesorURLmodifications.2)ConsistentRoutingdirectssubsequentrequeststothesameserver.3)LoadBalancingdistributesnewuser

What are the different session save handlers available in PHP?What are the different session save handlers available in PHP?May 04, 2025 am 12:14 AM

PHPoffersvarioussessionsavehandlers:1)Files:Default,simplebutmaybottleneckonhigh-trafficsites.2)Memcached:High-performance,idealforspeed-criticalapplications.3)Redis:SimilartoMemcached,withaddedpersistence.4)Databases:Offerscontrol,usefulforintegrati

What is a session in PHP, and why are they used?What is a session in PHP, and why are they used?May 04, 2025 am 12:12 AM

Session in PHP is a mechanism for saving user data on the server side to maintain state between multiple requests. Specifically, 1) the session is started by the session_start() function, and data is stored and read through the $_SESSION super global array; 2) the session data is stored in the server's temporary files by default, but can be optimized through database or memory storage; 3) the session can be used to realize user login status tracking and shopping cart management functions; 4) Pay attention to the secure transmission and performance optimization of the session to ensure the security and efficiency of the application.

Explain the lifecycle of a PHP session.Explain the lifecycle of a PHP session.May 04, 2025 am 12:04 AM

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

What is the difference between absolute and idle session timeouts?What is the difference between absolute and idle session timeouts?May 03, 2025 am 12:21 AM

Absolute session timeout starts at the time of session creation, while an idle session timeout starts at the time of user's no operation. Absolute session timeout is suitable for scenarios where strict control of the session life cycle is required, such as financial applications; idle session timeout is suitable for applications that want users to keep their session active for a long time, such as social media.

What steps would you take if sessions aren't working on your server?What steps would you take if sessions aren't working on your server?May 03, 2025 am 12:19 AM

The server session failure can be solved through the following steps: 1. Check the server configuration to ensure that the session is set correctly. 2. Verify client cookies, confirm that the browser supports it and send it correctly. 3. Check session storage services, such as Redis, to ensure that they are running normally. 4. Review the application code to ensure the correct session logic. Through these steps, conversation problems can be effectively diagnosed and repaired and user experience can be improved.

What is the significance of the session_start() function?What is the significance of the session_start() function?May 03, 2025 am 12:18 AM

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools