<?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 {
// 生成基本数据
$data = $this->generateBaseData($params);
// 创建二维码对象
$qrCode = $this->createQrCode($data);
// 写入二维码并获取数据URI
$writer = new PngWriter;
return $writer->write($qrCode)->getDataUri();
} catch (\Exception $e) {
error_log('Failed to generate QR code: '.$e->getMessage());
return null;
}
}
/**
* 生成基本数据
*
* @param array $params 包含Momo支付信息的数组
* @return string 生成的基本数据字符串
*/
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'] ?? '',
);
}
/**
* 创建二维码对象
*
* @param string $data 要编码到二维码中的数据
* @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生成印度收款码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 微信,支付宝,QQ三端个人支付二维码生成与监控!有PHP,JAVA接口回调,个人收款好助手! 实现收款即时到个人微...
- 异地收款码怎样解除额度限制,不被风控的收款码有吗 选择稳定的远程收款码是解除异地收款额度限制的关键。具体来说,可以...
- 前言 最近在逛博客时,发现很多博客都带了打赏功能,虽说打赏的人可能很少,但始终是一份心意,能让博主知道自己写的文章...