yves/mopay

此包已被废弃,不再维护。未建议替代包。

此包提供了从mopay网关进行移动货币支付的便捷方式

4.0.1 2020-10-31 19:02 UTC

README

用于简化在卢旺达的laravel应用程序中需要进行MTN Mobile Money支付的开发者工作的包

安装

要获取最新版本,只需使用Composer要求该项目。

$ composer require yves/mopay

安装后,如果您不是使用自动包发现,那么您需要将Yves\Mopay\Providers\MopayServiceProvider服务提供者在您的config/app.php中注册。

配置

Mopay需要连接配置。

要开始,您需要发布所有供应商资产

$ php artisan mopay:install

这将创建一个可在您的应用中修改以设置配置的config\mopay.php文件。同时,请确保检查本包中原始配置文件在版本之间的更改。

共有六个配置选项

MOPAY_API_URL

默认情况下,有mopay api v1 Ishema Api。这里是支付请求将通过网关的地方。

MOPAY_API_TOKEN

请确保您在Ishema Web Dashboard仪表板的配置部分设置了从那里获得的令牌。

MOPAY_WEBHOOK

这是您的项目接收您请求的支付结果的postback url或称为webhook。请填写实际url,默认为http://app_url:port/mopay/payments/webhook"

MAIL_USERNAME

我们没有忘记那些想要通知用户在他们的支付状态变化时查看电子邮件的人。要访问它,请在此处设置您的gmail或您选择的任何电子邮件,但也要确保您已配置邮件,即smtp的密码和驱动程序。在开发中,我们使用了gmail,效果很好。

APP_NAME_ON_EMAILS

如果您使用电子邮件,则此值将是作为发件人的电子邮件。

USE_NEW_EMAIL_IN_CONTEXT_MODEL

如果您想从当前模型中的更新状态发送电子邮件,请将此设置为true,或者设置为false仅使用在支付创建期间使用的电子邮件。默认为false

config\mopay.php
return [
    "MOPAY_API_URL" => env("MOPAY_API_URL","http://api.ishema.rw/api/v1/debit"),
    "MOPAY_API_TOKEN" => env("MOPAY_API_TOKEN"),
    "MOPAY_WEBHOOK" => env("MOPAY_WEBHOOK",env("APP_URL")."/mopay/payments/webhook"),
    "APP_NAME_ON_EMAILS"=>  env("APP_NAME", "MOPAY RWANDA"),
    "MAIL_USERNAME"=> env("MAIL_USERNAME"),
    "USE_NEW_EMAIL_IN_CONTEXT_MODEL"=> env("USE_NEW_EMAIL_IN_CONTEXT_MODEL", false),
];

初始化支付数据库表

在发布可发布内容后,您只需要迁移一次支付迁移。

$ php artisan migrate

用法

此包可以作为库使用。

示例:使用库

初始化可支付模型

如果您想在模型中使用它,请确保您有这些列

  1. 电话.
  2. email(可选):如果您希望发送他们电子邮件。
  3. name 这将被视为客户名称。

在您的模型中包含 Yves\Mopay\Traits\MopayTrait 特性,如下所示

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use Yves\Mopay\Traits\MopayTrait; // include this trait in your model you wish to be payable

class Passengers extends Model
{
    use MopayTrait;// use the trait

}

在控制器中访问模型并启动支付

实际上这是非常直接的,因为您只需要调用您的模型并调用支付函数。例如,我们将在这个控制器中为乘客启动1,000Rwf的支付。

注意:支付需要您在后台有队列工作者或监听器,所以在您开始之前,请在项目目录中调用此命令

$ php artisan queue:work
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Passenger;

class PassengerPaymentController extends Controller
{

    public function initiatePayment(Passenger $passenger){
        $payment = $passenger->pay(1000);// 1000 is the amount to be requested from this passenger
        if($payment){
            return "payment successfuly initiated";
        }
    }
}

或者您可以向客户展示支付网页界面

目前只有 phoneNumber 能够在前端视图中被修改

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Passenger;
use Yves\Mopay\Utils\PaymentCart;
use Yves\Mopay\Utils\PaymentForm;
use Yves\Mopay\Utils\PaymentFormItem;
use Yves\Mopay\Utils\PaymentProductCart;

class PassengerPaymentController extends Controller
{

    // show user a form to fill in phone number
    public function showPaymentForm(Request $request){

        //initialize payment form
        $paymentForm = new PaymentForm();

        // adding items
        $paymentForm->addItem(new PaymentFormItem(PaymentFormItem::AMOUNT,"1000"));
        $paymentForm->addItem(new PaymentFormItem(PaymentFormItem::CURRENCY,"Rwf"));
        $paymentForm->addItem(new PaymentFormItem(PaymentFormItem::MSISDN,"250783588655",false));
        $paymentForm->addItem(new PaymentFormItem(PaymentFormItem::CLIENT_NAME,"Mukunzi Joshua"));
        $paymentForm->addItem(new PaymentFormItem(PaymentFormItem::EMAIL,"mukunzi.joshua@gmail.com"));

        $paymentCart = new PaymentCart();// if you wish to show cart on the sibar if template  view
        $paymentCart->addProduct(new PaymentProductCart("Ticket",1000));// adding product to cart
        $paymentForm->setCart($paymentCart);// set payment cart

        return $paymentForm->view();// this will return view for the payment
    }

}