edwinmugendi / sapamapay
该包的最新版本(dev-master)没有可用的许可证信息。
Sapama Pay API - MPESA, Equitel, Sapama Pay API
dev-master
2023-09-26 03:53 UTC
Requires
- php: >=4.0.2
This package is auto-updated.
Last update: 2024-09-26 06:06:58 UTC
README
SapamaPay API
此库是以下Safaricom MPESA API的API包装器:Safaricom MPESA API
##安装
###要求
PHP >=4.0.2
将 edwinmugendi/sapamapay
添加到 composer.json
。
"edwinmugendi/sapamapay": "master"
运行 composer update
以拉取最新版本。
或者运行
composer require edwinmugendi/sapamapay
没有composer。下载源代码,并 require_once
autoload.php
require_once __DIR__ . '/../vendor/autoload.php';
##测试 更新 $api
变量为您要运行的API。
<?php require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload use Edwinmugendi\Sapamapay\MpesaApi; $mpesa_api = new MpesaApi(); $configs = array( 'AccessToken' => 'ACCESSTOKEN', 'Environment' => 'sandbox', 'Content-Type' => 'application/json', 'Verbose' => 'true', ); $api = 'generate_token'; if ($api == 'stk_push') { $parameters = array( 'BusinessShortCode' => '603013', 'Password' => 'TkNZpjhQ', 'Timestamp' => '20171010101010', 'TransactionType' => 'TransactionType', 'Amount' => '10', 'PartyA' => '254708374149', 'PartyB' => '603013', 'PhoneNumber' => '254708374149', 'CallBackURL' => 'https://url', 'AccountReference' => '1232', 'TransactionDesc' => 'TESTING', ); } else if ($api == 'stk_query') { $parameters = array( 'BusinessShortCode' => '603013', 'Password' => 'TkNZpjhQ', 'Timestamp' => '20171010101010', 'CheckoutRequestID' => 'ws_co_123456789', ); } else if ($api == 'account_balance') { $parameters = array( 'CommandID' => 'AccountBalance', 'PartyA' => '603013', 'IdentifierType' => '4', 'Remarks' => 'Remarks', 'Initiator' => 'apiop41', 'SecurityCredential' => 'TkNZpjhQ', 'QueueTimeOutURL' => 'https://url', 'ResultURL' => 'https://url', ); } else if ($api == 'b2b_payment_request') { $parameters = array( 'CommandID' => 'BusinessPayBill', 'Amount' => '10', 'PartyA' => '603013', 'SenderIdentifierType' => '4', 'PartyB' => '600000', 'RecieverIdentifierType' => '4', 'Remarks' => 'Remarks', 'Initiator' => 'apiop41', 'SecurityCredential' => 'TkNZpjhQ', 'QueueTimeOutURL' => 'https://url', 'ResultURL' => 'https://url', 'AccountReference' => '12', ); } else if ($api == 'b2c_payment_request') { $parameters = array( 'InitiatorName' => 'apiop41', 'SecurityCredential' => 'TkNZpjhQ', 'CommandID' => 'SalaryPayment', 'Amount' => '10', 'PartyA' => '603013', 'PartyB' => '254708374149', 'Remarks' => 'Remarks', 'QueueTimeOutURL' => 'https://url', 'ResultURL' => 'https://url', 'Occasion' => '12', ); } else if ($api == 'reversal') { $parameters = array( 'CommandID' => 'TransactionReversal', 'ReceiverParty' => '254708374149', 'RecieverIdentifierType' => '1', 'Remarks' => 'remarks', 'Initiator' => 'apiop41', 'SecurityCredential' => 'TkNZpjhQ', 'QueueTimeOutURL' => 'https://url', 'ResultURL' => 'https://url', 'TransactionID' => '11211', 'Occasion' => '12', 'Amount' => '10', ); } else if ($api == 'transaction_status_request') { $parameters = array( 'CommandID' => 'TransactionStatusQuery', 'PartyA' => '254708374149', 'IdentifierType' => '603013', 'Remarks' => 'remarks', 'Initiator' => 'apiop41', 'SecurityCredential' => 'TkNZpjhQ', 'QueueTimeOutURL' => 'https://url', 'ResultURL' => 'https://url', 'TransactionID' => '11211', 'Occasion' => '12', ); } else if ($api == 'c2b_register_url') { $parameters = array( 'ValidationURL' => 'https://url', 'ConfirmationURL' => 'https://url', 'ResponseType' => 'Completed', 'ShortCode' => '603013', ); } else if ($api == 'c2b_simulate') { $parameters = array( 'CommandID' => 'CustomerPayBillOnline', 'Amount' => '100', 'Msisdn' => '254708374149', 'BillRefNumber' => 'TESTING', 'ShortCode' => '603013', ); } else if ($api == 'generate_token') { $parameters = array( 'ConsumerKey' => 'CONSUMER_KEY', 'ConsumerSecret' => 'CONSUMER_SECRET', ); }//E# if statement $response = $mpesa_api->call($api, $configs, $parameters); echo 'JSON response: <p>'; echo json_encode($response); echo '<p>Response var_dump:<p>'; var_dump($response);
##认证 首先调用 generate_token
获取访问令牌。获取访问令牌后,将其设置在 $configs
的 AccessToken
指索引中,以便进行其他调用。
##配置 $configs
参数具有以下索引
AccessToken
- 访问令牌。通过调用 `generate_token' API 获取访问令牌Environment
- 可以是sandbox
(当测试您的应用程序时)或live
(当您的应用程序处于生产状态时)Content-Type
- 应始终为application/json
Verbose
- (可选)为了便于调试,将此索引设置为以详细模式运行您的代码,即 echo 和 var dump 参数Url
- (可选),这会覆盖端点。默认情况下,我们使用 https://sandbox.safaricom.co.ke/ 和 https://api.safaricom.co.ke/ 分别用于沙箱和生产环境。不要忘记斜杠(/)作为结尾
$configs = array( 'AccessToken' => 'ACCESSTOKEN', 'Environment' => 'sandbox', 'Content-Type' => 'application/json', 'Verbose' => 'true', //THIS );
##响应 响应有以下索引
Environment
- live 或 sandboxName
- 调用的API名称HttpVerb
- get 或 postHttpStatusCode
- HTTP状态码HttpStatusMessage
- HTTP状态消息Message
- 自定义消息Response
- 响应数组Endpoint
- 调用的URLParameters
- 传递到URL的参数ExpectedResponse
- 预期响应参数,如API中的文档
示例Json
{"Environment":"sandbox","Name":"Generate Token","HttpVerb":"get","HttpStatusCode":"200","HttpStatusMessage":"Success","Message":"Success","Response":{"access_token":"YdiXeOksM3G9WVgl7jR1pCtT2Ckt","expires_in":"3599"},"Endpoint":"https:\/\/sandbox.safaricom.co.ke\/oauth\/v1\/generate","Parameters":{"ConsumerKey":"Li2dKUeKhlX6Gw0Fpkbq6LEBndlpOuxZ","ConsumerSecret":"hX3Yyd0BGMBiYaln"},"ExpectedResponse":{"Expiry":{"name":"Token expiry time in seconds.","type":"Integer","sample_value":"3599"},"Access_Token":{"name":"Access token to access other APIs","type":"Alpha-Numeric","sample_value":"O22vJy6rnN2nRAnOPqZ8dkyGxmXG"}}}
示例PHP Var dump
array (size=10) 'Environment' => string 'sandbox' (length=7) 'Name' => string 'Generate Token' (length=14) 'HttpVerb' => string 'get' (length=3) 'HttpStatusCode' => string '200' (length=3) 'HttpStatusMessage' => string 'Success' (length=7) 'Message' => string 'Success' (length=7) 'Response' => array (size=2) 'access_token' => string 'YdiXeOksM3G9WVgl7jR1pCtT2Ckt' (length=28) 'expires_in' => string '3599' (length=4) 'Endpoint' => string 'https://sandbox.safaricom.co.ke/oauth/v1/generate' (length=49) 'Parameters' => array (size=2) 'ConsumerKey' => string 'Li2dKUeKhlX6Gw0Fpkbq6LEBndlpOuxZ' (length=32) 'ConsumerSecret' => string 'hX3Yyd0BGMBiYaln' (length=16) 'ExpectedResponse' => array (size=2) 'Expiry' => array (size=3) 'name' => string 'Token expiry time in seconds.' (length=29) 'type' => string 'Integer' (length=7) 'sample_value' => string '3599' (length=4) 'Access_Token' => array (size=3) 'name' => string 'Access token to access other APIs' (length=33) 'type' => string 'Alpha-Numeric' (length=13) 'sample_value' => string 'O22vJy6rnN2nRAnOPqZ8dkyGxmXG' (length=28)
##帮助 如需API集成帮助、错误或协助,请通过 edwinmugendi@gmail.com