项目GitHub地址:https://github.com/helei112g/payment
微信支付个人觉得在帐号设置上有些麻烦,帐号太多啦,支付宝目前就是一个应用基本涵盖了所有的接口开发。
可能是由于微信支付的后端是财付通,反正咱们写代码的,也别管那么多。理清楚各配置的关系,然后写出高质量的代码就好。
关于如何申请微信支付,只讲两个问题,服务号支付能力的申请在公众号后后台申请,app应用的支付能力申请在开发者中心申请。其他细节请自行查询。
登陆微信商户平台:https://pay.weixin.qq.com
拿到微信给的商户号后,登陆商户平台,点击【账户中心】进入【API安全】
会看到下面的截图:
微信支付发起请求的数据需要进行签名,签名的密钥就是在这里设置,设置时候请记录一下。等会配置中会需要。
下载微信的安全证书,相关说明看这里
配置文件
return [
'app_id' => '应用ID',
'mch_id' => '商户id',
'md5_key' => '刚刚设置的密钥',
'app_cert_pem' => 'apiclient_cert.pem',
'app_key_pem' => 'apiclient_key.pem',
'sign_type' => 'MD5',// MD5 HMAC-SHA256
'limit_pay' => [
//'no_credit',
],
'fee_type' => 'CNY',// 货币类型 当前仅支持该字段
'notify_url' => 'https://helei112g.github.io/',
'redirect_url' => 'https://helei112g.github.io/',
'return_raw' => false,
];
下面表格中 是否必须 列如果标记为 是
,则该项必须设置,否则sdk将无法得到结果。
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
app_id | string | 是 | 应用id,下面会详细解释 |
mch_id | string | 是 | 微信支付分配的商户号 |
md5_key | string | 是 | 用户在商户中心设置的api密钥 |
sign_type | string | 是 | 签名类型,默认为MD5,支持HMAC-SHA256和MD5。 |
app_cert_pem | string | 是 | 证书pem格式 |
app_key_pem | string | 是 | 证书密钥pem格式 |
limit_pay | array | 否 | 上传此参数no_credit--可限制用户不能使用信用卡支付 |
fee_type | string | 否 | 默认人民币:CNY |
notify_url | string | 是 | 异步通知的地址 |
redirect_url | string | 否 | 回调页面地址 |
return_raw | boolean | 否 | 是否返回微信原始数据 |
app_id
: 对于公众号支付,是微信支付分配的公众账号ID,如果是app支付则是微信开放平台审核通过的应用APPID
微信支付接口中,一定要注意区分不同的帐号类别
- 公众号支付,需要对应服务号在公众号后台申请,该帐号无法用来进行app支付
- app支付,微信开放平台审核通过的应用APPID,无法用来进行公众号支付
- 小程序支付也是一个独立的帐号,微信分配的小程序ID
- 扫码支付,可以使用app支付的帐号,也可使用公众支付的帐号
- 刷卡支付,两个帐号也可以使用
由于我没有小程序的帐号,没办法测它是否可以用于扫码支付与刷卡支付,有测过的朋友请告诉我一下(微信号:helei543345
)
mch_id
: 商户号,申请商户号成功后,腾讯给你发的邮件里边有
md5_key
: 在商户中心自己设置的api密钥,主要用来签名支付数据
sign_type
: 签名方式,当前微信支持HMAC-SHA256和MD5,默认使用 MD5
app_cert_pem
: 从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
app_key_pem
: 从apiclient_key.pem中导出密钥部分的文件,为pem格式
关于 app_cert_pem
与 app_key_pem
的详情请看这里 : https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3
limit_pay
: no_credit--指定不能使用信用卡支付 ,当前微信仅这一个参数,设置了,支付时,用户无法使用信用卡
fee_type
: 货币类型,默认是人民币,其他可选值看这里:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
notify_url
: 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
redirect_url
: 只有在使用h5支付时,才需要设置,也可以选择不设置。用来控制在h5中支付成功后,跳转的页面。
return_raw
: 是否返回微信的原始数据,默认为false,建议设置为true
- 该参数如果设置为
false
,sdk内部会映射一些key,并且把微信的金额处理为元 - 如果参数值为
true
,则只对异步数据进行签名检查,检查通过,返回一个数据类型的数据(微信原始为xml),其中包含的key是微信本身的,并且金额相关的单位都是分
微信的配置文件相对来说比较简单,只是它的帐号体系有点多,大家在使用时,根据自己使用不同支付,读取不同配置,来完成相互间的切换。
另外,如果还需要转账或者发红包,请设置以下图中的信息。
今天晚上公司部署新项目,在等待过程中把微信的配置文档搞定。