【问题标题】:Laravel 5.2 PaymayaSDK integrationLaravel 5.2 PaymayaSDK 集成
【发布时间】:2018-10-19 04:39:20
【问题描述】:

我似乎无法在我的 Laravel 应用程序中包含 PaymayaSDK 我已经运行命令 composer require "paymaya/paymaya-sdk:*" 并且它已经在供应商文件夹中。但是当我尝试在控制器中使用它时,它显示 Class 'PayMayaSDK' not found。我也已经尝试过作曲家dump-autoload

这是我的代码

我错过了什么?

【问题讨论】:

    标签: php laravel laravel-5.2 payment-gateway


    【解决方案1】:

    我也尝试通过 Composer 将 PaymayaSDK 集成到 Laravel,但它也不适合我。

    我所做的是从github下载了PayMaya SDK,然后我把它放在app\Libraries\PayMaya,但是你必须相应地更改sdk文件的命名空间。

    另外我认为您还必须根据您的要求编辑sample/Checkout/User.php

    这是我的示例代码:

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use App\Libraries\PayMaya\lib\PayMayaSDK;
    use App\Libraries\PayMaya\lib\API\Webhook;
    use App\Libraries\PayMaya\lib\API\Checkout;
    use App\Libraries\PayMaya\lib\API\Customization;
    use App\Libraries\PayMaya\lib\Model\Checkout\Item;
    use App\Libraries\PayMaya\lib\Model\Checkout\ItemAmount;
    use App\Libraries\PayMaya\sample\Checkout\User as PayMayaUser;
    use App\Libraries\PayMaya\lib\Model\Checkout\ItemAmountDetails;
    
    class PayMayaTestController extends Controller
    {
        public function setupPayMaya()
        {
            PayMayaSDK::getInstance()->initCheckout(
                env('PAYMAYA_PUBLIC_KEY'),
                env('PAYMAYA_SECRET_KEY'),
                (\App::environment('production') ? 'PRODUCTION' : 'SANDBOX')
            );
    
            $this->setShopCustomization();
            $this->setWebhooks();
    
            return redirect('/');
        }
    
        public function redirectToPayMaya()
        {
            $sample_item_name = 'Product 1';
            $sample_total_price = 1000.00;
    
            $sample_user_phone = '1234567';
            $sample_user_email = 'test@gmail.com';
    
            $sample_reference_number = '1234567890';
    
            PayMayaSDK::getInstance()->initCheckout(
                env('PAYMAYA_PUBLIC_KEY'),
                env('PAYMAYA_SECRET_KEY'),
                (\App::environment('production') ? 'PRODUCTION' : 'SANDBOX')
            );
    
            // Item
            $itemAmountDetails = new ItemAmountDetails();
            $itemAmountDetails->tax = "0.00";
            $itemAmountDetails->subtotal = number_format($sample_total_price, 2, '.', '');
            $itemAmount = new ItemAmount();
            $itemAmount->currency = "PHP";
            $itemAmount->value = $itemAmountDetails->subtotal;
            $itemAmount->details = $itemAmountDetails;
            $item = new Item();
            $item->name = $sample_item_name;
            $item->amount = $itemAmount;
            $item->totalAmount = $itemAmount;
    
            // Checkout
            $itemCheckout = new Checkout();
    
            $user = new PayMayaUser();
            $user->contact->phone = $sample_user_phone;
            $user->contact->email = $sample_user_email;
    
            $itemCheckout->buyer = $user->buyerInfo();
            $itemCheckout->items = array($item);
            $itemCheckout->totalAmount = $itemAmount;
            $itemCheckout->requestReferenceNumber = $sample_reference_number;
            $itemCheckout->redirectUrl = array(
                "success" => url('returl-url/success'),
                "failure" => url('returl-url/failure'),
                "cancel" => url('returl-url/cancel'),
            );
            $itemCheckout->execute();
            $itemCheckout->retrieve();
    
            return redirect()->to($itemCheckout->url);
        }
    
        private function setShopCustomization()
        {
            $shopCustomization = new Customization();
            $shopCustomization->get();
    
            $shopCustomization->logoUrl = asset('logo.jpg');
            $shopCustomization->iconUrl = asset('favicon.ico');
            $shopCustomization->appleTouchIconUrl = asset('favicon.ico');
            $shopCustomization->customTitle = 'PayMaya Payment Gateway';
            $shopCustomization->colorScheme = '#f3dc2a';
    
            $shopCustomization->set();
        }
    
        private function setWebhooks()
        {
            $webhooks = Webhook::retrieve();
            foreach ($webhooks as $webhook) {
                $webhook->delete();
            }
    
            $successWebhook = new Webhook();
            $successWebhook->name = Webhook::CHECKOUT_SUCCESS;
            $successWebhook->callbackUrl = url('callback/success');
            $successWebhook->register();
    
            $failureWebhook = new Webhook();
            $failureWebhook->name = Webhook::CHECKOUT_FAILURE;
            $failureWebhook->callbackUrl = url('callback/error');
            $failureWebhook->register();
        }
    }
    

    【讨论】:

    • 感谢您,抱歉回复晚了,我尝试了您的代码,但仍然显示“找不到 Class 'App\Libraries\PayMaya\lib\PayMayaSDK'”。我尝试将 PayMayaSDK 的命名空间更改为“命名空间库\PayMaya”,但不确定它是否正确。
    • 没关系,我只是不太了解命名空间,但感谢您,我现在可以使用它了! :)
    【解决方案2】:

    看来你没有正确配置。

    Please read the usage section.

    安装后需要将 PayMaya-PHP-SDK 替换为供应商。

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 2016-08-23
      • 2017-03-26
      • 2016-06-25
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2016-10-08
      相关资源
      最近更新 更多