怎么用ThinkPhp5.1脚本制作微信支付
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇"怎么用ThinkPhp5.1脚本制作微信支付"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起
千家信息网最后更新 2026年11月04日怎么用ThinkPhp5.1脚本制作微信支付2 微信支付时attach参数的设置
这篇"怎么用ThinkPhp5.1脚本制作微信支付"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么用ThinkPhp5.1脚本制作微信支付"文章吧。
1 微信支付
【扫码支付】
public function wxPayImg($body,$out_trade_no,$fee,$product_id,$logo,$path,$attach,$pro_id){ require_once Env::get('app_path')."api/wxpay/lib/WxPay.Api.php"; //实例化配置信息 $config = new WxPayConfig(); $input = new \WxPayUnifiedOrder(); //设置商品描述 $input->SetBody($body); //设置订单号 $input->SetOut_trade_no($out_trade_no); //设置商品金额(单位:分) $input->SetTotal_fee($fee); //设置异步通知地址 $notify = $config->GetNotifyUrl(); $input->SetNotify_url($notify); //设置交易类型 $input->SetTrade_Type('NATIVE'); //设置商品ID $input->SetProduct_id($product_id); $input->SetDevice_info($pro_id); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); //dump($result); $qr_url = $result['code_url']; $img = $this->createCode($qr_url,$logo,$path); //生成数组 $array = array('img'=>$img,'out_trade_no'=>$out_trade_no); return $array;}//生成二维码public function createCode($code_url,$logo,$path){ //创建基本的QR码 $qrCode = new QrCode($code_url); $qrCode->setSize(300); //设置高级选项 $qrCode->setWriterByName('png'); $qrCode->setEncoding('UTF-8'); $qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH()); $qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]); $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]); //$qrCode->setLabel('', 16, App::getAppPath().'/../public/static/user/font/msyhl.ttc', LabelAlignment::CENTER()); $qrCode->setLogoPath($logo); $qrCode->setLogoWidth(50); $qrCode->setValidateResult(false); //边距设置 $qrCode->setMargin(10); //直接输出二维码 header('Content-Type: '.$qrCode->getContentType()); //echo $qrCode->writeString(); //将二维码保存到指定目录 $qrCode->writeFile($path); //生成数据URI以内联图像数据(即在
标记内) $dataUri = $qrCode->writeDataUri(); return $dataUri;}【JSAPI接口支付】
public function jsApiPay($openId,$Body,$out_trade_no,$fee,$product_id,$attach){ require_once Env::get('app_path')."api/wxpay/lib/WxPay.Api.php"; $tools = new JsApiPay(); $input = new \WxPayUnifiedOrder(); //设置商品描述 $input->SetBody($Body); //设置订单号 $input->SetOut_trade_no($out_trade_no); //设置商品金额(单位:分) $input->SetTotal_fee($fee); //设置异步通知地址 $config = new WxPayConfig(); $notify = $config->GetNotifyUrl(); $input->SetNotify_url($notify); //设置交易类型 $input->SetTrade_Type('JSAPI'); //设置商品ID $input->SetProduct_id($product_id); //用户openID $input->SetOpenid($openId); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); $jsApiParameters = $tools->GetJsApiParameters($result); return $jsApiParameters;}【订单查询】
public function QueryOrder($number,$transaction_id=NULL){ require_once App::getAppPath().'api/wxpay/lib/WxPay.Api.php'; require_once App::getAppPath().'api/wxpay/lib/WxPay.Notify.php'; $input = new \WxPayOrderQuery(); $input->SetOut_trade_no($number); $input->SetTransaction_id($transaction_id); $config = new WxPayConfig(); $result = \WxPayApi::orderQuery($config, $input); if($result['result_code']=='SUCCESS'){ if($result['trade_state']=='SUCCESS'){ $arr = json_decode($result['attach'],true); $pay_time = $this->getPayTime($result['time_end']); return ['code'=>100,'result_code'=>$result['result_code'],'attach'=>$arr,'pay_time'=>$pay_time,'result'=>$result,'msg'=>"支付成功"]; }else{ return ['code'=>101,'result_code'=>$result['result_code'],'err_code'=>$result['err_code'],'result'=>$result,'msg'=>"订单未支付"]; } }else{ return ['code'=>103,'result_code'=>$result['result_code'],'result'=>$result,'msg'=>"订单不存在"]; } //dump($result); //return $result;}2 微信支付时attach参数的设置
attach,官方解释:附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。有时我们在开发时需要在查询订单时返回一些特定的数值,比如:会员ID、支付订单ID、申请ID、会员名称等等,这时可以使用attach进行传递参数,但是attach是一个字符串,有时往往传值的是数组,那么只需要利json_encode进行转化即可,例如:
$remarks = array( 'cid'=>1, 'member_id'=>2, 'apply_id'=>28,);$attach = json_encode($remarks);
查询订单后,再用json_decode进行转化,例如:
$arr = json_decode($result['attach'],true);
这里得到的$arr是一个数组,直接按照数组的调用规则调用即可
3 微信支付的几种状态
当所查询的订单信息不存在时,返回如下:
array(9) { ["appid"] => string(18) "公众号APPId" ["err_code"] => string(13) "ORDERNOTEXIST" ["err_code_des"] => string(15) "订单不存在" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "H0K6KPemexExM5DV" ["result_code"] => string(4) "FAIL" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "8779CA8C7F4931B4296C19FFFB176A3111F74B7244123A0C0EB7AD8DB2B1BDA49DA"}当所查询的订单信息支付失败,返回如下:
array(11) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "BR3zfazCdI3vZj5e" ["out_trade_no"] => string(13) "1636555204840" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "7927EC724A7FDBFF034621B1EC492DB4D130AC13A43E4C66C7B6AD7889736CD5" ["trade_state"] => string(6) "NOTPAY" ["trade_state_desc"] => string(15) "订单未支付"}当所查询订单信息存在时返回如下:
array(21) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["bank_type"] => string(10) "LZB_CREDIT" ["cash_fee"] => string(4) "2000" ["cash_fee_type"] => string(3) "CNY" ["fee_type"] => string(3) "CNY" ["is_subscribe"] => string(1) "Y" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "Y8iYqXqHfs22hexX" ["openid"] => string(28) "支付者微信openid" ["out_trade_no"] => string(13) "1636600772812" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "7AC36F5EA6C4EE5D33584F0F1CDB54F804F0B196B49B61A4FFB6C045D521DA3C" ["time_end"] => string(14) "20211111111938" ["total_fee"] => string(4) "2000" ["trade_state"] => string(7) "SUCCESS" ["trade_state_desc"] => string(12) "支付成功" ["trade_type"] => string(5) "JSAPI" ["transaction_id"] => string(28) "4200001198202111115284536175"}Native支付成功
array(22) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["bank_type"] => string(6) "OTHERS" ["cash_fee"] => string(1) "1" ["cash_fee_type"] => string(3) "CNY" ["device_info"] => string(1) "1" ["fee_type"] => string(3) "CNY" ["is_subscribe"] => string(1) "Y" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "Y8iYqXqHfs22hexX" ["openid"] => string(28) "支付者微信openid" ["out_trade_no"] => string(13) "1642682408295" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "2F25084A568BBDA805DA8EE3FEB846448C9778DCBC2B745E8210D950E0742E38" ["time_end"] => string(14) "20220120204024" ["total_fee"] => string(1) "1" ["trade_state"] => string(7) "SUCCESS" ["trade_state_desc"] => string(12) "支付成功" ["trade_type"] => string(6) "NATIVE" ["transaction_id"] => string(28) "4200001358202201201811257221"}以上就是关于"怎么用ThinkPhp5.1脚本制作微信支付"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
支付
订单
查询
商品
内容
成功
信息
公众
商户
数组
脚本
制作
参数
数据
二维
二维码
生成
会员
单位
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
广州百单互联网科技有限公司
宜安科技 互联网金融
掌上梦互联网科技
金融科技和互联网金融
互联网校园科技培训
来此购互联网科技有限公司
苏州铭阳互联网科技有限公司
国大互联网教育科技有限公司工作
美国互联网科技实力
小米互联网科技园入驻
下一代互联网重大应用科技园
互联网科技手机排行榜
中国互联网公司的科技投入
马化腾互联网科技教学
深圳互联网科技园地址
科技互联网专业务虚会材料
互联网的黑科技实验室
株洲百竞科技的互联网营销顾问
互联网 科技节活动 微视频大赛
互联网科技园
科技创新与互联网经济
互联网科技有限公司图片
科技与互联网发展
互联网 卓越科技
科技大学互联网专业好不好
如何创新互联网科技
江苏互联网智能科技软件
科技互联网经济论坛
北京瑞云互联网科技有限公司