>백엔드 개발 >PHP 튜토리얼 >PHP가 Alipay 결제 프로세스를 구현하는 방법 소개

PHP가 Alipay 결제 프로세스를 구현하는 방법 소개

零到壹度
零到壹度원래의
2018-04-12 10:51:127592검색

이 글의 내용은 PHP가 Alipay 결제 프로세스를 구현하는 방법에 대한 소개입니다. 도움이 필요한 친구가 참고할 수 있습니다.

1 먼저 제3자 결제에 대해 이야기해 보겠습니다.

소위 제3자 결제는 일부 주요 은행과 계약을 체결하고 특정 강도와 신뢰성을 보장하는 제3자 독립 기관에서 제공하는 거래 플랫폼입니다.

현재 온라인에서 가장 일반적인 결제 시장에는 Alipay, Tenpay, 온라인 뱅킹, Yibao Pay 등이 포함됩니다. 웹사이트에서 제3자 결제를 구현해야 하는 경우 먼저 제3자 계정을 신청하고 계약이 발효된 후 계약을 체결해야 합니다. 제3자 결제 플랫폼은 온라인 결제 기능을 활성화합니다.

2. 제3자 결제 원칙

2.1 사용자가 쇼핑몰 웹사이트에 주문 확인 요청을 시작합니다

2.2 쇼핑몰 웹사이트가 요청을 받습니다. 주문 데이터를 데이터베이스나 기타 저장 매체에 저장합니다

 2.3 주문 금액 및 기타 정보가 표시되는 주문 확인 페이지로 돌아갑니다

 2.4 사용자가 결제를 확인하고 지불 요청을 시작합니다. 참고: 결제 요청은 쇼핑몰 웹사이트가 아닌 결제 게이트웨이(Alipay, 온라인 뱅킹 등)로 전송됩니다.

 2.5 결제 페이지 표시

 2.6 사용자가 인증 정보(계정 비밀번호 등)를 입력하고 제출합니다

 2.7 여기서는 두 단계가 있습니다. 하나는 차감이 성공한 후입니다. , 페이지는 결제 결과 페이지(사용자에게 표시됨)로 이동하고, 다른 하나는 결제 알림입니다. 이 두 단계는 결제 알림을 받은 후 동시에 실행될 수 있습니다. 확인 규칙에 따라 정보를 수정하고 해당 변경을 수행합니다(예: 유효한 경우 주문을 유료 상태로 변경하고 유효하지 않은 경우 불법 요청 정보가 기록됩니다).

Alipay를 예로 들어보겠습니다. Alipay 인터페이스를 웹사이트에 통합하려면 먼저 Alipay 계정이 있어야 하며 Alipay에 온라인 결제 사업을 신청하고 계약을 체결해야 합니다. 계약이 발효되면 Alipay는 웹사이트에 파트너 ID와 보안 확인 코드를 제공합니다. 이 두 가지를 통해 Alipay 인터페이스 문서에 따라 Alipay 인터페이스를 개발할 수 있습니다. 각 단계는 4개와 7개뿐입니다. 단계에는 쇼핑몰과 결제 게이트웨이 간의 정보 교환이 포함됩니다. 4단계에서는 결제 게이트웨이(Alipay)로 데이터를 보내는 것을 의미합니다. 7단계에서는 확인 게이트웨이가 웹사이트의 특정 주소를 요청하여 확인 규칙에 따라 정보를 확인합니다. 우리는 거의 모든 결제를 개발하고 있습니다. 인터페이스에 관해서는 이 두 부분의 개발에 중점을 두고 있습니다. 결제 인터페이스의 원리를 이해한다면 결제 인터페이스를 개발하는 것은 어렵지 않을 것입니다.

사실 사진을 보면 우리가 한 일은 매우 제한적입니다. 기본적으로 1~3번, 주문 데이터를 생성한 후 내부적으로 Alipay를 통해 인증합니다(물론 일부 장바구니 및 주문 단계는 생략) ) 기본적으로 프로세스가 종료됩니다.

3. Alipay 인터페이스 개발

3.1 인터페이스 소개 및 테스트

현재 Alipay는 거래 보장, 표준 즉시 입금, 이중 기능 등 여러 인터페이스를 제공하지만 기능에는 약간의 차이가 있을 뿐 통합 방법은 동일합니다. Alipay와 계약을 체결한 후 통합을 완료하려면 몇 가지 단계를 더 거쳐야 합니다.

"셀프 서비스 통합을 원합니다"에서 다음에 표시되는 링크를 선택하고 클릭하여 기술 문서를 다운로드하세요.

다운로드한 파일에는 표준 Alipay 거래 서비스 인터페이스, 판매자 도구, 인터페이스 통합 가이드 및 기타 인터페이스 문서뿐만 아니라 여러 언어로 작성된 데모가 포함되어 있습니다. 인터페이스 문서에 따른 규칙에 따라 새로운 것을 개발할 수 있습니다. 데모를 기반으로 이를 다시 수정하고 웹사이트에 통합할 수 있습니다. 전체 디버깅을 완료하려면 결제 인터페이스 개발이 공용 네트워크(외부 네트워크를 통해 서버에 액세스할 수 있어야 함)에서 이루어져야 한다는 점에 유의해야 합니다. 외부 네트워크에서 서버에 접속할 수 없는 경우 결제 알림을 받을 수 없습니다. 데모에서 각 파일의 역할 ┈┈┈┈┈┈┈┈┈┈ ┈┈┈┈Class 폴더 │ │

│ ├alipay_core.function.php ┈┈┈┈┈┈Alipay 인터페이스 공용 함수 파일

│ │ │ ├alipay_notify.class.php┈┈ ┈┈┈┈┈Alipay 알림 처리 클래스 파일
│ │
│ ├alipay_submit.class.php┈┈┈┈┈┈┈Alipay 인터페이스에서 클래스 파일 제출 요청

│ │

│ └ alipay_md5.function.php┈┈┈┈┈ ┈┈Alipay 인터페이스 MD5 기능 파일 ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈로그 파일

├alipay.config .php┈┈┈┈┈┈┈ ┈┈┈┈┈기본 구성 클래스 파일 ├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈Alipay 인터페이스 항목 파일

├notify_url.php ┈┈┈┈┈┈┈┈ ┈┈┈┈┈서버 비동기 알림 페이지 파일

├return_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈페이지 이동 동기화 알림 파일

├cacert.pem ┈┈┈┈┈┈┈┈┈ ┈┈┈┈┈┈CURL에서 SSL CA 인증서 파일 확인 사용

└readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈Ins 설명 텍스트







여기에서 다운로드했습니다(리소스 디렉토리 유료 폴더 참조). 디버깅을 용이하게 하기 위해 여러 파일을 추가 및 수정했으며, 주문 정보를 저장하기 위해 데이터 테이블을 추가하여 구성 파일을 수정했습니다. 테스트 과정.



 alipay_config.php는 기본 정보 구성 파일입니다. Alipay 백엔드에서 얻은 PID와 Key를 구성 파일에 작성해야 합니다.





구성 항목:


 박스 안의 데이터는 우리가 집중적으로 수정해야 할 데이터입니다. 결제 알림 주소와 반품 주소의 차이점은 이전에 언급한 바와 같습니다. 7단계에는 결제 결과 페이지와 결제 알림 정보가 있으며, 사용자가 결제를 완료하면 결제 결과 페이지가 자동으로 이 주소로 이동합니다. . 반품 주소($return_url)는 다음과 같습니다.

$host = $_SERVER['HTTP_HOST'];
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址: 
$alipay_config['partner'] = '****************';

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
$alipay_config['seller_id'] = $alipay_config['partner'];

// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址: 
$alipay_config['key'] = '****************************';

// 服务器异步通知页面路径  需 
$alipay_config['notify_url'] = "
 
// 页面跳转同步通知页面路径 需 
$alipay_config['return_url'] = "http://".$host."/paycallback/return";

// 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
$alipay_config['exter_invoke_ip'] = "182.92.27.46";





결제 알림 주소도 사용자의 결제입니다. 완료 이후 Alipay에서 주소($notify_url)를 요청하고, 하지만 결제 알림은 Alipay 서버에서 직접 요청하는 것이므로 사용자에게는 표시되지 않습니다. 이 두 주소는 http로 시작하는 전체 경로 형식이어야 합니다. 테스트 프로세스를 완료하려면 /pay/alipay/notify_url.php를 여기에 다시 작성하고 $notify_url을 이 파일에 액세스할 수 있는 URL로 설정합니다. 이러한 항목을 구성한 후에는 데이터베이스 스크립트(pay/orders.sql)에 따라 데이터 테이블이 생성됩니다. 그리고 데이터베이스의 구성 정보에 따라 mysql_config.php를 수정하면 Alipay에서 제공하는 데모만 수정하면 결제 요청 생성(4단계)이 완료됩니다. 여기서 결제 홈페이지 및 기타 페이지가 변경됩니다. 소스 코드 패키지의 급여 디렉토리). 먼저 테스트해 봅시다:





"주문정보"가 추가되었습니다 ".

"결제 확인" 버튼이나 결제 확인 링크를 클릭하시면 알리페이 페이지로 이동됩니다. 버튼을 클릭하시면 해당 정보가 양식을 통해 결제 게이트웨이에 제출됩니다. POST. 결제 요청 데이터는 사용자가 볼 필요가 없으므로 여기서는 모두 숨겨진 필드에 기록됩니다. 결제 확인 링크는 URL을 통해 전달됩니다. Alipay 인터페이스는 POST 또는 GET 제출을 허용하므로 두 가지 방법 모두 허용됩니다. 매개변수를 결제 게이트웨이에 제출한 후 페이지가 결제 페이지로 이동합니다. 아래 그림을 참조하세요.



Alipay는 두 가지 결제 방법을 제공합니다. 하나는 Alipay 계정을 통해 결제하는 것이고, 다른 하나는 은행 카드 결제를 통해 결제하는 것입니다. . 예를 들어 은행 카드로 결제하도록 선택하고 이메일이나 휴대폰 번호를 입력한 후 다음 페이지로 이동하세요.



저희 빌링 Alipay는 거의 모든 은행 카드 결제를 지원하며, 신용카드와 지점 결제 방법도 있습니다. 해당 은행을 선택하고 안내에 따라 결제하세요. 결제가 완료되면 구성 파일에 구성한 $return_url 주소로 페이지가 돌아가고 "주문 상태"도 변경됩니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

참고: 테스트가 외부 네트워크에서 수행되지 않는 경우(즉, 결제 알림 주소는 외부 인터넷 접속이 불가능함), 결제 알림을 요청할 수 없으며 주문 상태가 자동으로 수정될 수 없습니다.


  3.2 Alipay 인터페이스 사양 및 코드 분석

  Alipay 인터페이스 사양은 /pay/doc/standard Alipay 거래 서비스 인터페이스(피싱 방지 웹사이트 전용)를 참조할 수 있습니다. 이미 비교적 자세한 지침이 포함되어 있는 PDF입니다.
 3.2.1 결제 요청 생성 방법

이전 테스트에서는 "결제 확인"을 클릭하여 Alipay의 결제 게이트웨이에 정보를 제출해야 하는지 생각해 볼 수 있습니다. . 요청 매개변수 목록은 표준 Alipay 거래 서비스 인터페이스(피싱 방지 웹사이트 전용)를 참조하세요. 3.2.2 PDF의 이러한 매개변수를 그대로 Alipay에 제출할 필요는 없습니다. 데이터 보안을 보장하기 위해 Alipay는 현재 데이터 변조를 방지하기 위해 MD5 서명을 사용합니다.
데이터를 제출하기 전에 특정 규칙에 따라 문자열로 제출할 데이터를 조합하고(인터페이스 문서 참조) 보안 검사 코드(키)를 추가하여 새 문자열을 생성한 다음 32를 생성해야 합니다. -MD5 서명을 통한 바이트 문자열, 결제 요청을 제출할 때 이 서명도 제출해야 합니다. 양식 소스 코드를 살펴보세요

Alipay는 요청 매개변수의 합법성을 확인한 후 결제 페이지가 표시됩니다. 그렇지 않으면 오류가 발생합니다. 메시지를 받습니다.

 3.2.2 결제 알림 확인 방법

사용자의 결제가 완료된 후 Alipay는 웹사이트의 결제 알림 주소를 요청합니다. (이 주소는 결제 요청 생성 시 매개변수로 전달되어야 합니다.) 반품 매개변수 목록은 표준 Alipay 거래 서비스 인터페이스(피싱 방지 웹사이트 전용)를 참조하세요. Pdf3.3.1. Alipay의 반환 데이터에도 서명 문자열이 있습니다(결제 요청과 동일한 서명 방법 사용). 결제 알림 파일에는 먼저 데이터에 서명하고 확인해야 합니다. 서명을 확인하는 것 외에도 알림의 진위를 확인하고 알림 확인을 위해 매개변수의 inform_id도 Alipay의 확인 게이트웨이 Alipay 시스템에 제출되어야 합니다. Alipay 시스템은 알림이 문자열 형식으로 전송되었는지 여부를 자체적으로 확인하며, 그렇지 않으면 서버에서 반환된 데이터를 확인하여 요청의 진위 여부를 확인합니다. 주문 데이터를 변경하고 알림 및 기타 작업을 이메일로 보낼 수 있습니다. 서명 확인과 관련하여 알림 파일의 소스 코드를 살펴볼 수 있습니다. 데모에서는 매개변수의 inform_id가 POST를 통해 Alipay에 제출되고 반환 데이터가 얻어집니다. 코드 조각:



핵심은 fsockopen 함수입니다. 이메일을 보낼 때 사용하는 방법은 이미 노출되어 있습니다. 이 함수를 통해 소켓 연결을 여는 것은 이전에 배운 fopen 함수와 비슷합니다. 그런 다음 파일 함수(fgets(), fgetss()를 사용할 수 있습니다. ), fputs(), fclose() feof() 등)을 사용하여 POST 모드에서 데이터를 제출하는 양식을 시뮬레이션하기 위해 코드에서 fputs()(fwrite()와 동일) 함수를 사용합니다. 마지막으로 fgets() 함수를 통해 반환된 데이터를 얻어 배열에 저장하고 마지막으로 확인합니다. 자세한 내용은 소스 코드를 참조하세요.

위 내용은 PHP가 Alipay 결제 프로세스를 구현하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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