微信支付接入,如果不使用成熟的开发包,工作量会很大。依赖EasyWechat首先依赖laravel项目中的easywechat包composerrequire"overtrue/laravel-wechat":"^4.0"配置在.WECHAT_PAYMENT_KEY=ZZDDD***WECHAT_PAYMENT_CERT_PATH=/home/secret/apiclient_cert.pemWECHAT_PAYMENT_KEY_PATH=/home/secret/apiclient_key.pemWECHAT_PAYMENT_NOTIFY_URL=https://www.mysite.com/gateway/wxpay/callback可以运行额外的配置,如果你需要phpartisanvendor:publish--provider="Overtrue\LaravelWeChat\ServiceProvider",然后在config/wechat.php中可以看到easywecaht可以支持的所有配置。编写接口逻辑新建App/Repositories/PayRepository.phpwxpay=app('easywechat.payment');$unify=$this->wxpay->order->unify(['body'=>$this->transfer->name.''.$this->tickets->count().'tickets','out_trade_no'=>'订单号','total_fee'=>bcmul('价格:单位元',100),'trade_type'=>'JSAPI','openid'=>$user->openid,//用户的openid]);if($unify['return_code']==='SUCCESS'&&!isset($unify['err_code'])){$pay=['appId'=>config('wechat.payment.default.app_id'),'timeStamp'=>(string)time(),'nonceStr'=>$unify['nonce_str'],'package'=>'prepay_id='.$unify['prepay_id'],'signType'=>'MD5',];$pay['paySign']=generate_sign($pay,config('wechat.payment.default.key'));返回$支付;}else{$unify['return_code']='FAIL';返回$统一;}}}新建一个App/Http/Controllers/PayController.phppay_repository=$pay_repository;}/***微信支付**@returnResponse*/publicfunctionpay(){$user=auth()->user();$pay=$this->pay_repository->pay($user);返回响应::成功(['支付'=>$支付]);}}绑定路由routes/api.phpname('pay');编写JS逻辑页面JS编辑支付逻辑onPay:function(e){wx.request({url:'/api/buy/pay',method:'POST',success:(res)=>{if(res.data.pay.result_code!='SUCCESS'){returnwx.showModal({content:res.data.pay.return_msg+res.data.pay.err_code_des,showCancel:false});}res.data.pay.success=(res)=>{wx.showModal({content:'您已成功支付',showCancel:false});};res.data.pay.fail=(res)=>{if(res.errMsg=='requestPayment:failcancel'){returnwx.showToast({icon:'none',title:'用户取消支付',});}};wx.requestPayment(res.data.pay);}});},在页面按钮上调用
