ThinkPHP는 Alipay 인터페이스 기능을 구현합니다. example_php example
이 기사의 예에서는 ThinkPHP가 Alipay 인터페이스 기능을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
최근 시스템 작업을 할 때 온라인 결제 기능을 구현해야 했는데요, 망설임 없이 Alipay의 인터페이스 결제 기능을 선택했습니다. 여기서는 즉시 결제 인터페이스를 사용했습니다.
1. Alipay 인터페이스 패키지를 다운로드하세요
다운로드 주소: https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash
다운로드 방법은 자세히 설명하지 않겠습니다~~
2. 인터페이스 패키지 파일을 재구성합니다. 이 단계는 매우 중요하다고 생각됩니다. 다운로드한 인터페이스 패키지 파일에는 여러 언어의 소스 코드가 있습니다.
다음 파일이 포함된 create_direct_pay_by_user-PHP-UTF-8이라는 인터페이스 파일을 선택합니다.
이미지 파일에는 Alipay와 관련된 일부 로고 사진이 포함되어 있습니다. 지금은 lib 파일이 매우 중요하며 전체 인터페이스의 핵심 클래스 파일입니다.
alipay.config.php는 관련 파라미터 설정 파일입니다alipayapi.php는 Alipay 인터페이스 항목 파일입니다
notify_url.php는 서버 비동기 알림 페이지 파일입니다.
return_url.php는 페이지 이동 동기화 알림 파일입니다.
ThinkPHP 프레임워크 파일 아래에서 Extend를 찾아 입력한 다음 Vendor를 입력합니다. Vendor 폴더 아래에 Alipay라는 새 폴더를 만들고 Alipay를 타사 클래스 라이브러리로 도입한 다음 Alipay 인터페이스 파일에 lib 파일을 복사합니다. package.모든 파일은 총 4개로 구성되어 있습니다.
alipay_core.function.php는 Corefunction.php로 이름이 변경되었습니다.
alipay_md5.function.php는 Md5function.php로 이름이 변경되었습니다.
alipay_notify.class.php는 Notify.php로 이름이 변경되었습니다.
alipay_submit.class.php는 Submit.php로 이름이 변경되었습니다.
그런 다음 Submit.php 파일을 열고 다음 코드를 제거하세요.
require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");마찬가지로 Notify.php 파일을 열고 다음 두 코드 조각을 제거합니다. require_once("alipay_core.function.php");
require_once("alipay_md5.function.php"); 프로젝트에서 인터페이스 파일을 호출할 때 공급업체를 통해 4개의 핵심 파일을 모두 전달하기 때문에 위 두 파일에서 이 두 가지 코드를 제거해야 하는 이유는 무엇입니까? . 따라서 더 이상 가져오기가 필요하지 않습니다.
이제 Alipay 인터페이스 패키지와 관련된 핵심 클래스 라이브러리 구성이 기본적으로 완료되었습니다. 이제 프로젝트 호출을 시작하세요.
3. 프로젝트에서 Alipay 인터페이스를 호출합니다
통화는 두 단계로 나누어집니다.1. 구성 파일의 Conf/Config.php 파일에서 Alipay 관련 매개 변수를 구성합니다
'alipay_config'=>배열(
'partner' =>'20********50', //Alipay 인터페이스를 성공적으로 신청한 후 얻은 PID는 다음과 같습니다.
'key'=>'9t****************ie',//Alipay 인터페이스를 성공적으로 신청한 후 얻은 키는 다음과 같습니다
'sign_type'=>strtoupper('MD5'),
'input_charset'=> strtolower('utf-8'),
'cacert'=> getcwd().'\cacert.pem',
'운송'=> 'http',
),
//위 구성 항목은 인터페이스 패키지의 alipay.config.php 파일에서 복사하여 구성합니다.
'alipay' =>배열(
//판매자 알리페이 계정입니다. 인터페이스 신청시 등록하신 알리페이 계정입니다
'seller_email'=>'pay@xxx.com',
//다음은 프로젝트 Pay 컨트롤러의 informurl 메소드에 제출된 비동기 알림 페이지 URL입니다.
'notify_url'=>'http://www.xxx.com/Pay/notifyurl',
//다음은 프로젝트 Pay 컨트롤러의 returnurl 메소드에 제출되는 페이지 이동 알림 URL입니다.
'return_url'=>'http://www.xxx.com/Pay/returnurl',
//결제 성공 후 점프하는 페이지입니다. 프로젝트의 User 컨트롤러인 myorder 메소드로 점프하고 Paid(Paid List) 매개변수를 전달합니다.
'successpage'=>'User/myorder?ordtype=payed',
//결제 실패 시 점프하는 페이지입니다. 프로젝트의 사용자 컨트롤러인 myorder 메소드로 점프하고 unpay(미지급 목록) 매개변수를 전달합니다.
'errorpage'=>'User/myorder?ordtype=unpay',
),
2. 다음과 같이 새로운 PayAction 컨트롤러 코드를 생성합니다
//클래스 초기화 메소드에서 관련 클래스 라이브러리를 소개합니다. 공개 함수 _initialize() {
Vendor('Alipay.Corefunction')
Vendor('Alipay.Md5function')
Vendor('Alipay.Notify')
판매자('Alipay.Submit')
}
//doalipay 방식
공개 함수 doalipay(){
// require_once("alipay.config.php")
// require_once("lib/alipay_submit.class.php")
//여기서 TP의 C 함수를 통해 구성 항목 매개변수를 읽고 이를 $alipay_config에 할당합니다.
$alipay_config=C('alipay_config');
$pay_type = "1"; //결제 유형 //필수, 수정 불가
$notify_url = C('alipay.notify_url') // 서버 비동기 알림 페이지 경로
$return_url = C('alipay.return_url'); //페이지 이동 동기화 알림 페이지 경로
$seller_email = C('alipay.seller_email');//판매자의 Alipay 계정이 필요합니다
$out_trade_no = $_POST['trade_no']; // 판매자 주문 번호는 결제 페이지의 양식을 통해 전달되므로 고유해야 합니다!
$subject = $_POST['ordsubject']; //주문 이름 //필수 결제 페이지의 양식을 통과하세요
$total_fee = $_POST['ordtotal_fee'] //결제 금액 //필수 결제 페이지의 양식을 통과하세요
$body = $_POST['ordbody']; //주문 설명은 결제 페이지의 양식을 통해 전달됩니다.
$show_url = $_POST['ordshow_url']; //결제 페이지의 양식을 통해 제품 표시 주소가 전달됩니다.
$anti_phishing_key = "";//피싱방지 타임스탬프 //사용을 원하시면 클래스 파일 submit 내 query_timestamp 함수를 호출해주세요
$exter_invoke_ip = get_client_ip() //클라이언트의 IP 주소
//요청할 매개변수 배열을 구성합니다. 변경이 필요하지 않습니다.
$매개변수 = 배열(
"서비스" => "create_direct_pay_by_user",
"파트너" => Trim($alipay_config['partner']),
"결제_유형" => $결제_유형,
"notify_url" => $notify_url,
"return_url" => $return_url,
"판매자_이메일" => $판매자_이메일,
"out_trade_no" => $out_trade_no,
"주제" => $주제,
"total_fee" => $total_fee,
"본문" "본문" => $body,
"show_url" => $show_url,
"anti_phishing_key" => $anti_phishing_key,
"exter_invoke_ip" => $exter_invoke_ip,
"_input_charset" => 트림(strtolower($alipay_config['input_charset']))
);
//요청 생성
$alipaySubmit = 새로운 AlipaySubmit($alipay_config)
$html_text = $alipaySubmit->buildRequestForm($parameter,"post", "Confirm")
에코 $html_text; }
함수 informurl(){
//require_once("alipay.config.php")
//require_once("lib/alipay_notify.class.php")
//여기에서는 여전히 C 함수를 사용하여 구성 항목을 읽고 이를 $alipay_config에 할당합니다
$alipay_config=C('alipay_config')
//알림 확인 결과 계산
$alipayNotify = 새로운 AlipayNotify($alipay_config)
$verify_result = $alipayNotify->verifyNotify()
If($verify_result) {
//인증 성공
//Alipay의 알림 반환 매개변수를 가져옵니다. 기술 문서의 서버 비동기 알림 매개변수 목록을 참조하세요
$ OUT_TRADE_NO = $ _post ['Out_trade_no'] // $trade_no = $_POST['trade_no']; $ Trade_status = $ _post ['trade_status'] // 거래 상태
$total_fee = $_POST['total_fee']; $ Notify_id = $ _post ['notify_id'] // 인증ID를 알립니다.
$ Notify_time = $ _post ['notify_time'] // 알림 전송 시간입니다. 형식은 yyyy-MM-dd HH:mm:ss입니다.
> > $매개변수 = 배열(
"out_trade_no" => $out_trade_no, //판매자 주문 번호
"trade_no" => $trade_no, //알리페이 거래번호
"total_fee" => $total_fee, //거래 금액
"trade_status" => $trade_status, //거래 상태
"notify_id" => $notify_id, //알림 확인 ID입니다.
"notify_time" => $notify_time, //알림 전송 시간.
"buyer_email" => $buyer_email, //구매자의 알리페이 계정
);
If($_POST['trade_status'] == 'TRADE_FINISHED') {
> ~ ~ 주문 처리($parameter)
//주문 처리를 진행하고 Alipay에서 반환된 매개변수를 보냅니다.
~ ~ Echo "성공" // 수정하거나 삭제하지 마세요
//확인 실패
에코 "실패"
}
함수 returnurl(){
// 헤드를 다루는 방법은 위의 두 가지 방법과 동일합니다.
$alipay_config=C('alipay_config')
$alipayNotify = new AlipayNotify($alipay_config);//알림 확인 결과 계산
$verify_result = $alipayNotify->verifyReturn()
If($verify_result) {
//인증 성공
//Alipay의 알림 반환 매개변수를 가져옵니다. 기술 문서의 페이지 점프 동기화 알림 매개변수 목록을 참조하세요
$out_trade_no = $_GET['out_trade_no']; > $trade_no = $_GET['trade_no'] //알리페이 거래번호
$trade_status = $total_fee = $_GET['total_fee'] //거래금액
$notify_id = $_GET['notify_id ']
$ Notify_time = $ _get ['notify_time'] // 알림 전송 시간입니다.
$buyer_email = $_GET['buyer_email']; //구매자의 알리페이 계정
$매개변수 = 배열(
"out_trade_no" => $out_trade_no, //판매자 주문 번호
"trade_no" => $trade_no, //알리페이 거래번호
"total_fee" => $total_fee, //거래 금액
"trade_status" => $trade_status, //거래 상태
"notify_id" => $notify_id, "인증ID를 알려드립니다."
"notify_time" => $notify_time, //알림 전송 시간.
"buyer_email" => $buyer_email, //구매자의 알리페이 계정
);
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
If(!checkorderstatus($out_trade_no)){
orderhandle($parameter); //주문을 처리하고 Alipay에서 반환된 매개변수를 전송합니다.
}
$this->redirect(C('alipay.successpage'));//구성 항목에 구성된 결제 성공 페이지로 이동합니다.
}else {
echo "trade_status=".$_GET['trade_status']
$this->redirect(C('alipay.errorpage'));//구성 항목에 구성된 결제 실패 페이지로 이동
}
}else {
//확인 실패
//디버깅을 원하시면 alipay_notify.php 페이지의 verifyReturn 함수를 참고해주세요
echo "결제 실패!"; }
}
}
?>
3. 결제 처리 과정에서 사용해야 하는 여러 함수들을 프로젝트의 Common/common.php에 작성해 놓았기 때문에 해당 함수들을 수동으로 호출하지 않고도 바로 사용할 수 있습니다. :
//온라인 거래 주문 결제 처리 기능
//기능: 결제 인터페이스에서 반환된 데이터를 기반으로 주문이 성공적으로 결제되었는지 확인합니다.
//반환값: 주문이 성공적으로 결제되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
함수 checkorderstatus($ordid){
$Ord=M('주문목록')
$ordstatus=$Ord->where('ordid='.$ordid)->getField('ordstatus')
If($ordstatus==1){
true를 반환합니다. }그밖에{
false 반환; }
}
//처리 순서 함수
//주문 상태를 업데이트하고 주문 결제 후 반환된 데이터를 씁니다.
함수 orderhandle($parameter){
$ordid=$parameter['out_trade_no']
$data['지불_trade_no'] =$parameter['trade_no']
$data['pay_trade_status'] =$parameter['trade_status']
$data['결제_notify_id'] =$parameter['notify_id']
$data['결제_notify_time'] =$parameter['notify_time']
$data['결제_구매자_이메일'] =$parameter['구매자_이메일']
$data['ordstatus'] =1
$Ord=M('주문목록')
$Ord->where('ordid='.$ordid)->저장($data)
}
//임의의 고유 주문 번호를 얻습니다.
함수 getordcode(){
$Ord=M('주문 목록')
$숫자 = 범위(10,99)
셔플($숫자)
$code=array_slice($numbers,0,4)
$ordcode=$code[0].$code[1].$code[2].$code[3]
$oldcode=$Ord->where("ordcode='".$ordcode."'")->getField('ordcode')
If($oldcode){
getordcode()
}그밖에{
$ordcode 반환; }
}
4. 요약
1. 인터페이스 패키지의 lib 파일에 있는 파일을 Vendor에 복사한 후 호출의 편의를 위해 TP 사양의 명명 규칙에 따라 이름을 변경합니다. 물론 다른 이름으로 변경할 수도 있습니다. 2. 결제 작업 실행(doalipay), 비동기 반환 결과 처리(notifyurl), 점프 반환 결과 처리(returnurl)의 세 가지 결제 인터페이스의 핵심 페이지를 PayAction 컨트롤러에 작성합니다.
3. 결제 제출 페이지에서는 제출하기 전에 숨겨진 필드 방식을 통해 전달될 일부 매개변수의 내용을 결합할 수 있습니다. 예를 들어, 금액이 먼저 계산되고, 주문 이름, 주문 설명 등이 표시됩니다. 먼저 문자열과 결합됩니다. 그런 다음 doalipay 방식에서는 양식을 직접 구성하고 매개변수를 전달하고 직접 제출하기만 하면 됩니다.
4. 결제 반환 후 처리에는 비동기식 및 점프 방식 모두에서 해당 판단 및 처리가 필요하므로 이러한 판단 및 처리를 사용자 정의 함수에 작성하여 함수를 Yes로 호출하는 한 코드를 더 명확하게 만듭니다. .
5. inform_url 및 return_url 모드의 반환 URL은 Alipay 플랫폼에서 프로젝트 페이지로 반환되며 상대 경로를 사용할 수 없으므로 http://xxxxxxx와 같은 절대 경로를 사용해야 합니다.
위 코드는 ThinkPHP3.0에서도 정상적으로 사용 가능합니다! !
더 많은 thinkPHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "
ThinkPHP 입문 튜토리얼" 및 "
ThinkPHP의 일반적인 방법 요약
핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

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

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

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

뜨거운 주제











예, TokenPocket을 통해 Alipay 또는 WeChat으로 토큰을 인출할 수 있습니다. TokenPocket 앱을 열고 "지갑" 탭을 선택하세요. 인출하려는 토큰을 선택하고 "인출"을 클릭한 후 "Alipay" 또는 "WeChat"을 선택하세요. 출금금액을 입력하고 출금주소를 확인하세요. 처리 수수료를 지불하고 출금 요청을 확인한 후 출금이 완료될 때까지 몇 분에서 몇 시간 정도 기다리십시오.

BitgetWallet을 사용하여 Alipay로 자금을 인출하는 단계는 다음과 같습니다. BitgetWallet을 열고 비밀번호를 입력하거나 지문을 사용하여 잠금을 해제하세요. 암호화폐를 선택하려면 출금을 클릭하세요. Alipay 정보를 입력하고 결제계좌번호와 금액을 입력하세요. 네트워크 선택 Alipay 결제 수단과 일치하는 네트워크를 선택하세요. 수수료 설정 수수료 금액을 확인하고 수락하세요. 검사정보를 확인 및 제출한 후 확인을 클릭하세요. 확인을 기다리는 중 블록체인 네트워크의 확인을 기다립니다. 수령된 자금 인출 금액은 Alipay 결제 계좌로 입금됩니다.

이 기사는 중국의 Ouyi Okx 앱의 안전한 다운로드에 대한 자세한 안내서를 제공합니다. 국내 앱 스토어의 제한으로 인해 사용자는 OUYI OKX의 공식 웹 사이트를 통해 앱을 다운로드하거나 공식 웹 사이트에서 제공 한 QR 코드를 사용하여 스캔 및 다운로드하는 것이 좋습니다. 다운로드 프로세스 중에 공식 웹 사이트 주소를 확인하고 응용 프로그램 권한을 확인하고 설치 후 보안 스캔을 수행하며 2 요인 확인을 활성화하십시오. 사용하는 동안 현지 법률 및 규정을 따르고, 안전한 네트워크 환경을 사용하고, 계정 보안을 보호하고, 사기에 대해 경계하고, 합리적으로 투자하십시오. 이 기사는 참조 용이며 투자 조언은 자신의 위험에 처해 있습니다.

BitgetWallet을 통해 Alipay 또는 WeChat으로 자금을 인출하는 방법은 무엇입니까? 1. BitgetWallet 결제 플랫폼에 로그인합니다. 2. 출금할 자산을 선택합니다. 3. "출금" 버튼을 클릭합니다. 4. 출금 방법(Alipay 또는 WeChat)을 선택합니다. 6. 확인하고 제출하세요.

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

문제 설명 PHP를 사용하여 Alipay EasysDK를 호출 할 때, 공식 코드에 따라 매개 변수를 작성한 후, 작동 중에 오류 메시지 가보고되었습니다. "정의되지 않은 ...

Alipay PHP ...

Cryptocurrency World에 새로운 투자자에게는 가상 코인을 구매하는 방법을 이해하는 것이 중요합니다. 이 기사는 올바른 교환을 선택하고 계정 등록, 기금을 예금 및 구매 이더 리움 (ETH)을 구매하는 방법에 대한 자세한 단계를 다루는 초보자에게 포괄적 인 가이드를 제공하도록 설계되었습니다. 이 가이드를 따르면 초보자는 가상 통화 투자 여정을 안전하고 편리하게 시작하고 2025 년 이후에 잠재적 인 투자 기회를 포착 할 수 있습니다.
