भुगतानSDK(V3)

परियोजना का पता

https://github.com/yansongda/pay

स्थापित करें

composer require yansongda/pay ~3.0

उपयोग करना

विवरण: नीचे दिए गए उदाहरण में अलिपे की सैंडबॉक्स वातावरण का उपयोग करते हुए दस्तावेज़ तैयार किया गया है, अगर कोई समस्या है, तो कृपया तुरंत प्रतिक्रिया दें!

कॉन्फ़िगरेशन फ़ाइल

मान लीजिए कि आपकी निम्नलिखित कॉन्फ़िगरेशन फ़ाइल है config/payment.php

<?php
/**
 * @desc भुगतान कॉन्फ़िगरेशन फ़ाइल
 * @author Tinywan(ShaoBo Wan)
 * @date 2022/03/11 20:15
 */
return [
    '_force' => true, // ध्यान दें, यह true होना चाहिए
    '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',
            // वैकल्पिक- सेवा प्रदाता मोड में सेवा प्रदाता id, जब मोड 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_id
            'app_id' => '',
            // वैकल्पिक- समेकन app_id
            'combine_app_id' => '',
            // वैकल्पिक- समेकन व्यापारी नंबर
            'combine_mch_id' => '',
            // वैकल्पिक- सेवा प्रदाता मोड में, उप सार्वजनिक खाते का app_id
            'sub_mp_app_id' => '',
            // वैकल्पिक- सेवा प्रदाता मोड में, उप ऐप का app_id
            'sub_app_id' => '',
            // वैकल्पिक- सेवा प्रदाता मोड में, उप छोटे प्रोग्राम का app_id
            'sub_mini_app_id' => '',
            // वैकल्पिक- सेवा प्रदाता मोड में, उप व्यापारी id
            'sub_mch_id' => '',
            // वैकल्पिक- वेचैट सार्वजनिक कुंजी प्रमाणपत्र पथ, वैकल्पिक, php-fpm मोड में इस पैरामीटर को निर्धारित करने की सिफारिश की जाती है
            'wechat_public_cert_path' => [
                '45F59D4DABF31918AFCEC556D5D2C6E376675D57' => __DIR__.'/Cert/wechatPublicKey.crt',
            ],
            // वैकल्पिक- सामान्य मोड में डिफ़ॉल्ट। विकल्प: MODE_NORMAL, MODE_SERVICE
            'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
        ]
    ],
    'logger' => [
        'enable' => false,
        'file' => runtime_path().'/logs/alipay.log',
        'level' => 'debug', // उत्पादन वातावरण के स्तर को info में समायोजित करने की सिफारिश की जाती है, विकास वातावरण के लिए debug
        'type' => 'single', // वैकल्पिक, दैनिक का चयन करें।
        'max_file' => 30, // वैकल्पिक, जब type दैनिक हो तो प्रभावी, डिफ़ॉल्ट 30 दिन
    ],
    'http' => [ // वैकल्पिक
        'timeout' => 5.0,
        'connect_timeout' => 5.0,
        // अधिक कॉन्फ़िगरेशन आइटम के लिए कृपया [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html) संदर्भित करें
    ]
];

ध्यान दें: प्रमाणपत्र निर्देशिका निर्दिष्ट नहीं की गई है, ऊपर दिए गए उदाहरण में इसे ढांचे के payment निर्देशिका में रखा गया है

├── payment
│   ├── alipayCertPublicKey_RSA2.crt
│   ├── alipayRootCert.crt
│   └── appCertPublicKey_2016090900470841.crt

आरंभ करना

सीधे config विधि को आरंभ करें

// कॉन्फ़िगरेशन फ़ाइल config/payment.php प्राप्त करें
$config = config('payment');
Pay::config($config);

ध्यान दें: यदि यह अलिपे सैंडबॉक्स मोड है, तो यह याद रखना महत्वपूर्ण है कि कॉन्फ़िगरेशन फ़ाइल 'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX, को सक्षम करें, यह विकल्प डिफ़ॉल्ट रूप से सामान्य मोड में होता है।

भुगतान (वेब)

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

/**
 * @param Request $request
 * @return string
 */
public function payment(Request $request)
{
    // 1. कॉन्फ़िगरेशन आरंभ करें
    Pay::config(config('payment'));

    // 2. वेब भुगतान
    $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 Yansongda\Pay\Pay;

/**
 * @desc:『अलिपे』असिंक्रोनस सूचनाएँ
 * @param Request $request
 * @return Response
 */
public function alipayNotify(Request $request): Response
{
    // 1. कॉन्फ़िगरेशन आरंभ करें
    Pay::config(config('payment'));

    // 2. अलिपे प्रतिक्रिया प्रक्रिया
    $result = Pay::alipay()->callback($request->post());

    // ===================================================================================================
    // कृपया trade_status का मूल्यांकन करें और अन्य तार्किक मूल्यांकन करें, केवल जब व्यापार अधिसूचना स्थिति TRADE_SUCCESS या TRADE_FINISHED हो, तब अलिपे इसे खरीदार के सफल भुगतान के रूप में मानता है।
    // 1. व्यापारी को यह सत्यापित करने की आवश्यकता है कि इस अधिसूचना डेटा में out_trade_no क्या व्यापारी प्रणाली में बनाए गए ऑर्डर नंबर के रूप में है;
    // 2. जांचें कि total_amount क्या वास्तव में इस आदेश की वास्तविक राशि है (यानी व्यापारी आदेश बनाने के समय की राशि);
    // 3. अधिसूचना में seller_id (या seller_email) की जांच करें कि यह out_trade_no लेनदेन का संबंधित पक्ष है;
    // 4. app_id की पुष्टि करें कि यह उस व्यापारी का है।
    // 5. अन्य व्यावसायिक स्थितियों
    // ===================================================================================================

    // 5. अलिपे प्रतिक्रिया प्रक्रिया
    return new Response(200, [], 'success');
}

ध्यान दें: अलिपे प्रतिक्रिया को प्रबंधित करने के लिए प्लगइन के अपने तरीके return Pay::alipay()->success(); का उपयोग नहीं करना चाहिए, यदि आप मध्यवर्ती सेवाओं का उपयोग करते हैं, तो मध्यवर्ती सेवा की समस्या आ सकती है। इसलिए अलिपे को प्रतिक्रिया देने के लिए वेबमैन की प्रतिक्रिया क्लास 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://pay.yansongda.cn/docs/v3/