<?php
namespace App\Helpers\QrcodeBank;
use App\Helpers\Helpers;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\RoundBlockSizeMode;
use Endroid\QrCode\Writer\PngWriter;
class IndiaBankQrcodeGenerator extends QrcodeGenerator
{
public function generate(array $params): ?string
{
try {
// 生成基本數(shù)據(jù)
$data = $this->generateBaseData($params);
// 創(chuàng)建二維碼對象
$qrCode = $this->createQrCode($data);
// 寫入二維碼并獲取數(shù)據(jù)URI
$writer = new PngWriter;
return $writer->write($qrCode)->getDataUri();
} catch (\Exception $e) {
error_log('Failed to generate QR code: '.$e->getMessage());
return null;
}
}
/**
* 生成基本數(shù)據(jù)
*
* @param array $params 包含Momo支付信息的數(shù)組
* @return string 生成的基本數(shù)據(jù)字符串
*/
private function generateBaseData(array $params): string
{
$params['amount'] = Helpers::unformatNumberFlexible($params['amount']);
return sprintf('upi://pay?pa=%s&pn=%s&mc=%s&tid=%s&tr=%s&tn=%s&am=%s&cu=%s&url=%s&qrMedium=%s&mode=%s&purpose=%s&sign=%s',
$params['payee_vpa'],
$params['payee_name'] ?? '',
$params['merchant_code'] ?? '',
$params['transaction_id'] ?? '',
$params['transaction_ref_id'] ?? '',
$params['note'] ?? '',
$params['amount'],
$params['currency'] ?? 'INR',
$params['url'] ?? '',
$params['qr_medium'] ?? '',
$params['mode'] ?? '',
$params['purpose_code'] ?? '',
$params['signature'] ?? '',
);
}
/**
* 創(chuàng)建二維碼對象
*
* @param string $data 要編碼到二維碼中的數(shù)據(jù)
* @return QrCode 二維碼對象
*/
private function createQrCode(string $data): QrCode
{
return new QrCode(
data: $data,
encoding: new Encoding('UTF-8'),
errorCorrectionLevel: ErrorCorrectionLevel::High,
size: 300,
margin: 0,
roundBlockSizeMode: RoundBlockSizeMode::Margin,
foregroundColor: new Color(0, 0, 0),
backgroundColor: new Color(255, 255, 255)
);
}
}
php生成印度收款碼
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 微信,支付寶,QQ三端個人支付二維碼生成與監(jiān)控!有PHP,JAVA接口回調(diào),個人收款好助手! 實現(xiàn)收款即時到個人微...
- 異地收款碼怎樣解除額度限制,不被風(fēng)控的收款碼有嗎 選擇穩(wěn)定的遠(yuǎn)程收款碼是解除異地收款額度限制的關(guān)鍵。具體來說,可以...
- 前言 最近在逛博客時,發(fā)現(xiàn)很多博客都帶了打賞功能,雖說打賞的人可能很少,但始終是一份心意,能讓博主知道自己寫的文章...