bkash支付网关创建规则

bkash支付网关创建规则

如果您想设置 bkash 支付网关,您需要遵循一些步骤。下面我将逐步指导您如何集成 bkash 支付网关。为此,我们将使用 bkash 的 merchant api。

1. bkash api 集成要点
bkash 商户账户:您必须拥有 bkash 商户账户。如果没有你可以申请bkash merchant。
api凭证:在商户帐户设置后,bkash将向您提供api用户名、api密码、应用程序密钥和应用程序密钥。
ssl证书:bkash支付网关必须要有ssl证书。
webhook url:您需要设置一个webhook url来接收付款通知。
2.支付网关集成流程
第1步:环境设置
首先设置您的 php 环境或任何其他服务器端环境。

composer.json 文件(如果使用 php)
json
复制代码
{
“要求”:{
“guzzlehttp/guzzle”: “^7.0”
}
}
然后运行composer install。

第 2 步:文件和目录结构
明文
复制代码
项目根目录/
├──index.php
├── bkash/
│ ├── config.php
│ ├── token.php
│ ├── create_ payment.php
│ ├──execute_ payment.php
│ └── query_ payment.php
└── success.php
步骤3:bkash api配置(bkash/config.php)
php
复制代码
<?php
返回[
‘base_url’ => ‘https://checkout.sandbox.bka.sh/v1.2.0-beta’,
‘用户名’ = > ‘your_bkash_username’,
‘密码’ = > ‘your_bkash_password’,
‘app_key’ = > ‘your_app_key’,
‘app_secret’ => ‘your_app_secret’,
‘callback_url’ => ‘https://fqrhost.com/success.php’
];
?>
步骤 4:生成访问令牌 (bkash/token.php)
php
复制代码
<?php
$config = include(‘config.php’);

函数generatetoken() {
全局 $config;
$url = $config[‘base_url’] 。 ‘/checkout/token/grant’;
$标题= [
‘内容类型:application/json’,
‘用户名:’ . $config[‘用户名’],
‘密码:’ 。 $config[‘密码’]
];

$data = [    'app_key' => $config['app_key'],    'app_secret' => $config['app_secret']];$curl = curl_init($url);curl_setopt($curl, curlopt_httpheader, $headers);curl_setopt($curl, curlopt_post, true);curl_setopt($curl, curlopt_postfields, json_encode($data));curl_setopt($curl, curlopt_returntransfer, true);$result = curl_exec($curl);curl_close($curl);$response = json_decode($result, true);return $response['id_token'];

}

$token =generatetoken();
?>
第5步:创建付款(bkash/create_ payment.php)
php
复制代码
<?php
include(‘token.php’);

函数createpayment($金额){
全局 $config, $token;
$url = $config[‘base_url’] 。 ‘/结账/付款/创建’;
$标题= [
‘内容类型:application/json’,
‘授权:’ 。 $代币,
‘x-app-key:’ 。 $config[‘app_key’]
];

$data = [    'amount' => $amount,    'currency' => 'bdt',    'intent' => 'sale',    'merchantinvoicenumber' => 'inv-' . uniqid(),    'callbackurl' => $config['callback_url']];$curl = curl_init($url);curl_setopt($curl, curlopt_httpheader, $headers);curl_setopt($curl, curlopt_post, true);curl_setopt($curl, curlopt_postfields, json_encode($data));curl_setopt($curl, curlopt_returntransfer, true);$result = curl_exec($curl);curl_close($curl);return json_decode($result, true);

}

$response = createpayment(1000); // 1000卢比付款
header(‘位置:’ . $response[‘bkashurl’]);
?>
第6步:执行付款(bkash/execute_ payment.php)
php
复制代码
<?php
include(‘token.php’);

函数executepayment($ paymentid) {
全局 $config, $token;
$url = $config[‘base_url’] 。 ‘/结帐/付款/执行/’ 。 $付款id;
$标题= [
‘内容类型:application/json’,
‘授权:’ 。 $代币,
‘x-app-key:’ 。 $config[‘app_key’]
];

$curl = curl_init($url);curl_setopt($curl, curlopt_httpheader, $headers);curl_setopt($curl, curlopt_returntransfer, true);$result = curl_exec($curl);curl_close($curl);return json_decode($result, true);

}

if (isset($_get[‘ paymentid’])) {
$response =executepayment($_get[‘ paymentid’]);
回声’

';
print_r($response);
echo '

‘;
}
?>
第7步:成功页面(success.php)
php
复制代码
<?php
echo “支付成功!”;
?>
3.系统测试
您可以使用 bkash 的沙盒环境测试您的系统。
要使用生产模式,请从 bkash 更新您的 api 密钥和 url。
4. webhook 设置(可选)
bkash 可以使用 webhook url 进行支付更新。我们将向您发送包含付款信息的通知。

购买域名托管

以上就是bkash支付网关创建规则的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1249638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月9日 21:33:01
下一篇 2025年12月9日 21:33:18

相关推荐

  • 在Laravel框架中如何解决“Too many open files”错误?

    在laravel框架中解决“too many open files”错误的方法 在使用php7.3和laravel框架执行定时任务时,你可能会遇到一个错误提示,指出“打开文件太多”,错误信息大致如下: [2023-03-15 00:14:13] local.ERROR: include(/www/v…

    好文分享 2025年12月10日
    000
  • Composer使用时如何解决与PHP配置相关的openssl扩展错误?

    Composer、PHP及OpenSSL扩展问题排查 本文探讨Composer在使用过程中遇到的与PHP配置,特别是OpenSSL扩展相关的常见问题,并讲解Composer与PHP的协同工作机制。 问题场景 用户在执行composer require命令时,遇到以下错误: you must enab…

    2025年12月10日
    000
  • 如何安全高效地清理PHP项目中冗余的Composer包?

    如何安全高效地清理PHP项目中冗余的Composer包? 老项目往往累积大量Composer包,其中部分可能已闲置。直接删除风险极高,本文介绍安全可靠的识别和移除冗余依赖方法。 Composer本身缺乏直接检测和移除未使用包的功能。因此,我们需要采用手动或半自动方法。一种有效方法是通过代码扫描查找依…

    2025年12月10日
    000
  • Composer自定义包安装路径调试:如何打印$installPath变量?

    深入Composer自定义包调试:轻松打印安装路径 在使用Composer管理依赖时,自定义包的安装路径并非总是默认的vendor目录。这通常需要编写Composer插件来实现。然而,调试自定义包的安装过程,例如打印安装路径$installPath,却可能比较棘手。本文将提供一种简单方法,无需复杂配…

    2025年12月10日
    000
  • ThinkPHP5.1框架升级失败:composer update命令无效是什么原因?

    thinkphp5.1框架升级失败:composer update命令无效的排查与解决 很多开发者在升级ThinkPHP5.1框架时遇到问题:执行composer update topthink/framework:5.1.41后,使用php think version查看版本,仍然显示旧版本(例如…

    2025年12月10日
    000
  • Composer安装RabbitMQ扩展时遇到版本冲突怎么办?

    Composer安装RabbitMQ扩展时遭遇版本冲突的解决方案 在使用Composer安装php-amqplib/php-amqplib扩展时,常常会遇到版本冲突问题。例如,你的composer.json文件可能声明了alibabacloud/darabonba-openapi的版本要求为^2.1…

    2025年12月10日
    000
  • 高效的异步操作:Guzzle Promises 的实践与应用

    最近在开发一个需要同时访问多个外部 API 的应用时,遇到了严重的性能问题。 传统的同步请求方式导致应用响应时间过长,用户体验极差。 每个 API 请求都需要等待完成才能发出下一个请求,这在处理大量请求时效率极低,严重影响了系统的吞吐量。 为了解决这个问题,我开始寻找异步处理的方案,最终选择了 Gu…

    2025年12月10日
    000
  • 告别依赖注入的困扰:使用 PSR-11 容器接口简化代码

    我最近参与了一个大型PHP项目的重构工作。项目中充斥着大量的new操作,各个类之间紧密耦合,代码难以测试和维护。修改一个类往往需要修改多个地方,这使得开发效率极低,而且容易引入新的bug。 我意识到,我们需要引入依赖注入来改善这种情况。然而,仅仅引入依赖注入的概念还不够,我们需要一个高效的机制来管理…

    2025年12月10日
    000
  • 安全地执行shell命令:Hestiacp/phpquoteshellarg库的使用指南

    在开发过程中,我们经常需要调用系统命令来完成一些任务,例如处理文件、执行备份等。PHP提供了escapeshellarg()函数来转义shell命令参数,防止命令注入。然而,该函数在处理某些特殊字符时,效果并不理想,存在安全隐患。 例如,如果用户提交的文件名为’rm -rf /’,直接使用escap…

    2025年12月10日
    000
  • 高效解析PDF:告别繁琐,拥抱smalot/pdfparser

    我的项目需要从数百个PDF文件中提取文本信息,以便进行后续的分析和处理。起初,我尝试使用一些在线的PDF转文本工具,但这些工具处理速度慢,而且对于复杂的PDF文件,转换效果不佳,经常出现乱码或信息丢失的情况。手动复制粘贴更是不可取,效率低不说,还容易出错。 为了解决这个问题,我开始寻找合适的PHP库…

    2025年12月10日
    000
  • 告别繁琐的Google API认证:使用google/auth库简化你的开发流程

    我最近在开发一个需要访问Google Drive API的应用。一开始,我尝试自己动手实现OAuth 2.0的认证流程,这包括处理授权码、获取访问令牌等步骤。整个过程非常复杂,代码冗长且难以维护,而且容易出错。 更糟糕的是,不同的Google API服务需要不同的授权范围,这使得代码变得更加难以管理…

    2025年12月10日
    000
  • 高效测试Symfony应用:Codeception与codeception/module-symfony模块

    我最近参与了一个Symfony项目的开发,为了保证代码质量,我们需要编写全面的测试用例。我们选择了Codeception作为测试框架,因为它易于上手且功能强大。起初,我们尝试直接使用Codeception编写测试,但很快就遇到了问题。Symfony应用的复杂性使得我们难以直接访问服务容器、模拟请求和…

    2025年12月10日
    000
  • 高效处理 JSON 数据:scienta/doctrine-json-functions 库的使用指南

    我最近参与的项目使用了 Doctrine ORM 管理数据库,其中一个实体包含一个 JSON 类型的字段,用于存储用户的配置信息。最初,我尝试使用原生 SQL 查询来处理 JSON 数据,例如使用 MySQL 的 JSON_EXTRACT 函数。这种方法虽然可以实现功能,但代码变得冗长且难以阅读,而…

    2025年12月10日
    000
  • 高效构建JSON-RPC服务:felixfbecker/advanced-json-rpc 的实践

    我的项目需要一个 JSON-RPC 接口来处理来自客户端的各种请求。这些请求包含不同的参数类型,有些请求需要调用嵌套对象中的方法。我最初尝试使用一个简单的 JSON 解析器和手动编写的逻辑来处理请求,但很快发现这种方法效率低下且难以维护。代码变得冗长且难以理解,并且处理参数类型转换和错误处理也非常麻…

    2025年12月10日
    000
  • 告别崩溃:使用Sentry提升Symfony应用的稳定性

    在开发过程中,我们都经历过应用崩溃的痛苦。 用户报告问题,但我们却苦于无法快速定位错误,只能在茫茫代码海洋中大海捞针。 更糟糕的是,一些错误可能只在特定环境或用户操作下才会出现,难以在本地复现。 我之前的项目使用的是简单的日志记录,虽然能记录一些错误信息,但缺乏上下文信息,例如请求参数、用户身份、堆…

    2025年12月10日
    000
  • 告别调试地狱:使用 Spatie/Laravel-Ray 提升 Laravel 应用调试效率

    我最近在开发一个 Laravel 应用,其中涉及到复杂的订单处理流程和用户交互。在调试过程中,我遇到了许多问题:数据库查询缓慢、邮件发送失败、业务逻辑错误等等。传统的调试方法,例如 dd() 和 var_dump(),虽然能提供一些信息,但效率低下,且难以追踪复杂的流程。 日志文件虽然记录了详细的信…

    2025年12月10日
    000
  • 高效处理异步操作:Guzzle Promises 的实践与应用

    我的应用需要从多个不同的API获取数据,这些API的响应时间并不稳定。如果使用同步请求,程序需要等待每个请求完成才能继续执行下一个,这导致整个流程非常缓慢。用户需要等待很长时间才能看到结果,这显然是不可接受的。 起初,我尝试使用一些简单的多线程或异步函数来处理这些请求,但这些方法要么过于复杂,要么难…

    2025年12月10日
    000
  • 安全可靠的JWT签名与验证:使用namshi/jose库

    在开发一个单页应用(SPA)时,我需要一种安全的方式来验证用户身份,并允许前端应用访问受保护的资源。传统的基于cookie的session管理方式存在安全风险,容易受到CSRF攻击。因此,我需要一个更安全可靠的方案。我选择了使用JSON Web Token (JWT),并找到了namshi/jose…

    2025年12月10日
    000
  • 高效图片处理:告别繁琐,拥抱 Spatie/Image

    我最近参与开发一个电商网站,需要对用户上传的商品图片进行各种处理,例如:裁剪成不同尺寸的缩略图、添加水印、调整亮度和对比度等等。起初,我使用原生PHP的GD库进行图片处理,但发现代码冗长且难以维护,效率也比较低。各种图片格式的兼容性处理也让我头疼不已。 尝试过几种图片处理库后,我最终选择了Spati…

    2025年12月10日
    000
  • 高效安全地管理公钥基础设施:Spomky-Labs/Pki-Framework 使用指南

    在现代应用中,数字证书扮演着至关重要的角色,例如身份验证、数据加密等。然而,处理证书、证书签名请求(CSR)以及验证证书路径等任务却异常复杂。 我最初尝试使用一些零散的库和函数来处理这些任务,结果代码变得冗长且难以维护,而且安全性也难以保证。 我需要一个能够统一处理这些任务的框架,并且能够确保代码的…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信