백엔드 개발 PHP 문제 PHP WeChat 결제 프로세스는 무엇입니까?

PHP WeChat 결제 프로세스는 무엇입니까?

Aug 27, 2019 pm 03:24 PM
php 위챗 결제 과정

PHP WeChat 결제 프로세스는 무엇입니까?

사전 준비:

1. WeChat 인증 서비스 계정 및 WeChat 결제 활성화

2. WeChat 결제 SDK 다운로드 주소: https://pay.weixin.qq.com/wiki/doc /api/jsapi.php?chapter=11_1

3. WeChat 결제 플랫폼 https://pay.weixin.qq.com/index.php/account/api_cert에 로그인하여 결제 인증서를 다운로드하세요.

방법 단계 :

1. 데모 파일 처리

(1) 공식 데모를 다운로드합니다. 파일 이름은 WxpayAPI_php_v3입니다. 나중에 디렉토리 작성의 편의를 위해 이 파일의 이름을 wxpay로 바꿉니다.

(2) 다음에서 WxPay.Api를 엽니다. lib 폴더 .php 파일에는 537행에 컬 네트워크 요청 구성 코드가 있습니다.

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
로그인 후 복사

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
로그인 후 복사

로 대체되어 cURL이 피어 인증서를 확인하지 못하도록 합니다.

(3) lib 폴더 아래의 WxPay.Config.php 파일을 엽니다. 25번째 줄부터 계정에 따라 기본 정보 설정을 완료합니다.

const APPID = '公众账号APPID';
const MCHID = '商户号';
const KEY = '商户支付密钥';
const APPSECRET = '公众帐号secert';
로그인 후 복사

(4) lib 아래의 WxPay.Notify.php 파일을 엽니다. 폴더, 79행의 코드:

if($needSign == true && 
$this->GetReturn_code($return_code) == "SUCCESS")
{
$this->SetSign();
}
로그인 후 복사

는 다음과 같이 변경됩니다.

if($needSign == true && 
$this->GetReturn_code() == "SUCCESS")
{
$this->SetSign();
}
로그인 후 복사

(5) 인증서 인증서 디렉터리를 열고 내부의 두 인증서를 자신의 결제 인증서로 바꿉니다.

관련 권장 사항: "PHP 튜토리얼"

2. 공개 계정 배경 설정

(1) 웹 페이지 승인 도메인 이름을 구성합니다. 내 도메인 이름은 (xy.chuyin.ren)입니다. 2) 구성 결제 승인 디렉터리, 도메인 이름은 (xy.chuyin.ren), 이 도메인 이름이 가리키는 디렉터리의 weixinopen/ 폴더에 데모를 넣었습니다. 데모의 jsapi.php 파일은 다음 위치에 있습니다. example/ 디렉터리이므로 결제 승인 디렉터리는 다음과 같습니다. xy .chuyin.ren/weixinopen/wxpay/example/

PHP WeChat 결제 프로세스는 무엇입니까?


3. 결제 프로세스

결제 시작에서 jsapi.php 파일을 엽니다. 여기에서 모든 처리가 완료됩니다. PHP WeChat 결제 프로세스는 무엇입니까?

(1) 사용자 openid 가져오기

이전에 APPID 및 APPSecert를 구성했으므로 여기서 처리할 필요가 없습니다.

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
로그인 후 복사

여기에서 초기화된 JsApiPay() 클래스는 먼저 객체를 얻습니다. 파일은 example/ 디렉터리의 WxPay.JsApiPay.php에 해당합니다. GetOpenid() 메서드를 호출하면 자동으로 자체 openID를 얻습니다.

(2) 통합 주문

//②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
echo &#39;<font color="#f00"><b>统一下单支付单信息</b></font><br/>&#39;;
printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);
로그인 후 복사

주문 정보 및 결제 콜백 기능을 구성하는 WxPay.Api.php의 24행에 있는 UnifiedOrder() 메소드에 해당합니다. 여기에서 몇 가지 매개변수를 수정해야 합니다.

A. :

$input->SetBody("test");
로그인 후 복사

B. 주문번호

$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
로그인 후 복사

C. 결제 금액

$input->SetTotal_fee("1");
로그인 후 복사

D. 결제 확인 링크

는 inform.php 파일 위치로 설정되어 있으므로 http://xy로 설정했습니다. chuyin.ren /weixinopen/wxpay/example/notify.php

다른 주소도 쓸 수 있습니다. 물론 결제 승인 도메인 이름에 있어야 하며, 결제가 성공한 후에는 자동으로 지정된 방법으로 콜백됩니다. 링크를 통해 판단 및 데이터베이스 작업을 수행할 수 있습니다.

$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
로그인 후 복사

E. 추가 매개변수

$input->SetAttach("test");
로그인 후 복사

추가 매개변수는 입력할 수도 있고 입력하지 않을 수도 있습니다. 입력할 경우 문자열에 공백을 두지 않는 것이 좋습니다.

이때 결제를 클릭하시면 결제가 성공됩니다.

(3) 결제 시작

<script type="text/javascript">
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
&#39;getBrandWCPayRequest&#39;,
<?php echo $jsApiParameters; ?>,
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
}
);
}
 
function callpay()
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener(&#39;WeixinJSBridgeReady&#39;, jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent(&#39;WeixinJSBridgeReady&#39;, jsApiCall); 
document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, jsApiCall);
}
}else{
jsApiCall();
}
}
</script>
로그인 후 복사

Pay Now 버튼을 클릭하여 callpay() 함수를 호출하면 jsApiCall() 함수가 호출되어 결제 프로그램이 열립니다.

jsApiCall() 함수는 작업의 모든 단계를 모니터링합니다.

PHP WeChat 결제 프로세스는 무엇입니까?

res.err_msg는 프런트 엔드에서 판단한 결제 취소를 나타내는 get_brand_wcpay_request:cancel이고, es.err_msg는 get_brand_wcpay_request:ok를 나타내는 get_brand_wcpay_request:ok입니다. 프론트엔드에서 결제 성공 여부를 판단하면 이를 기반으로 결제 성공 페이지로 이동합니다.

PHP WeChat 결제 프로세스는 무엇입니까?(4) 성공 콜백 지원

프런트엔드 jsApiCall() 함수를 통해 결제 결과를 모니터링할 수 있지만 이는 신뢰할 수 없습니다. 결제 성공 여부를 확인하려면 inform.php를 통해 비즈니스 로직을 처리해야 한다. 결제 확인 링크 SetNotify_url()은 이전에 구성되었습니다. 결제가 완료된 후 WeChat 서버는 링크에 따라 자동으로 inform.php 파일을 요청하고 이 파일을 엽니다. 실제로 이 파일의 주요 코드는 2개뿐입니다. 줄:

$notify = new PayNotifyCallBack();
$notify->Handle(false);
로그인 후 복사

다음을 따르세요. WxPay.Notify.php 클래스 파일의 Handle() 함수로 이동하세요.

/**
 * 
 * 回调入口
 * @param bool $needSign  是否需要签名输出
 */
final public function Handle($needSign = true)
{
$msg = "OK";
//当返回false的时候,表示notify中调用NotifyCallBack回调失败获取签名校验失败,此时直接回复失败
$result = WxpayApi::notify(array($this, &#39;NotifyCallBack&#39;), $msg);
if($result == false){
$this->SetReturn_code("FAIL");
$this->SetReturn_msg($msg);
$this->ReplyNotify(false);
return;
} else {
//该分支在成功回调到NotifyCallBack方法,处理完成之后流程
$this->SetReturn_code("SUCCESS");
$this->SetReturn_msg("OK");
}
$this->ReplyNotify($needSign);
}
로그인 후 복사

기본 코드:

$result = WxpayApi::notify(array($this, &#39;NotifyCallBack&#39;), $msg);
然后来到WxPay.Api.php文件的第411行,notify()函数:
/**
 * 
 * 支付结果通用通知
 * @param function $callback
 * 直接回调函数使用方法: notify(you_function);
 * 回调类成员函数方法:notify(array($this, you_function));
 * $callback  原型为:function function_name($data){}
 */
public static function notify($callback, &$msg)
{
//获取通知的数据
$xml = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];
//file_put_contents(&#39;log.txt&#39;,$xml,FILE_APPEND);
//如果返回成功则验证签名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}
return call_user_func($callback, $result);
}
로그인 후 복사
The $xml=$GLOBALS['HTTP_RAW_POST_DATA'] 여기에 반환된 결과는 다음과 같습니다. 결제가 성공한 후 사용자가 제공하는 문자열입니다. xml 형식입니다.

여기에 반환된 xml 데이터를 기록하고 열어서 확인할 수 있습니다. $out_trade_no는 결제 전 설정한 주문 번호이고, $attach는 추가 매개변수 설정입니다.

주문번호를 받은 뒤 데이터베이스의 데이터 변경 등 결제 성공 후 로직을 바로 아래에 작성했습니다.

이렇게 WeChat 결제의 JsApi 결제를 대략적으로 분석합니다.

PHP WeChat 결제 프로세스는 무엇입니까?

위 내용은 PHP WeChat 결제 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

DeepSeek 이미지 생성 자습서 DeepSeek 이미지 생성 자습서 Feb 19, 2025 pm 04:15 PM

Deepseek : 강력한 AI 이미지 생성 도구! DeepSeek 자체는 이미지 생성 도구가 아니지만 강력한 핵심 기술은 많은 AI 페인팅 도구를 지원합니다. DeepSeek을 사용하여 이미지를 간접적으로 생성하는 방법을 알고 싶으십니까? 계속 읽으십시오! DeepSeek 기반 AI 도구로 이미지 생성 : 다음 단계에서는 다음 도구를 사용하도록 안내합니다. AI 페인팅 도구 시작 : DeepSeek 기반 AI 페인팅 도구를 검색하고 열면 "Simple AI"를 검색하십시오). 도면 모드 선택 : "AI 드로잉"또는 유사한 함수를 선택하고 "애니메이션 아바타", "풍경"과 같은 필요에 따라 이미지 유형을 선택하십시오.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? Feb 07, 2025 am 11:57 AM

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

Gateio 중국 공식 웹 사이트 Gate.io 거래 플랫폼 웹 사이트 Gateio 중국 공식 웹 사이트 Gate.io 거래 플랫폼 웹 사이트 Feb 21, 2025 pm 03:06 PM

2013 년에 설립 된 주요 암호 화폐 거래 플랫폼 인 Gate.io는 중국 사용자에게 완전한 공식 중국 웹 사이트를 제공합니다. 이 웹 사이트는 스팟 거래, 선물 거래 및 대출을 포함한 광범위한 서비스를 제공하며 중국 인터페이스, 풍부한 자원 및 커뮤니티 지원과 같은 특별한 기능을 제공합니다.

문자열로 모음을 계산하는 PHP 프로그램 문자열로 모음을 계산하는 PHP 프로그램 Feb 07, 2025 pm 12:12 PM

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

Gateio Exchange App Old 버전 Gateio Exchange App Old 버전 다운로드 채널 Gateio Exchange App Old 버전 Gateio Exchange App Old 버전 다운로드 채널 Mar 04, 2025 pm 11:36 PM

Gateio Exchange 앱은 공식, 제 3 자 애플리케이션 시장, 포럼 커뮤니티 및 기타 채널을 다루는 기존 버전의 채널을 다운로드합니다. 또한 기존 버전을 쉽게 얻고 새로운 버전 또는 장치 호환성을 사용하여 불편 함 문제를 해결하는 데 도움이됩니다.

참깨 오픈 도어 로그인 등록 입구 게이트 .io 교환 등록 공식 웹 사이트 입구 참깨 오픈 도어 로그인 등록 입구 게이트 .io 교환 등록 공식 웹 사이트 입구 Mar 04, 2025 pm 04:51 PM

Gate.io (Sesame Open Door)는 세계 최고의 암호 화폐 거래 플랫폼입니다. 자습서는 계정 등록 및 로그인, KYC 인증, 화폐 및 디지털 통화 재충전, 거래 쌍 선택, 한도/시장 거래 주문 및 주문 및 거래 기록보기와 같은 단계를 다루고 Cryptocurrency 거래를 위해 GATE.IO 플랫폼을 신속하게 시작할 수 있도록 도와줍니다. 초보자이든 베테랑이든,이 튜토리얼에서 혜택을 받고 Gate.io 거래 기술을 쉽게 마스터 할 수 있습니다.

See all articles