samuelbie/mpesa

这是与莫桑比克Mpesa Open API通信的接口


README

Ultima Versão estável Total Downloads GitHub issues GitHub forks GitHub stars License Twitter

MPesa Laravel SDK

正如其名,Laravel MPESA SDK是一个用于通过MPESA进行在线支付的SDK。

从此SDK开始,您可以与Open-api通信,并执行收集、转账、查询和其他由Mpesa提供的操作。

安装

最基础的安装方法是使用依赖管理器Composer。这实际上是我推荐的。

composer require samuelbie/mpesa

或者,只需将其添加到您的依赖中(composer.json

"samuelbie/mpesa": "^1.5",

然后执行以下命令

composer update

配置

所有配置都将保存在内部配置文件mpesa.php中,其外观如下

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | API host of M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may specify the API host provided by Vodacom for API operations
    |
    */
    'api_host'              => env('MPESA_API_HOST', 'api.sandbox.vm.co.mz'),

    /*
    |--------------------------------------------------------------------------
    | Public key for use in M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may specify the public key provided by Vodacom to you
    |
    */
    'public_key'            => env('MPESA_PUBLIC_KEY'),
    /*
    |--------------------------------------------------------------------------
    | API Key of M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may specify the API key provided by Vodacom to you
    |
    */
    'api_key'               => env('MPESA_API_KEY'),

    /*
    |--------------------------------------------------------------------------
    | Origin of M-Pesa API
    |--------------------------------------------------------------------------
    |
    |
    */
    'origin'                => env('MPESA_ORIGIN', '*'),

    'verifySSL'             => false,

    /*
    |--------------------------------------------------------------------------
    | Service Provider Code of M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may specify the service provider code of M-Pesa provided by Vodacom to you
    |
    */
    'service_provider_code' => env('MPESA_PROVIDER_NUMBER', '171717'),

    /*
    |--------------------------------------------------------------------------
    | Initiator Identifier of M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may the initiator identifier provided by Vodacom to you
    |
    */
    'initiator_identifier'  => env('MPESA_INITIATOR_IDENTIFIER'),

    /*
    |--------------------------------------------------------------------------
    | Security credential of M-Pesa API
    |--------------------------------------------------------------------------
    |
    | Here you may specify the security credential provided by Vodacom to you
    |
    */
    'security_credential'   => env('MPESA_SECURITY_CREDENTIAL'),


    "c2b_endpoint"          => env('MPESA_C2B_ENDPOINT', ':18352/ipg/v1x/c2bPayment/singleStage/'),
    "b2c_endpoint"          => env('MPESA_B2C_ENDPOINT', ':18345/ipg/v1x/b2cPayment/'),
    "query_endpoint"        => env('MPESA_Query_ENDPOINT', ':18353/ipg/v1x/queryTransactionStatus/'),
    "reversal_endpoint"     => env('MPESA_Reversal_ENDPOINT', ':18354/ipg/v1x/reversal/'),

    "c2b_method"        => env('MPESA_C2B_METHOD', "POST"),
    "b2c_method"        => env('MPESA_B2C_METHOD', "POST"),
    "query_method"      => env('MPESA_Query_METHOD', "GET"),
    "reversal_method"   => env('MPESA_Reversal_METHOD', "PUT"),
];

在这种情况下,您需要在您的.env文件中传递所有本地或生产凭证,并附加以下密钥。

MPESA_API_HOST='api.vm.co.mz' #ou api.sandbox.vm.co.mz
MPESA_API_KEY = 'api Key'
MPESA_PUBLIC_KEY = 'Chave Pubica='
MPESA_PROVIDER_NUMBER='171700'
MPESA_ORIGIN='*'
MPESA_INITIATOR_IDENTIFIER='JMhMnVM3dddddRMA3'
MPESA_SECURITY_CREDENTIAL='Sp0ng3dddd'

使用方法

可用方法

收集(C2B)

签名

/**
* Initiates a C2B transaction on the M-Pesa API.
* @param float $amount Valor
* @param string $msisdn numero de telefone (Ex: 847386187 / +258850233654)
* @param string $reference Referencia da transação. Ex: Compra de Modem 3G
* @param string $third_party_reference  Referencia única da transação. Ex: 1285GVHss
* @return TransactionResponseInterface
* @throws Exception
 */
public function c2b(float $amount, string $msisdn, string $reference, string $third_party_reference): TransactionResponseInterface

示例

use Samuelbie\Mpesa\Transaction;
$mpesa = new Transaction();
$response = $mpesa->c2b('10','258845968745', 'reference' ,'unique_reference');

向客户转账(B2C)

签名

/**
 * Initiates a B2C transaction on the M-Pesa API.
 * @param float $amount Valor
 * @param string $msisdn numero de telefone (Ex: 847386187 / +258850233654)
 * @param string $reference Referencia da transação. Ex: Pagamento de comissão de venda
 * @param string $third_party_reference  Referencia única da transação. Ex: 1285GVHss
 * @return TransactionResponseInterface
 * @throws Exception
 */
public function b2c(float $amount, string $msisdn, string $reference, string $third_party_reference): TransactionResponseInterface

示例

use Samuelbie\Mpesa\Transaction;
$mpesa = new Transaction();
$response = $mpesa->b2c('10','258845968745', 'Comissao' ,'unique_reference');

向实体转账(B2B)

撤销(Reversal)

签名

    /**
     * Initiates a Reversal transaction on the M-Pesa API.
     * @param float $amount Valor a ser revertido
     * @param string $transaction_id ID Transação que precisa ser revertida
     * @param string $third_party_reference  Referencia única da transação. Ex: 1285GVHss
     * @return TransactionResponseInterface
    */
    public function reversal(
        float $amount,
        string $transaction_id,
        string $third_party_reference
    ): TransactionResponseInterface

示例

use Samuelbie\Mpesa\Transaction;
$mpesa = new Transaction();
$response = $mpesa->reversal(10,'ACK19SSS', 'Agua2020');

查询交易状态

/**
 * Initiates a transaction Query on the M-Pesa API.
 * @param string $query_reference Transaction id/ Conversation ID (Gerado pelo MPesa)
 * @param string $third_party_reference  Referencia única da transação (Gerado pelo sistema de terceiro). Ex: 1285GVHss
 * @return TransactionResponseInterface
*/
public function query(string $query_reference, string $third_party_reference): TransactionResponseInterface

示例

use Samuelbie\Mpesa\Transaction;
$mpesa = new Transaction();
$response = $mpesa->query('56b97c7a59dd40738843ca7234796c4d', 'Agua2020');

结果

所有操作或可用方法都返回一个TransactionResponseInterface对象,该接口要求实现它的类实现这些方法

    /**
     * Returns the Response Code
     *
     * @return string
     */
    public function getCode(): string;

    /**
     * Returns the response description
     *
     * @return string
     */
    public function getDescription(): string;

    /**
     * Returns the TransactionID
     *
     * @return string
     */
    public function getTransactionID(): string;

    /**
     * Returns the Conversation ID
     *
     * @return string
     */
    public function getConversationID(): string;

    /**
     * Returns the Transaction Status from Query API
     *
     * @return string
     */
    public function getTransactionStatus(): string;

    /**
     * Returns the raw response from M-Pesa API
     *
     * @return string
     */
    public function getResponse(): string;

    /**
     * Returns the Response Code
     * @return string
     */
    public function getStatusCode(): string;


    /**
     * Returns the JSON response from M-Pesa API
     * @return string
     */
    public function getBody();

建议

建议用户首先阅读Open-Api的文档并理解其工作原理,以便理解响应代码和消息。

贡献

在此,我们要感谢PHP abdulmueid\mpesa包的创建者,因为此包是他们创建的包的适配。这是我的Kanimanbo献给你们的

安全漏洞

如果您在此包中发现任何漏洞,请通过samuel.bie75@gmail.com发送电子邮件给Samuel Bié。所有安全漏洞都将得到适当的分析和处理。

许可

Mpesa Laravel SDK是在MIT许可下发布的开源代码。

⚡ 拥抱 ⚡