পেমেন্ট এসডিকে (ভার্সন ৩)

প্রকল্প ঠিকানা

https://github.com/yansongda/pay

ইনস্টলেশন

composer require yansongda/pay ^3.0.0

ব্যবহার

নোট: এই ডকুমেন্টেশনে আমরা পেমেন্ট সিস্টেমে প্রেরণ করা অ্যালিপে স্যান্ডবক্স এনভায়রনমেন্টের জন্য ডকুমেন্ট লেখা হয়েছে। সমস্যা থাকলে অবশ্যই ফিডব্যাক দিন।

<?php
/**
* @desc পেমেন্ট কনফিগারেশন ফাইল
* @লেখক Tinywan(ShaoBo ওয়ান)
* @ তারিখ 2022/03/11 20:15
*/
return [
'alipay' => [
'default' => [
// প্রয়োজনীয় - এপিপাই অনুদেশিত app_id
'app_id' => '20160909004708941',
// প্রয়োজনীয়-অ্যাপ্লিকেশন প্রাইভেট কী স্ট্রিং বা পথ
'app_secret_cert' => 'MIIEpAIBAAKCxxxxxxxxxxxxxxP4r3m4OUmD/+XDgCg==',
// প্রয়োজনীয় - অ্যাপ জন্য পাবলিক সার্টিফিকেট পথ
'app_public_cert_path' => base_path().'/payment/appCertPublicKey_2016090900470841.crt',
// প্রয়োজনীয় - পেমেন্ট ঠিকানাে পাবলিক সার্টিফিকেট পথ
'alipay_public_cert_path' => base_path().'/payment/alipayCertPublicKey_RSA2.crt',
// প্রয়োজনীয় - আলিপে প্রাথমিক সার্টিফিকেট পথ
'alipay_root_cert_path' => base_path().'/payment/alipayRootCert.crt',
// ঐচ্ছিক - সিংক্রোনাইজড কলব্যক ঠিকানা
'return_url' => 'https://webman.tinywan.cn/payment/alipay-return',
// ঐচ্ছিক - অ্যাসিঙ্ক্রোনাস কলব্যক ঠিকানা
'notify_url' => 'https://webman.tinywan.cn/payment/alipay-notify',
// ঐচ্ছিক - পরিষেবা প্রদানকারী মোডেল এর মেরামত আইডি, যখন মোড হলো Pay::MODE_SERVICE তখন এই প্যারামিটার ব্যবহার করা হয়
'service_provider_id' => '',
// ঐচ্ছিক - ডিফল্ট পরিষেবার জন্য সাধারণ মোড যোগ্য। MODE_NORMAL, MODE_SANDBOX, MODE_SERVICE
'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
]
],
'wechat' => [
'default' => [
// প্রয়োজনীয় - বণিক নম্বর, পরিষেবা প্রদানকারী মোডেলে পরিষেবা প্রদানকারী বণিক নম্বর
'mch_id' => '',
// প্রয়োজনীয় - বণিক গোপনীয় কী
'mch_secret_key' => '',
// প্রয়োজনীয় - বণিক সিক্রেট সার্টিফিকেট স্ট্রিং বা পথ
'mch_secret_cert' => '',
// প্রয়োজনীয় - বণিক পাবলিক সার্টিফিকেট পথ
'mch_public_cert_path' => '',
// প্রয়োজনীয়
'notify_url' => 'https://yansongda.cn/wechat/notify',
// ঐচ্ছিক - পাবলিক যে app_id
'mp_app_id' => '2016082000291234',
// ঐচ্ছিক - ছোটা প্রোগ্রামের জন্য app_id
'mini_app_id' => '',
// ঐচ্ছিক- app এর জন্য app_id
'app_id' => '',
// ঐচ্ছিক - কম্বাইন এর app_id
'combine_app_id' => '',
// ঐচ্ছিক - কম্বাইন বণিক নম্বর
'combine_mch_id' => '',
// ঐচ্ছিক - পরিষেবা প্রদানকারী মোডেলে, সাব পাবলিক আইডি
'sub_mp_app_id' => '',
// ঐচ্ছিক - পরিষেবা প্রদানকারী মোডেলে, সাব অ্যাপ এর app_id
'sub_app_id' => '',
// ঐচ্ছিক - পরিষেবা প্রদানকারী মোডেলে, সাব ছোটপ্রোগ্রাম এর app_id
'sub_mini_app_id' => '',
// ঐচ্ছিক - সাব বণিক আইডি
'sub_mch_id' => '',
// ঐচ্ছিক - ওয়েবসাইট পাবলিক সার্টিফিকেট পথ, ঐচ্ছিক, সাক্ষাতকারে সুপারিপ্রান্ত পরামাণবী অভিযোগ ভাল সুপারপ্রান্তের পরামাণবী বেশি,estবা এর পরামাণবপটি ম্যানও ধারণা
'wechat_public_cert_path' => [
'45F59D4DABF31918AFCEC556D5D2C6E376675D57' => __DIR__.'/Cert/wechatPublicKey.crt',
],
// ঐচ্ছিক - ডিফল্ট হলো সাধারণ মোড। এটা সাধারণভাবে। মোড ২টির জন্য অবাগ্ত: MODE_NORMAL, MODE_SERVICE
'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
]
],
'logger' => [
'সক্ষম' => মিথ্যা,
'file' => runtime_path().'/logs/alipay.log',
'স্তর' => 'debug', // উপস্থাপনার জন্য সুপারবাহী গণপর্যায়ে info, ডেভেলপম্যান্ট জন্য debugগণצ\r
'type' => 'একক', // ঐচ্ছিক, বন্ধুত্ব  daily
'max_file' => 30, // ঐচ্ছিক, টাইপ ল-êtreবা টা জানি সুপারপ্রান্তসুপারপরিষ্পর্ধীতা
],
'http' => [ // ঐচ্ছিক
'timeout' => 5.0,
'connect_timeout' => 5.0,
// আরও গণনা সন্দার্ভ [গাজল](https://guzzle-cn.readthedocs.io/zh\_CN/latest/request-options.html)
],
'_বলবো' => সত্য,
];

আদান

config মেথড ডিরেক্টলি কল করুন

// কনফিগ ফাইল config/payment.php পেতে
$config = Config::get('payment');
Pay::config($config);

লক্ষ্য করুন: আপনি যদি আলীপে স্যান্ডবক্স মোডে থাকেন, তবে আপনার কনফিগ ফাইলে 'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX, অবশ্যই চালু করতে হবে, ডিফল্টভাবে এটি সাধারণ মোডে থাকে।

পেমেন্ট (ওয়েব)

use support\Request;
use Webman\Config;
use Yansongda\Pay\Pay;

/**
 * @param Request $request
 * @return string
 */
public function payment(Request $request)
{
    // ১। কনফিগ ফাইল config/payment.php পেতে
    $config = Config::get('payment');

    // ২। কনফিগারেশন ইনিশিয়ালাইজ করুন
    Pay::config($config);

    // ৩। ওয়েব পেমেন্ট
    $order = [
        'out_trade_no' => time(),
        'total_amount' => '8888.88',
        'subject' => 'webman payment',
        '_method' => 'get' // get মেথড ব্যবহার করুন
    ];
    return Pay::alipay()->web($order)->getBody()->getContents();
}

অ্যাসিঙ্ক্রোনাস কলব্যাক

use support\Request;
use Webman\Config;
use Yansongda\Pay\Pay;

/**
 * @desc: অ্যাসিনক্রনাস বিজ্ঞপ্তি
 * @param Request $request
 * @return Response
 */
public function alipayNotify(Request $request): Response
{
    // ১। কনফিগ ফাইল config/payment.php পেতে
    $config = Config::get('payment');

    // ২। কনফিগারেশন ইনিশিয়ালাইজ করুন
    Pay::config($config);

    // ৩। আলিপে বিজ্ঞপ্তি প্রসেস
    $result = Pay::alipay()->callback($request->post());

    // ===================================================================================================
    // অনুগ্রহ করে trade_status এবং অন্যান্য যোগাযোগ নিরীক্ষা করেন, TRADE_SUCCESS বা TRADE_FINISHED যখন হলেই, আলিপে কেবলমাত্র সম্মানিত করে যে কেনার প্রস্থান সফল হয়েছে।
    // ১. ব্যবসায়ীরা এই বিজ্ঞপ্তিতে out_trade_no ক্ষেত্রের মান তাদের সিস্টেমে তৈরি অর্ডার নম্বরের সাথে মেলে কিনা তা যাচাই করতে হবে; 
    // ২. তৈরি অর্ডারের মোট পরিমাণটি প্রাপ্ত পরিমাণ কিনা তা নিরীক্ষা করতে হবে (অর্থাত ব্যবসায়ী অর্ডার তৈরির সময়ের পরিমাণ); 
    // ৩. অথবা মেলার ব্যাপারে বিজ্ঞপ্তিতে seller_id (বা seller_email) প্রকারের কি উঠে নি তা নিরীক্ষা করতে হবে;
    // ৪. app_id এরই সঙ্গে আপনি ব্যবহারকারী 
    // ৫. অন্যান্য ব্যবসায়িক লজিক
    // ===================================================================================================

    // ৫। আলিপে বিজ্ঞপ্তি প্রসেস
    return new Response(200, [], 'success');
}

লক্ষ্য করুন: আলিপে বিজ্ঞপ্তির উত্তর পেতে return Pay::alipay()->success(); ব্যবহার করা যাবে না, এটি আপনি মিডলওয়্যার সমস্যা সৃষ্টি করতে পারে। তাই আপনার আলিপের জবাবদিহি দেওয়ার জন্য webman এর জবাব দেওয়ার জন্য হলে support\Response; ব্যবহার করা আবশ্যক।

সিঙ্ক্রোনাস কলব্যাক

use support\Request;
use Yansongda\Pay\Pay;

/**
 * @desc:  বাংলাদেশি টাকা সিঙ্ক্রোনাস বিজ্ঞপ্তি
 * @param Request $request
 * @author Tinywan(ShaoBo Wan)
 */
public function alipayReturn(Request $request)
{
    Log::info('বাংলাদেশি টাকা সিঙ্ক্রোনাস বিজ্ঞপ্তি'.json_encode($request->get()));
    return 'success';
}

সম্পূর্ণ কোডের উদাহরণ

https://github.com/Tinywan/webman-admin/blob/main/app/controller/Test.php

অধিক তথ্যের জন্য

অফিসিয়াল ডকুমেন্টেশনে প্রবেশ করুন https://pay.yansongda.cn/docs/v3/