jagdish-j-p / billdesk-hmac

用于将BillDesk支付网关与HMAC加密集成到Laravel的包

v1.3.5 2023-05-10 09:45 UTC

README

该仓库已开发用于在Laravel中将BillDesk支付网关与HMAC加密集成。

该仓库目前正在开发中。可能会有一些异常。

成为赞助商

您的支持使我能够保持该包免费、更新和可维护。或者,您也可以 传播信息!

安装

您可以通过composer安装该包

composer require jagdish-j-p/billdesk-hmac

然后运行发布命令以发布配置文件、支持控制器和视图

php artisan billdesk:publish

这将生成以下文件

  • 包含默认设置的配置文件,您可以根据需要进行覆盖 billdesk.php
  • 将接收支付响应和任何主机间事件的控制器 Http/Controllers/BilldeskHmac/Controller.php
  • 公共目录中的资产。
  • 包含默认HTML的视图文件,您可以根据需要进行覆盖 payment.blade.php。注意不要更改表单操作URL billdesk.payment.auth.request

设置

  1. 将您的响应URL以及您的商户ID、客户端ID和HMAC密钥添加到 .env 文件中。
BILLDESK_TRANSACTION_RESPONSE_PATH=billdesk/payments/transactions/callback
BILLDESK_MANDATE_RESPONSE_PATH=billdesk/payments/mandates/callback
BILLDESK_WEBHOOK_PATH=billdesk/payments/webhook

BILLDESK_MERCHANT_ID=
BILLDESK_CLIENT_ID=
BILLDESK_HMAC_KEY=
BILLDESK_MERCHANT_LOGO="${APP_URL}/assets/img/logo.jpg"
BILLDESK_RETRY_COUNT=3
BILLDESK_CHILD_WINDOW=false
BILLDESK_ITEM_CODE=DIRECT
BILLDESK_UAT_PREFIX="test-prefix"
  1. 运行迁移以添加交易表
php artisan migrate

用法

  1. 您可以访问 http://app.test/billdesk/initiate/payment 以查看Web集成的支付流程演示。

  2. Http/Controllers/BilldeskHmac/Controller.php 中处理支付响应

    /**
     * This will be called after the user approve the mandate
     * @param Request $request
     *
     * @return Response
     */
    public function mandateCallback(MandateModifyResponseRequest $request, $id = null)
    {
        $response = $request->handle($id);

        if ($response['response_format'] == 'JSON') {
            return response()->json(['response' => $response, 'billdesk_response' => $request->all()]);
        }

        dd($response, $request); // Remove this line and modify as per your needs.
    }
    
    /**
     * This will be called after the user approve the payment
     * on the bank side
     *
     * @param Request $request
     * @return Response
     */
    public function callback(Request $request)
    {
        $response = $request->handle();

        if ($response['response_format'] == 'JSON')
            return response()->json(['response' => $response, 'billdesk_response' => $request->all()]);

        dd($response, $request); // Remove this line and modify as per your needs.
        // Update your order status
    }

    /**
     * This will handle any direct call from BillDesk
     *
     * @param Request $request
     * @return string
     */
    public function webhook(Request $request)
    {
        $response = $request->handle();

        // Update your order status

        return 'OK';
    }

	
  1. 使用命令检查所有挂起的交易的状态
php artisan billdesk:transaction-status
  1. 使用命令通过逗号分隔的订单参考ID检查特定交易的状态
php artisan billdesk:transaction-status --orderid=orderid1 --orderid=orderid2 --orderid=orderid3
  1. 从控制器检查交易状态
use JagdishJP\BilldeskHmac\Facades\BilldeskHmac;

/**
 * Returns status of transaction
 * 
 * @param string $orderid reference order id
 * @return array
 */
$status = BilldeskHmac::getTransactionStatus($orderid);

您还可以通过自定义设计覆盖 payment.blade.php 以与您的布局集成,但不要更改HTML控件中的 name 属性和表单的 action URL。

更新日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

欢迎贡献者,并将获得全部认可。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 jagdish.j.ptl@gmail.com 联系,而不是使用问题跟踪器。

致谢

许可协议

MIT许可(MIT)。有关更多信息,请参阅 许可文件

Packagify

该包使用 Packagify 生成。