bKash 결제를 PHP와 통합하는 전체 단계

# bKash 결제와 PHP 통합을 위한 전체 단계

1. 준비 작업

비카시 판매자 계정 등록
- 비캐시 판매자 포털](https://merchant.bka.sh/)을 방문하여 계정을 등록하세요.
- 필요한 유효성 검사 프로세스 완료
- API 자격증명 가져오기(API 키, API 비밀번호, 사용자 이름 및 비밀번호)

환경 요구 사항
- PHP >= 7.0(7.4 이상 권장)
- cURL 확장이 활성화되었습니다.
- SSL 인증서(프로덕션 환경의 경우 HTTPS 필요)

2. bKash API 구성

"`php
// config.php - bKash API 구성 매개변수
define('BKASH_BASE_URL', 'https://tokenized.sandbox.bka.sh/v1.2.0-beta'); // 샌드박스 URL
// define('BKASH_BASE_URL', 'https://tokenized.pay.bka.sh/v1.2.0-beta'); // 프로덕션 URL

define('BKASH_APP_KEY', 'YOUR_APP_KEY');
define('BKASH_APP_SECRET', 'YOUR_APP_SECRET');
define('BKASH_USERNAME', 'your_username');
define('BKASH_PASSWORD', 'your_password');

// 콜백 URL - 실제 URL로 바꾸기
define('BKASH_CALLBACK_SUCCESS_URL', 'https://yoursite.com/payment/success.php');
define('BKASH_CALLBACK_FAILURE_URL', 'https://yoursite.com/payment/failure.php');
“`

3. 토큰 생성 및 처리

"`php
// token_generator.php - bKash 인증 토큰 생성기 함수

함수 getBkashToken() {
$post_token = array(
"app_key" => BKASH_APP_KEY.
"app_secret" => BKASH_APP_SECRET,
);

$url = BKASH_BASE_URL . "/토큰화/체크아웃/토큰/그랜트";

$headers = array(
"콘텐츠 유형: 애플리케이션/json".
"사용자 이름: ". bkash_username.
"비밀번호: ". bkash_password.
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_token));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_TIMEOUT ,30);

// 프로덕션 전용(샌드박스 테스트를 위해 제거)
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER ,true);
// curl_setopt ($ch,CURLOPT_CAINFO,"path_to_certificate");

if(!empty($_SERVER['HTTP_HOST'])){
if(strpos(BKAFH_BASE_URL,'sandbox') ! == false){
@ini_get("safe_mode") || set_time_limit(30);@ini_get("open_basedir") || ini_set( "max_execution_time",30); @ini_get("open_basedir") || ini_set(
}
}

try{
반환 json_decode(curl_exec ($ch),true) ;)
}catch(Exception$e){return null;}

finally{if(is_resource ($ch)){@close();}}
}
“`

4. 결제 요청 생성

"` php
=$_[…]){
/* Refresh token logic here */}

/* Prepare payment data */
$_data=[…];

/* Make API call to create payment */
[…]

}

}?>

금액.

“`

5. 콜백 처리의 예:

성공_콜백.html.

“`

“`

6. 완전한 클래스 구현(선택 사항):

class.BkashPaymentGateway.PHP.

“`
“0011”, // Tokenized Payment (0011)
“payerReference” => “customer123”, // 客户唯一标识
“callbackURL” => BKASH_CALLBACK_SUCCESS_URL,
“amount” => (string)$amount,
“currency” => “BDT”,
“intent” => “sale”,
“merchantInvoiceNumber” => $invoiceNumber
];

$url = BKASH_BASE_URL . “/tokenized/checkout/create”;

try {
return makeBkashApiCall($url, json_encode($paymentData), [
‘Content-Type: application/json’,
‘Authorization: ‘.$id_token,
‘X-APP-Key: ‘.BKASH_APP_KEY
]);
} catch(Exception$e){return null;}
}

function makeBkashApiCall(string$_endpoint,$_payload=null,$headers=[],bool$_isPost=true){
/* … */
}
“`

5.执行支付流程

“` php

금액.

“`

6. 콜백 처리 및 유효성 검사:

verify_payment_status.PHP.

“`
true,...]))));

}catch(...){http 응답 코드(...);}
“`

7. 클래스 메서드의 전체 예제입니다:

Bk ash 결제 게이트웨이.PHP(계속).

“`
공개 함수 refundTransaction(
문자열 $_ 결제 ID, 문자열 $_ 결제 ID, 문자열 $_ 결제 ID
float $_ 금액,
문자열 $_ trx ID ,
문자열 $_ reason = ""
): 배열 {

/* 입력 유효성 검사 */

return$this-> 인증된 요청 만들기 (
"/[...]/환불".
compact ('[...]')
);

}
“`

8. 웹훅 처리(권장):

webhook_handler.PHP.

“`