PHPでbKash決済を統合するための完全なステップ

# bKash PaymentsとのPHP統合のための完全なステップ

1.準備作業

bKash マーチャントアカウントの登録
- bKash Merchant Portal](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() { { { { 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.完全なクラス実装(オプション):

クラス.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()
文字列 $_ 支払 ID、文字列 $_ 支払 ID、文字列 $_ 支払 ID
float $_ amount、
文字列 $_ trx ID 、
string $_ reason = ""
): array {

/* 入力の検証 */

return$this-> make 認証リクエスト (
"/[...]/払い戻し"。
コンパクト('[...]')
);

}
“`

8.Webhook処理(推奨):

webhook_handler.PHP。

“`