laravel微信支付
大约 2 分钟
支付流程
1、申请商户号
2、获取mer_id、apikey、对应的证书
3、配置支付授权目录:填写域名即可 https://orangbus/
4、关联小程序获取微信公众号appid
5、通过服务器生成对应的配置信息,由各自的平台发起支付
6、接受支付结果
openid获取
1、小程序传递uni.login获取的code参数到后端,通过接口换取openid
支付配置
登录商户后台:https://pay.weixin.qq.com
支付证书,需要下载微信的一个软件,根据引导生成,最后会在【本机】生成对应的文件
image-20250620150608427 获取支付秘钥: 32位的秘钥
image-20250620150129059 设置支付的授权目录:支付回调的目录
image-20250620145953649 最后需要得到的东西
【api秘钥】
【支付证书】2个文件
image-20250620153530457 支付目录配置
image-20250707171629626
安装
支付参数
$option = [
"appid" => "wxc31af35"
"mchid" => "1715"
"description" => "订单描述"
"out_trade_no" => "20250707160758208269"
"attach" => "node_order"
"amount" => array:2 [
"total" => 1
"currency" => "CNY"
]
"payer" => array:1 [
"openid" => "opHoT7WFGDMDd5s"
]
"time_expire" => "2025-07-07T17:44:18+08:00"
"notify_url" => "http://pay.xuekatu.com/pay/callback"
];
小程序支付参数
{
appId: "wxc31af735"
nonceStr: "DzbNp98mi3"
package: "prepay_id=wx071720172d5756c8bcdf0001"
paySign: "45h7rViTBFycSx0KwPlXtRul9aZV1Hdqfreb1AT4Lox6tvPD8LsGHgt2ahPOg=="
signType: "RSA"
timeStamp: "1751880017"
}
支付流程
payOrder({id:this.id}).then(res=>{
if (res.code === 200) {
/**
* appId: "wxc315ada735"
* nonceStr: "DzbNE2nX8mi3"
* package: "prepay_id=wxd29c4d5756c8bcdf0001"
* paySign: "45h7rViTBFycSx0KwPlXtRul9aZDdjT/3MbwmwEiLox6tvPD8LsGHgt2ahPOg=="
* signType: "RSA"
* timeStamp: "1751880017"
*/
let { appId,nonceStr,paySign,signType,timeStamp} = res.data;
uni.requestPayment({
provider:"wxpay",
order:this.order,
timeStamp:timeStamp,
nonceStr:nonceStr,
package:res.data.package,
signType:signType,
paySign:paySign,
success:(res)=>{
Message.success(res.message);
},
fail:(e)=>{
Message.error(e.message)
}
})
}else{
Message.error(res.msg)
}
});
回调参数
{
"message": {
"mchid": "1718891755",
"appid": "wxc31da735",
"out_trade_no": "202507071607582082693",
"transaction_id": "4200002724202507077591316549",
"trade_type": "JSAPI",
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"bank_type": "OTHERS",
"attach": "node_order",
"success_time": "2025-07-07T17:51:27+08:00",
"payer": {
"openid": "opHoT7WFG7Ld5s"
},
"amount": {
"total": 1,
"payer_total": 1,
"currency": "CNY",
"payer_currency": "CNY"
}
}
}
遇到问题
openssl_sign(): Supplied key param cannot be coerced into a private key
秘钥的路径出错了,或者填写的秘钥不对
appid和mch_id不匹配,请检查后再试

先绑定appid,找对应平台(小程序|公众号) 管理员手机确认