M-Pesa C2B API 해설 페이지를 참조하여 동작의 분위기를 파악

6865 단어 결산m-pesa
배경.
M-Pesa공식 사이트 개발자 페이지에는 인증, 명령 ID, API 규격서가 있다.개발은 매우 편리하지만 최초의 단계로서의 문턱은 매우 높다.
이에 따라 케냐의 기술자들은 아래 해설 페이지를 보면서 C2의 API를 호출해 거래를 성사시켜 어떤 데이터를 보낼지 확인한다.
  • How to Develop Mpesa Integration to Website Using Safaricom C2B API
  • 컨디션
  • 리스 서버
  • PHP 7.3
  • MySQL 5.7
  • 공개 가능한 페이지 (외부에서 php를 호출하기 때문)
  • SSL(https 연결 필요)
  • .htaccess 파일 (필요에 따라 외부에서 접근할 수 있도록 설정)
  • 테스트용 shortcode와credentials 가져오기
  • 이니시에이터에 사용할 암호 사전 결정(최대 20자)

  • 로그인사이트 축소판 그림

  • 열기Test Credentials 생성 페이지
  • 에 "Shortcode 1"이 표시되므로 미리 기록됩니다.
  • 유효기간 3일
  • 가끔Shortcode 1Shortcode 2 모두 빈 칸으로 변한다.이 경우 "Initiator Security Password"를 입력하지 않고 Refresh 버튼을 누르면 표시될 수 있습니다.
  • 아래 "Initiator Security Password For? *"에서 "Test"를 선택하고 Initiator用のパスワード 가운데 "Generae Credentrials"
  • "를 넣습니다.
  • "Generated Initiator Security Credential:"아래에 텍스쳐가 표시되므로 보관

  • 데이터베이스에서 테이블 만들기
    CREATE TABLE mpesa_payments (
      id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
      Auto double,
      TransactionType VARCHAR(40),
      TransID  VARCHAR(40),
      TransTime VARCHAR(40),
      TransAmount double,
      BusinessShortCode VARCHAR(15),
      BillRefNumber VARCHAR(40),
      InvoiceNumber VARCHAR(40),
      ThirdPartyTransID VARCHAR(40),
      MSISDN VARCHAR(20),
      FirstName VARCHAR(60),
      MiddleName VARCHAR(60),
      LastName VARCHAR(60),
      OrgAccountBalance double
    ) DEFAULT CHARSET= utf8mb4
    ;
    
    validation용 URL 및 confirmation용 서버 준비
  • 대여 서버 등을 통해https를 통해 외부에서 접근할 수 있도록 설정했다.(Let's Encerypt 등)
  • URL(디렉터리 이름 등)에 "mpesa"를 입력하면 후술한 URL 등록에 실패하여 미리 mps
  • 로 설정
    설명 페이지에서 두 파일 구성하기
  • validation.php 구성(설명 페이지의 "Step6:Creating aC2 validation Callback URL")
  • 직접 업로드
  • WEB 브라우저에서 파일에 액세스할 때 "Technical error"로 표시되면 OK.
  • 예: https://www.example.com/mps/validation.php
  • confirmation.php 구성(설명 페이지의 "Step7:Creating aC2 Confirmation Calleback URL on Your Website")
  • 방문용 비밀번호를 미리 정하고 8줄 부근'yourPU_RstrongPasswordSample$'의 부분을 바꾸어 입장
  • 19-22행 근처$servername,$username,$password에 데이터베이스 서버 이름 설정 등
  • 업로드 파일
  • WEB 브라우저에서 파일에 액세스할 때 "$dbname"로 표시되면 OK.
  • 예: https://www.example.com/mps/confirmation.php
  • M-pesa payment gateway에서 호출 URL 등록을 위한 파일 설정하기
  • register.php 구성(설명 페이지의 "8단계: Registring Validation and Confirmation Calleback URLs on Safaricom API")

  • MY APPS 페이지에서 사전 레코드Technical errorConsumer Key
  • Consumer Secret,$shortcode,$consumerkey에서 비밀번호 설정 등
  • $consumersecret, $validationurl 위에서 구성한 파일의 URL을 설정합니다.
  • ( $confirmationurl모습설명 페이지의 샘플 비밀번호에 미묘한 차이가 있음을 주의하십시오.)
  • 호출 URL 호출, URL 등록
  • WEB 브라우저에서 위에서 설정한 register입니다.php를 열면curl이 안에서 이동하고 URL에 로그인합니다
  • 예: https://www.example.com/mps/register.php
  • "https://www.example.com/mps/validation.php?token='yourPU_RstrongPasswordSample$'"로 답장하면 성공
  • {
                "ConversationID": "",
                "OriginatorCoversationID": "",
                "ResponseDescription": "success"
            }
    
  • URL에 "mpesa"를 입력하면 다음과 같은 오류가 발생합니다
  • .
    {
                        "requestId":"28813-6618036-1",
                        "errorCode": "400.003.02",
                        "errorMessage": "Bad Request - Invalid ValidationURL - URL has the word MPESA"
    }
    
    "Mpesa API URLs simulator"에서 의심 거래 확인 동작
    열기
  • Mpesa API URLs simulator
  • "ResponseDescription": "success", Validation URL를 입력하고 "Confirmation URL"단추를 누릅니다.
  • URL에는 "Send Sample Transaction"및 토큰 문자열
  • 도 포함됩니다.

  • 화면 아래쪽에 다음과 같이 표시되면 OK.
  • 판정처리에 들어가지 않아'?token=yourPU_RstrongPasswordSample$'에'Validation URL said :과'Failed 두 개가 나오지만 DB에는 값이 있다.
  • "Success"와 같이 표시됩니다.htaccess 등을 통해 접근 제한을 해제해야 할 수도 있습니다.
  • Mpesa PHP API Testing Results
    Sample data sent :
    
    { "TransactionType": "Pay Bill", "TransID": "LUG8366JGC", "TransTime": "20200210093951", "TransAmount": "0.06", "BusinessShortCode": "999999", "BillRefNumber": "SAMPLE ACCOUNT 101", "InvoiceNumber": "", "OrgAccountBalance": "0.06", "ThirdPartyTransID": "", "MSISDN": "254000000000", "FirstName": "JOHN", "MiddleName": "M.", "LastName": "DOE" }
    
    Validation URL said :
    
    {"ResultCode":1, "ResultDesc":"Failed", "ThirdPartyTransID": 0}{"ResultCode":0, "ResultDesc":"Success", "ThirdPartyTransID": 0}
    
    Confirmation URL said :
    
    {"ResultCode":0,"ResultDesc":"Confirmation received successfully"}
    
  • 도 DB를 확인했다.레코드 두 장만 넣으면 돼요.
  • TransTime 열에서 실행될 때 거래 ID가 TransID에 들어갑니다
  • 케냐는 UTC+3으로 일본시간(UTC+9)보다 6시간 빠르다
  • 좋은 웹페이지 즐겨찾기