1、支付概述与准备:微信支付业务模式、支付流程概览、商户号申请、API密钥配置

各位同学,咱们今天正式开讲微信支付。

说实话,支付这块儿,是很多小程序开发者的「拦路虎」。我自己刚入行那会儿,也被各种商户号、API密钥、回调地址搞得晕头转向。但你别怕,这东西说白了就是一套固定的流程,你跟着我走一遍,后面就顺了。

1.1 微信支付的业务模式

微信支付不是只有一种玩法。它分几种模式,你得先搞清楚自己属于哪一种。

  • JSAPI支付:这是小程序里最常用的。用户在微信内打开你的小程序,调起微信支付弹窗。我做过的大部分电商小程序,用的都是这个。
  • Native支付:生成一个二维码,用户拿微信扫一扫付款。适合线下扫码场景。
  • App支付:在外部App里调起微信支付。这个跟小程序关系不大,但原理相通。
  • H5支付:在手机浏览器里调起微信支付。注意,这个在微信内是禁用的,只能在外部浏览器用。
  • 小程序支付:其实就是JSAPI支付在小程序环境下的特化版本。你只需要调用 wx.requestPayment 这个API就行。

重点:咱们这门课,核心就是讲「小程序支付」,也就是JSAPI支付模式。其他模式你了解一下就行,以后遇到再查文档。

1.2 支付流程概览

很多新手一上来就写代码,结果调不通。为什么?因为没搞懂流程。

我习惯把支付流程拆成三段:

  1. 前端发起请求:用户点击「立即购买」,小程序把商品信息发给你的后端。
  2. 后端调用微信支付API:你的后端拿着这些信息,去微信服务器生成一个「预支付订单」,拿到一个 prepay_id
  3. 前端调起支付:后端把 prepay_id 和一些签名参数返回给小程序,小程序调用 wx.requestPayment,弹出支付密码框。

嗯,这里要注意:绝对不能在小程序端直接调微信支付API。为什么?因为你的API密钥如果暴露在前端,别人就能拿你的钱去付款了。我曾经见过一个项目,把密钥写死在代码里,结果上线第一天就被刷了十几万……

避坑指南:所有涉及密钥、签名的操作,一律放在后端。小程序端只负责「发起请求」和「调起支付」这两步。

1.3 商户号申请

要做微信支付,你得先有个「商户号」。这玩意儿怎么申请?

  • 打开 微信支付商户平台,用你的微信扫码登录。
  • 点击「接入微信支付」,选择「我是普通商户」。
  • 填写营业执照、法人信息、对公账户等资料。审核一般1-3个工作日。
  • 审核通过后,你会得到一个 商户号(mchid),这个很重要,后面所有接口都要用到。

注意:申请商户号需要营业执照。如果你只是个人开发者,没有公司,可以试试「小微商户」或者用别人的资质。但说实话,正规项目还是建议注册公司。

1.4 API密钥配置

拿到商户号之后,第一件事就是配置API密钥。

这个密钥是用来签名的。你想想看,微信怎么知道发请求的人是你?就是靠这个密钥算出来的签名。

配置步骤:

  1. 登录微信支付商户平台。
  2. 进入「账户中心」→「API安全」→「设置API密钥」。
  3. 设置一个32位的字符串,建议用随机生成的,别用123456这种。
  4. 保存后,这个密钥就是你的「签名钥匙」了。

我个人习惯:把密钥放在后端的环境变量里,比如 .env 文件。绝对不要写死在代码里,更不要上传到Git仓库。我曾经见过有人把密钥提交到GitHub,结果被爬虫扫到,一夜之间被刷了十几万……嗯,血的教训。

好了,准备工作就这些。下一章咱们开始写代码,真正调通第一笔支付。

小提示:如果你只是测试,可以用微信提供的「沙箱环境」。沙箱环境不需要真实扣款,但流程跟正式环境一模一样。我建议你先在沙箱里跑通,再切到正式环境。


公众号:蓝海资料掘金营,微信deep3321