상점 제작, 온라인 결제, 보험료 결제 등 프로젝트 개발 중에 WeChat 결제 인터페이스 호출을 사용해야 하는 경우가 많습니다. 편집자는 최근 여러 가지 수도 요금 청구 시스템, 보증서 발급 시스템 및 온라인 등록을 구축했습니다. WeChat 결제는 모두에서 사용됩니다. WeChat 결제의 생성 및 결제 후 여러 상태에 대한 설명이 모두에게 도움이 되기를 바랍니다.
1 , 쿼리 API 및 결제 알림에서 그대로 반환되며, 실제 상황에서는 결제 완료 상태에서만 이 필드가 반환됩니다. 때로는 개발 중 주문을 쿼리할 때 회원 ID, 결제 주문 ID, 애플리케이션 ID, 회원 이름 등과 같은 특정 값을 반환해야 하는 경우가 있습니다. 이때 매개변수를 전달하기 위해 연결을 사용할 수 있지만 연결은 때로는 전달된 값이 배열인 경우가 많으므로 변환을 위해 json_encode만 사용해야 합니다. 예: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 alt="ThinkPhp5.1은 WeChat 결제 및 결제 후 여러 상태 설명을 수행합니다." >标记内) $dataUri = $qrCode->writeDataUri(); return $dataUri; }
주문을 쿼리한 후 변환을 위해 json_decode를 사용합니다. 예:
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; }
여기에서 얻은 $arr 은 배열, 직접 따르세요. 배열의 호출 규칙을 호출하세요
3 여러 가지 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" }
관련 추천: "
thinkphp 비디오 튜토리얼
"
위 내용은 편집자가 WeChat 결제 관련 지식을 요약한 것입니다. 모두에게 도움이 되기를 바랍니다. 개발자 도움!
위 내용은 ThinkPhp5.1은 WeChat 결제 및 결제 후 여러 상태 설명을 수행합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 ThinkPhp의 CLI 기능을 사용하여 CLI (Command-Line Applications)를 구축하는 것을 보여줍니다. 모듈 식 설계, 종속성 주입 및 강력한 오류 처리와 같은 모범 사례를 강조하면서 Insu와 같은 일반적인 함정을 강조합니다.

이 기사는 서버리스 아키텍처에서 ThinkPHP를 사용하기위한 주요 고려 사항에 대해 설명하고 성능 최적화, 무국적 설계 및 보안에 중점을 둡니다. 비용 효율성 및 확장 성과 같은 혜택을 강조하고 도전 과제를 해결합니다.

ThinkPhp의 IOC 컨테이너는 PHP apps.character 수 : 159의 효율적인 종속성 관리를위한 게으른 하중, 맥락 바인딩 및 메소드 주입과 같은 고급 기능을 제공합니다.

이 기사는 설치, 구성, 작업 관리 및 확장성에 중점을 둔 ThinkPhp 및 RabbitMQ를 사용하여 분산 작업 큐 시스템을 구축합니다. 주요 문제는 고 가용성 보장, 손상과 같은 일반적인 함정을 피하는 것입니다.

이 기사에서는 매개 변수화 쿼리를 통해 ThinkPhp의 SQL 주입 취약점을 방지하고, 원시 SQL을 피하거나, ORM, 정기적 인 업데이트 및 올바른 오류 처리를 방지하는 것에 대해 설명합니다. 또한 데이터베이스 쿼리 보안 및 Validat 보안을위한 모범 사례를 다룹니다.

이 기사는 ThinkPhp 5와 6의 주요 차이점에 대해 논의하며, 유산 업그레이드에 대한 아키텍처, 기능, 성능 및 적합성에 중점을 둡니다. ThinkPhp 5는 전통적인 프로젝트 및 레거시 시스템에 권장되며 ThinkPhp 6은 새로운 PR에 적합합니다.

이 기사는 ThinkPhp의 내장 테스트 프레임 워크에 대해 논의하여 장치 및 통합 테스트와 같은 주요 기능과 조기 버그 감지 및 개선 된 코드 품질을 통해 응용 프로그램 신뢰성을 향상시키는 방법을 강조합니다.

이 기사는 파일 업로드를 처리하고 ThinkPhP의 클라우드 스토리지를 통합하여 보안, 효율성 및 확장 성을 중심으로하는 모범 사례에 대해 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
