需先完成微信商户与公众号配置,再引入SDK或手动封装接口,接着调用统一下单获取prepay_id,然后处理异步通知验签解密,最后确保平台证书有效并自动更新。

如果您在开发PHP项目时需要接入微信支付功能,但对官方SDK文档不熟悉或缺乏实际对接经验,可能会遇到签名错误、回调验签失败、支付结果异步通知解析异常等问题。以下是PHP环境下完成微信支付基础对接的简要说明:
一、准备微信商户平台与公众号配置
对接前需确保已在微信商户平台完成企业认证,并获取商户号(mch_id)、API密钥(key)及API证书;同时在公众平台配置JSAPI支付授权目录和IP白名单,确保服务器出口IP已添加至商户平台。
1、登录微信商户平台,进入【账户中心】→【商户信息】复制商户号(mch_id)。
2、进入【API安全】→【API密钥】,点击【设置密钥】并输入32位字母数字组合的API密钥(key),保存后生效。
立即学习“PHP免费学习笔记(深入)”;
3、在【API安全】→【API证书】中下载证书文件(apiclient_cert.pem、apiclient_key.pem、rootca.pem),存入项目cert目录并设置读取权限为600。
4、登录公众号平台,在【微信支付】→【开发配置】中填写JSAPI支付授权目录(如https://example.com/pay/),并添加服务器公网IP到IP白名单。
二、引入官方SDK或使用cURL手动封装
微信官方提供PHP版SDK(V3接口推荐使用官方最新wechatpay-php SDK),也可基于cURL自行构造请求,适用于轻量级场景或定制化需求。
1、使用Composer安装官方V3 SDK:composer require wechatpay/wechatpay。
2、若选择手动封装,需确保PHP开启cURL扩展,并支持TLS 1.2及以上协议;所有POST请求必须使用application/json格式发送,且Header中携带Authorization签名头。
3、V3接口调用需先初始化WechatPayHttpClient实例,传入商户号、私钥路径、证书序列号及平台证书内容(首次调用自动拉取并缓存)。
三、统一下单生成预支付交易会话
调用统一下单接口(https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi)提交用户OpenID、订单金额、商品描述等参数,成功后返回预支付会话标识prepay_id,用于前端调起JSAPI支付。
damishop介绍 大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统,首创支持可视化编辑。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求
1、构造请求JSON体,包含appid(公众号AppID)、mchid(商户号)、description(商品描述)、out_trade_no(商户订单号,需全局唯一)、notify_url(异步通知地址)、amount(含total字段,单位为分)及payer(含openid)。
2、使用SDK发起POST请求,捕获响应状态码;HTTP 200表示下单成功,响应体中prepay_id字段值需提取并拼接为prepay_id=xxx字符串。
3、按微信JSAPI规范生成时间戳、随机字符串、签名类型(RSA-SHA256)、package(即prepay_id字符串)、signType,最终调用WXJSSDK.invoke传入全部参数完成前端唤起。
四、处理支付结果异步通知
微信服务器会在支付成功后向商户配置的notify_url发起POST请求,携带加密的JSON数据,需解密、验签、更新订单状态,且必须返回200响应,否则将重复推送。
1、接收原始POST数据(不能使用$_POST,需读取php://input),确认Content-Type为application/json且存在Wechatpay-Serial、Wechatpay-Timestamp、Wechatpay-Nonce、Wechatpay-Signature四个Header字段。
2、使用SDK提供的Notification::parse()方法传入原始报文及Header,自动完成验签与AES-256-GCM解密;若抛出异常则立即返回401或500状态码。
3、解密后获取resource.algorithm、resource.ciphertext、resource.nonce、resource.associated_data,调用AesGcm::decrypt()还原明文,校验event_type是否为TRANSACTION.SUCCESS,并比对out_trade_no与本地订单号一致性。
五、验证商户平台证书与平台证书自动更新
V3接口通信依赖平台证书(由微信签发),其有效期通常为2年;SDK内置自动刷新机制,但需确保notify_url与统一下单接口调用时使用的证书序列号一致,且本地存储路径可写。
1、首次调用任意V3接口时,SDK自动向https://api.mch.weixin.qq.com/v3/certificates请求平台证书列表,提取最新证书的serial_no并缓存至指定路径。
2、检查项目cert目录下是否存在wechatpay_*.pem命名的平台证书文件,若无或过期,SDK将在下次请求前重新拉取;可通过CertificatesVerifier类主动触发刷新。
3、验证证书有效性:使用openssl x509 -in cert_file.pem -text -noout命令查看Not After时间,确保未过期;同时确认证书颁发者为“WeChat Pay Root CA”。










