老莫的笔记本  
  
查看: 565|回复: 0

微信支付201 商户号重复问题 [以及 报错 解决方法]

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2021-11-12 11:08:58 | 显示全部楼层 |阅读模式
注意报错表象:可能是prepay_id  没找到

还有一个可能: PC端 和手机端 生成的商户号,重复了  ,[如果单单生成PC端 或者单单生成  手机端都没有问题]
  1. //  返回值为微信支付的配置项
  2.     public function createOrder($id)
  3.     {
  4.         //  拿着这个案件的ID 重新 发起对朱自宇的请求
  5.         $config = session('wechat_config');
  6.         
  7.         // dd($config['java_url'],$id);
  8.     //   dd($config);
  9.         
  10.         $url = $config['java_url'].'pt/patentMain/weiXinPay/payInfo/id/'.$id;
  11.         
  12.         $zdata = $this->send_request($url,"GET");
  13.         
  14.         $zdata = json_decode($zdata['data']);
  15.         
  16.         $useData = $zdata->data;
  17.         
  18.         if($zdata->status !=200){
  19.             return ['status'=>0,'message'=>'获取失败,当前ID 不被 相关系统 适配,请联系客服'];
  20.         }
  21.         
  22.         // dd($useData->fee,$useData->lateFee);  
  23.         
  24.         // dd($data);
  25.         // return ['status'=>200,'data'=>$zdata['data']];
  26.         
  27.         
  28.         
  29.         // OrdPayLogs
  30.         
  31.         // 对数据库的判断如下
  32.         // 1. 查询是否有该条数据, 是的话更新 这个值的 fee.与 lateFee
  33.         // 2. 如果没有 那么 直接增加 就可以了
  34.         
  35.         $ord_id = $id;
  36.         
  37.            // 已经登录过
  38.         $user = session('wechat_user');
  39.         
  40.         // dd( $user );
  41.         
  42.         $openid = $user['id'];
  43.         
  44.         $ordData = OrdPayLogs::where([
  45.                     'ord_id'=>['=' => $ord_id] ,
  46.                     'company_id'=>['='=> $config['company_id']],
  47.                     'year'=>['=' => $useData->year] ,
  48.                     ])->first();
  49.         
  50.         $payId = 0;

  51.         if($ordData === null){
  52.             
  53.             $order = new OrdPayLogs;
  54.             $order->ord_id = $ord_id;
  55.             $order->wx_id = $config['id'];
  56.             $order->openid = $openid;
  57.             $order->name = $useData->ptNameText;
  58.             $order->fee = $useData->fee;
  59.             $order->late_fee = $useData->lateFee;
  60.             $order->company_id = $config['company_id'];
  61.             $order->payment_status = 1;
  62.             $order->total_price = $useData->fee + $useData->lateFee;
  63.             $order->year = $useData->year;
  64.             $order->save();
  65.             
  66.             // dd($order->id);
  67.             $payId = $order->id;
  68.         }else{
  69.             
  70.             // 如果是 那么修改当前数据
  71.             OrdPayLogs::where([
  72.                     'ord_id'=>['=' => $ord_id] ,
  73.                     'company_id'=>['='=> $config['company_id']],
  74.                     'year'=>['=' => $useData->year] ,
  75.                 ])->update([
  76.                     'fee' => $useData->fee,
  77.                     'late_fee' =>$useData->lateFee,
  78.                     'total_price' => $useData->fee + $useData->lateFee
  79.                 ]);
  80.             
  81.             $payId = $ordData->id;
  82.             
  83.            if($ordData->payment_status ==3){
  84.                 return [
  85.                     'state'=>201,
  86.                     'message' =>'当前订单已完成支付',
  87.                 ];
  88.             }
  89.             // dd('这是修改');
  90.         }
  91.         
  92.         // dd($payId);
  93.    
  94.         // dd(222);
  95.         
  96.         // 开始生成支付配置 ======
  97.         $payConfig = [
  98.             // 必要配置
  99.             'app_id'             => $config['app_id'],
  100.             'mch_id'             => $config['mch_id'],
  101.             'key'                => $config['key'],   // API 密钥 在商户的API 安全界面设置

  102.             // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
  103.             'cert_path'          => '', // XXX: 绝对路径!!!!
  104.             'key_path'           => '',      // XXX: 绝对路径!!!!
  105.   
  106.             'notify_url'         => 'http://wx.qancloud.com/out/payback',     // 你也可以在下单时单独设置来想覆盖它
  107.         ];
  108.         
  109.         // dd($payConfig );
  110.         
  111.         $app = Factory::payment($payConfig);

  112.         $result = $app->order->unify([
  113.             'body' => '专利费用缴纳'.$useData->ptNameText,
  114.             'out_trade_no' => $payId,
  115.             // 'total_fee' => ($useData->fee + $useData->lateFee)*100,
  116.             'total_fee' => 1,
  117.             'spbill_create_ip' => '', // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
  118.             'notify_url' => 'http://wx.qancloud.com/out/payback', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  119.             'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
  120.             'openid' => $openid,
  121.         ]);
  122.         
  123.         // dd($result);
  124.         if(isset($result['prepay_id'])){
  125.             
  126.             $payment = Factory::payment($payConfig);

  127.             $jssdk = $payment->jssdk;
  128.    
  129.             $json = $jssdk->bridgeConfig($result['prepay_id']);
  130.      
  131.    
  132.             return [
  133.                 'state'=>200,
  134.                 'message' =>'获取信息成功',
  135.                 'data' => json_decode($json)
  136.             ];
  137.         }else{
  138.             
  139.             return [
  140.                 'state'=>202,
  141.                 'message' =>'订单错误'.$result['err_code_des'],
  142.                 'data' => $result
  143.             ];
  144.         }
  145.         
  146.       
  147.         
  148.         
  149.         

  150.     }
复制代码
贴一个 全代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表