appslabke / africastalking
Africa's Talking官方PHP SDK
Requires
- php: >=5.3.0
- guzzlehttp/guzzle: ^7.0.1
Requires (Dev)
- phpunit/phpunit: ^9.0
README
此SDK为用PHP编写的应用程序提供了方便地访问Africa's Talking API的方式。
文档
请查看API文档。
安装
您可以通过composer或下载源代码来安装PHP SDK。
通过Composer
安装SDK的推荐方式是使用Composer。
composer require africastalking/africastalking
用法
SDK需要使用您的用户名和API密钥进行实例化,您可以从仪表板获取这些信息。
您可以使用此SDK用于生产或沙盒应用程序。对于沙盒,应用程序用户名总是
sandbox
use AfricasTalking\SDK\AfricasTalking; $username = 'YOUR_USERNAME'; // use 'sandbox' for development in the test environment $apiKey = 'YOUR_API_KEY'; // use your sandbox app API key for development in the test environment $AT = new AfricasTalking($username, $apiKey); // Get one of the services $sms = $AT->sms(); // Use the service $result = $sms->send([ 'to' => '+2XXYYYOOO', 'message' => 'Hello World!' ]); print_r($result);
有关更多用法示例,请参阅示例。
实例化
实例化类将为您提供包含可用方法的对象
$AT = new AfricasTalking($username, $apiKey):实例化类- 获取可用服务
应用程序
fetchApplicationData():获取应用程序信息。例如,余额
话费
-
send($parameters, $options):发送话费-
$parameters: 包含以下键的关联数组
recipients:包含以下键的数组的数组phoneNumber:话费接收者。必需currencyCode:3位ISO格式货币代码(例如KES、USD、UGX等)。必需amount:发送的金额。必需
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
短信
-
send($options):发送消息message:短信内容。必需to:电话号码数组。必需from:与您的Africa's Talking账户注册的简码或字母数字ID。enqueue:如果您希望向API发送尽可能多的消息而不等待来自电信运营商的确认,则将其设置为true。
-
fetchMessages($options):获取您的消息lastReceivedId:这是您最后处理的消息的ID。默认为0
以下方法已移动到内容服务,但已在短信上保留以实现向后兼容
sendPremium($options):发送预付费短信。调用$content->send($options)createSubscription($options):创建预付费订阅。调用$content->createSubscription($options)fetchSubscriptions($options):获取您的预付费订阅数据。调用$content->fetchSubscriptions($options)deleteSubscription($options):从高级订阅中删除一个电话号码。调用$content->$deleteSubscription($options)
内容
-
send($options):发送高级短信message:短信内容。必需to:电话号码数组。必需from:您在Africa's Talking账户中注册的简码。必需keyword:您的高级产品关键词linkId:当用户向您的onDemand服务发送消息时,我们转发linkId到您的应用retryDurationInHours:“这指定了您的订阅消息在未能成功发送给订阅者时应重试的小时数”
-
createSubscription($options):创建高级订阅shortCode:映射到您的账户的高级短码。必需keyword:在上述短码下的高级关键词,并且也映射到您的账户。必需phoneNumber:要订阅的电话号码必需checkoutToken:用于验证订阅请求的令牌必需。请参阅令牌服务
-
fetchSubscriptions($options):获取您的高级订阅数据shortCode:映射到您的账户的高级短码。必需keyword:在上述短码下的高级关键词,并且也映射到您的账户。必需lastReceivedId:您认为的最后一个订阅的ID。默认为0
-
deleteSubscription($options):从高级订阅中删除一个电话号码shortCode:映射到您的账户的高级短码。必需keyword:在上述短码下的高级关键词,并且也映射到您的账户。必需phoneNumber:要订阅的电话号码必需
支付
-
mobileCheckout($parameters, $options):向客户的手机钱包账户收费-
$parameters: 包含以下键的关联数组
productName:在Africa's Talking上的支付产品。必需providerChannel:充电时考虑的提供商通道。phoneNumber:客户电话号码(国际格式)。必需currencyCode:3位ISO格式货币代码(例如KES、USD、UGX等)。必需amount:要收费的金额。必需metadata:与交易关联的附加数据。必需
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
mobileB2C($parameters, $options):向客户发送手机钱包-
$parameters: 包含以下键的关联数组
-
productName:在Africa's Talking上的支付产品。必需 -
recipients:最多10个接收者的列表。每个接收者有phoneNumber:客户电话号码(国际格式)。必需currencyCode:3位ISO格式货币代码(例如KES、USD、UGX等)。必需amount:要支付的金额。必需reason:支付的目的。请参阅payments::REASON*以获取支持的原因。必需metadata:与交易关联的附加数据。必需
-
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
mobileB2B($parameters, $options):向企业(例如银行)发送手机钱包-
$parameters: 包含以下键的关联数组
productName:在Africa's Talking上的支付产品。必需provider:促进此交易的支付提供商。请参阅payments::PROVIDER*以获取支持提供商。必需transferType:描述正在进行的支付类型。请参阅payments::TRANSFER_TYPE*以获取支持的交易类型。必需destinationChannel:将接收付款的提供商名称或号码。必需destinationAccount:企业用于在提供的destinationChannel上接收资金的名称。必需currencyCode:3位ISO格式货币代码(例如KES、USD、UGX等)。必需amount:要支付的金额。必需requester:当使用B2B购买电力令牌时,KPLC将发送令牌的电话号码。metadata:与交易关联的附加数据。必需
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
mobileData($parameters, $options):向客户发送移动数据-
$parameters: 包含以下键的关联数组
-
productName:在Africa's Talking上的支付产品。必需 -
recipients:接收者列表。每个接收者有phoneNumber:客户电话号码(国际格式)。必需quantity:移动数据量。必需unit:移动数据单位。可以是MB或GB。必需validity:移动数据的有效期。必须是Day、Week或Month之一。必需metadata:与交易关联的附加数据。必需
-
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
bankCheckoutCharge($parameters, $options):向客户的银行账户收费-
$parameters: 包含以下键的关联数组
-
productName:在Africa's Talking上的支付产品。必需 -
bankAccount:要收费的银行账户accountName:银行账户名称。必需accountNumber:账户号码。必需bankCode:我们分配的银行 6位整数代码。查看payments::BANK*了解支持的银行。必需dateOfBirth:账户所有者的出生日期(格式为YYYY-MM-DD)。Zenith Bank Nigeria必需。
-
currencyCode:3位ISO格式货币代码(目前仅支持NGN)。必需 -
amount:要收费的金额。必需 -
narration:交易简短描述。必需 -
metadata:与交易关联的附加数据。必需
-
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
bankCheckoutValidate($parameters):验证银行结账费用transactionId:来自银行收费请求返回的交易ID。必需otp:您收取的客户提供的单次密码。必需
-
bankTransfer($parameters, $options):向银行账户汇款-
$parameters: 包含以下键的关联数组
-
productName:在Africa's Talking上的支付产品。必需 -
recipients:接收者列表。每个接收者有-
bankAccount:收款银行账户accountName:银行账户名称。必需accountNumber:账户号码。必需bankCode:我们分配的银行 6位整数代码。查看payments::BANK*了解支持的银行。必需dateOfBirth:账户所有者的出生日期(格式为YYYY-MM-DD)。Zenith Bank Nigeria必需。
-
currencyCode:3位ISO格式货币代码(目前仅支持NGN)。必需 -
amount:要支付的金额。必需 -
narration:交易简短描述。必需 -
metadata:与交易关联的附加数据。必需
-
-
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
cardCheckoutCharge($parameters, $options):收取客户的支付卡费用-
$parameters: 包含以下键的关联数组
-
productName:在Africa's Talking上的支付产品。必需 -
paymentCard:要收取费用的支付卡number:支付卡号码。必需cvvNumber:3或4位卡验证值。必需expiryMonth:卡的有效月(例如8)。必需authToken:支付卡的ATM PIN。必需countryCode:卡发行国家的2位国家代码(目前仅支持NG)。必需
-
checkoutToken:由我们的API在先前的交易中向客户收取支付卡费用后生成的令牌。当使用checkoutToken时,不应填充paymentCard数据。 -
currencyCode:3位ISO格式货币代码(目前仅支持NGN)。必需 -
amount:要收费的金额。必需 -
narration:交易简短描述。必需 -
metadata:与交易关联的附加数据。必需
-
-
$options: 包含以下键的可选关联数组
idempotencyKey:用于制作幂等请求的键
-
-
cardCheckoutValidate($parameters):验证卡结账费用transactionId:来自卡收费请求返回的交易ID。必需otp:您收取的客户提供的单次密码。必需
-
walletTransfer($parameters):将资金从一个支付产品转移到另一个支付产品productName:在Africa's Talking上的支付产品。必需targetProductCode:在Africa's Talking上接收资金的支付产品的唯一代码。必需currencyCode:3位ISO格式货币代码。必需amount:要转移的金额。必需metadata:与交易关联的附加数据。必需
-
topupStash($parameters):将资金从一个支付产品转移到应用程序的储备金productName:在Africa's Talking上的支付产品。必需currencyCode:3位ISO格式货币代码。必需amount:要转移的金额。必需metadata:与交易关联的附加数据。必需
-
fetchProductTransactions($parameters):获取支付产品交易-
productName:在Africa's Talking上的支付产品。必需 -
filters:获取交易时使用的筛选器pageNumber:要获取结果的页码。从1开始。必需count:要获取的结果数量。必需startDate:获取时要考虑的起始日期。endDate:获取时要考虑的结束日期。category:获取时要考虑的类别。provider:获取时要考虑的提供者。status:获取时要考虑的状态。source:获取时要考虑的来源。destination:获取时要考虑的目的地。providerChannel:获取时要考虑的提供者渠道。
-
-
fetchWalletTransactions($parameters):获取支付钱包交易-
filters:获取交易时使用的筛选器pageNumber:要获取结果的页码。从1开始。必需count:要获取的结果数量。必需startDate:获取时要考虑的起始日期。endDate:获取时要考虑的结束日期。categories:获取时要考虑的类别,以逗号分隔的列表。
-
-
findTransaction($parameters):查找特定交易transactionId:要查找的交易ID。必需
-
fetchWalletBalance():获取您的支付钱包余额
语音
-
call($options):发起电话呼叫to:您想要拨打的电话号码(使用国际格式)。必需from:Africa's Talking上的电话号码(使用国际格式)。必需
-
fetchQueuedCalls($options):获取电话号码上的排队呼叫phoneNumber: 对应您的 Africa's Talking 账户的电话号码(国际格式)。必需name: 获取特定队列的呼叫。
-
uploadMediaFile($options): 上传语音媒体文件phoneNumber: 对应您的 Africa's Talking 账户的电话号码(国际格式)。必需url: 要上传的文件的URL。应以http(s)://开头。必需
MessageBuilder
当回调URL收到语音API的POST请求时构建语音xml。可以将操作链式添加以创建XML字符串。
$voiceActions = $voice->messageBuilder(); $xmlresponse = $voiceActions ->getDigits($options) ->say($text) ->record() ->build();
-
say($text): 添加一个Say操作 -
text: 将读给用户的文本(英文)。 -
play($url): 添加一个Play操作url: 音频文件的公开URL。此文件将回放给用户。
-
getDigits($options): 添加一个GetDigits操作numDigits: 从用户处获取的数字数量timeout: 获取用户数字的超时时间(秒)。finishOnKey: 用于终止获取数字操作的键。callbackUrl: 用于转发获取数字操作结果的URL。
-
dial($options): 添加一个Dial操作phoneNumbers: 要拨打的电话号码数组(国际格式)。必需record: 布尔值 - 是否要录制对话。sequenntial: 布尔值 - 如果提供了多个phoneNumbers,则确定电话号码是否将依次或同时拨打。callerId: 您想要拨出的 Africa's Talking 电话号码。ringBackTone: 用户在电话接通前应听到的媒体播放的URL位置。maxDuration: 通话的最大时间(秒)。
-
conference(): 添加一个Conference操作 -
record($options): 添加一个Record操作finishOnKey: 用于终止录音操作的键。maxLength: 录音的最大时间(秒)。timeout: 从用户处获取录音的超时时间(秒)。trimSilence: 布尔值 - 指定是否要删除录音中用户静默的初始和结束部分。playBeep: 布尔值 - 指定API在开始录音时是否应播放蜂鸣声。callbackUrl: 用于转发录音操作结果的URL。
-
enqueue($options): 添加一个Enqueue操作holdMusic: 用户在等待时播放的文件的URL。name: 将通话放入的队列名称。
-
deqeue($options): 添加一个Dequeue操作phoneNumber: 用户为加入队列而拨打的对应您的 Africa's Talking 账户的电话号码。必需name: 您想要从其中退出的队列名称。
-
reject(): 添加一个Reject操作 -
redirect($url): 添加一个Redirect操作url: 转移通话控制的URL。
-
build(): 在链式某些操作后构建xml
Token
-
createCheckoutToken($options): 创建一个结账令牌phoneNumber: 为其创建结账令牌的电话号码
-
generateAuthToken(): 生成一个用于认证API请求的认证令牌,而不是您的API密钥。
测试SDK
SDK使用PHPUnit作为测试运行器。
要运行可用的测试,请从项目的根目录运行
# Configure needed fixtures, e.g sandbox api key, Africa's Talking products cp tests/Fixtures.php.tpl tests/Fixtures.php # Run tests phpunit
问题
如果您发现一个错误,请在我们GitHub上的问题跟踪器上提交问题。