Souvent, les appels de l'interface de paiement WeChat doivent être utilisés pendant le développement de projets, tels que : la production d'un centre commercial, le paiement en ligne, le paiement d'assurance, etc. L'éditeur a récemment construit plusieurs systèmes de facturation des frais d'eau, des systèmes d'émission de lettres de garantie et des systèmes d'enregistrement en ligne. Les systèmes de paiement WeChat sont utilisés dans chacun d'entre eux. La production du paiement WeChat et la description de plusieurs statuts après le paiement sont répertoriés ci-dessous. J'espère que cela sera utile à tout le monde.
1 , renvoyé tel quel dans l'API de requête et la notification de paiement, et peut être utilisé comme paramètre personnalisé. Dans les circonstances réelles, ce champ ne sera renvoyé que dans l'état d'achèvement du paiement. Parfois, nous devons renvoyer certaines valeurs spécifiques lors de l'interrogation des commandes pendant le développement, telles que : l'ID de membre, l'ID d'ordre de paiement, l'ID d'application, le nom du membre, etc. À l'heure actuelle, nous pouvons utiliser attach pour transmettre des paramètres, mais attach est un chaîne. Parfois, la valeur transmise est souvent un tableau, il vous suffit donc d'utiliser json_encode pour la conversion, par exemple :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以内联图像数据(即在<img>标记内) $dataUri = $qrCode->writeDataUri(); return $dataUri; }
Après avoir interrogé la commande, utilisez json_decode pour la conversion, par exemple :
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; }
3 Plusieurs statuts de paiement WeChat
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; }
$remarks = array( 'cid'=>1, 'member_id'=>2, 'apply_id'=>28, ); $attach = json_encode($remarks);
$arr = json_decode($result['attach'],true);
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" }
"
Ce qui précède est le résumé par l'éditeur de certaines connaissances pertinentes sur le paiement WeChat. J'espère que cela sera utile à tous les développeurs qui aident !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!