Полные шаги по интеграции платежей bKash с PHP

# Полные шаги по PHP-интеграции с bKash Payments

1. Подготовительная работа

Зарегистрируйтесь для получения торгового счета bKash
- Посетите [bKash Merchant Portal](https://merchant.bka.sh/) для регистрации учетной записи
- Завершение необходимых процессов валидации
- Получите учетные данные API (ключ API, секрет API, имя пользователя и пароль).

Экологические требования
- PHP >= 7.0 (рекомендуется 7.4+)
- Расширение cURL включено
- SSL-сертификат (HTTPS требуется для производственных сред)

2. Настройка API bKash

"`php
// config.php - параметры конфигурации API bKash
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

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

$url = BKASH_BASE_URL . "/tokenised/checkout/token/grant";

$headers = array(
"Content-Type: application/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(
}
}

попытка{
return 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. Пример обработки обратного вызова:

success_callback.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 response code(...);}
“`

7. Полный пример метода класса:

Bk ash Payment Gateway.PHP (продолжение).

“`
public function refundTransaction(
строка $_ Идентификатор платежа, строка $_ Идентификатор платежа, строка $_ Идентификатор платежа
float $_ amount,
строка $_ trx ID ,
string $_ reason = ""
): массив {

/* Проверка вводимых данных */

return$this-> make Authenticated Request (
"/[...]/refund".
компактный ('[...]')
);

}
“`

8. Обработка Webhook (рекомендуется):

webhook_handler.PHP.

“`