1、支付概述与准备:微信支付业务模式、支付流程概览、商户号申请、API密钥配置
各位同学,咱们今天正式开讲微信支付。
说实话,支付这块儿,是很多小程序开发者的「拦路虎」。我自己刚入行那会儿,也被各种商户号、API密钥、回调地址搞得晕头转向。但你别怕,这东西说白了就是一套固定的流程,你跟着我走一遍,后面就顺了。
1.1 微信支付的业务模式
微信支付不是只有一种玩法。它分几种模式,你得先搞清楚自己属于哪一种。
- JSAPI支付:这是小程序里最常用的。用户在微信内打开你的小程序,调起微信支付弹窗。我做过的大部分电商小程序,用的都是这个。
- Native支付:生成一个二维码,用户拿微信扫一扫付款。适合线下扫码场景。
- App支付:在外部App里调起微信支付。这个跟小程序关系不大,但原理相通。
- H5支付:在手机浏览器里调起微信支付。注意,这个在微信内是禁用的,只能在外部浏览器用。
- 小程序支付:其实就是JSAPI支付在小程序环境下的特化版本。你只需要调用
wx.requestPayment这个API就行。
重点:咱们这门课,核心就是讲「小程序支付」,也就是JSAPI支付模式。其他模式你了解一下就行,以后遇到再查文档。
1.2 支付流程概览
很多新手一上来就写代码,结果调不通。为什么?因为没搞懂流程。
我习惯把支付流程拆成三段:
- 前端发起请求:用户点击「立即购买」,小程序把商品信息发给你的后端。
- 后端调用微信支付API:你的后端拿着这些信息,去微信服务器生成一个「预支付订单」,拿到一个
prepay_id。 - 前端调起支付:后端把
prepay_id和一些签名参数返回给小程序,小程序调用wx.requestPayment,弹出支付密码框。
嗯,这里要注意:绝对不能在小程序端直接调微信支付API。为什么?因为你的API密钥如果暴露在前端,别人就能拿你的钱去付款了。我曾经见过一个项目,把密钥写死在代码里,结果上线第一天就被刷了十几万……
避坑指南:所有涉及密钥、签名的操作,一律放在后端。小程序端只负责「发起请求」和「调起支付」这两步。
1.3 商户号申请
要做微信支付,你得先有个「商户号」。这玩意儿怎么申请?
- 打开 微信支付商户平台,用你的微信扫码登录。
- 点击「接入微信支付」,选择「我是普通商户」。
- 填写营业执照、法人信息、对公账户等资料。审核一般1-3个工作日。
- 审核通过后,你会得到一个 商户号(mchid),这个很重要,后面所有接口都要用到。
注意:申请商户号需要营业执照。如果你只是个人开发者,没有公司,可以试试「小微商户」或者用别人的资质。但说实话,正规项目还是建议注册公司。
1.4 API密钥配置
拿到商户号之后,第一件事就是配置API密钥。
这个密钥是用来签名的。你想想看,微信怎么知道发请求的人是你?就是靠这个密钥算出来的签名。
配置步骤:
- 登录微信支付商户平台。
- 进入「账户中心」→「API安全」→「设置API密钥」。
- 设置一个32位的字符串,建议用随机生成的,别用123456这种。
- 保存后,这个密钥就是你的「签名钥匙」了。
我个人习惯:把密钥放在后端的环境变量里,比如 .env 文件。绝对不要写死在代码里,更不要上传到Git仓库。我曾经见过有人把密钥提交到GitHub,结果被爬虫扫到,一夜之间被刷了十几万……嗯,血的教训。
好了,准备工作就这些。下一章咱们开始写代码,真正调通第一笔支付。
小提示:如果你只是测试,可以用微信提供的「沙箱环境」。沙箱环境不需要真实扣款,但流程跟正式环境一模一样。我建议你先在沙箱里跑通,再切到正式环境。
公众号:蓝海资料掘金营,微信deep3321