chencha / pesapal
Pesapal支付集成
Requires
- beberlei/assert: ~2.1
- beberlei/lite-cqrs: ~1.1
- guzzle/guzzle: ~3.9
- heybigname/event-dispatcher: ~1.1
- laracasts/commander: 1.3.10
- mnapoli/php-di: ~4.4
- phpspec/phpspec: ~2.0
Requires (Dev)
- behat/behat: ~3
- behat/mink: 1.6.*
- behat/mink-extension: dev-master
- behat/mink-goutte-driver: *
- fzaninotto/faker: ~1.4
This package is not auto-updated.
Last update: 2024-09-24 02:57:48 UTC
README
##Pesapal PHP模块
##简介 该应用允许以框架和数据库无关的方式与Pesapal集成。
这是通过向应用的其他部分触发和调度支付事件来实现的。
该应用目前处于开发阶段。
##安装
从应用根目录运行
composer require chencha/pesapal
这应该会安装此包。
##入门
##配置
在应用启动时,必须提供几个对象。以下列出这些对象
###凭据
这是一个简单的值对象
$credentials= new \Pesapal\Values\Credentials("<<consumer_key>>","<<consumer_secret>>");
###演示状态
此对象控制与实时或演示模式下的Pesapal应用程序的交互。当处于演示模式时,对象应以false构造,当处于实时模式时以true构造
$demoStatus= new \Pesapal\Values\DemoStatus(true);
###Iframe尺寸
对于iframe使用,应提供尺寸。您可以覆盖任何默认值
$iframeDimensions=new \Pesapal\Values\IframeDimensions(
$height="620px",
$width="500px",
$autoscrolling="no",
$iframeBorder=0
);
###监听器
####Iframe生成事件监听器
此类应监听并处理新Iframe的生成。
监听器必须实现
\Pesapal\Contracts\IFrameListener
提供了一个示例监听器,它简单地输出了iframe
<?php
class ShowIframe implements \Pesapal\Contracts\IFrameListener {
function show($iframe)
{
echo $iframe;
}
}
监听器应作为数组传递,例如
$iframe_listeners= [new ShowIframe()];
####支付状态更改事件监听器
此类应监听并处理订单支付状态的更改。
这通常由从Pesapal向您的应用发送的IPN引起。
监听器必须实现
\Pesapal\Contracts\PaymentListener
以下是一个示例监听器
class SendThankYouEmail implements \Pesapal\Contracts\PaymentListener {
public function paid(\Pesapal\Entities\Payment $item)
{
echo "Thank you for payment " . $item->getIPNData()->getMerchantReference();
}
public function failed(\Pesapal\Entities\Payment $item)
{
echo "Payment failed " . $item->getIPNData()->getMerchantReference();
}
public function inProgress(\Pesapal\Entities\Payment $item)
{
echo "Payment in progress " . $item->getIPNData()->getMerchantReference();
}
}
监听器应作为数组传递,例如
$ipn_listeners=[new SendThankYouEmail()];
###回调URL
这是您希望用户在付款后重定向到的URL
##整合所有配置
最终的配置文件将包含所有可能的配置,并以此方式构建
$config= new \Pesapal\Config($credentials,$demoStatus,$iframeDimensions,$iframe_listeners,$ipn_listeners,$callback_url);
##下订单
支付模块的精髓是处理订单,让我们开始吧。
Pesapal订单如下提供
$faker= Faker\Factory::create();
$order= new Pesapal\Entities\Order(
rand(10,1000),
$faker->paragraph(),
$faker->email,
$faker->firstName,
$faker->lastName,
$faker->phoneNumber,
uniqid("trans_"),
'MERCHANT'
);
您应将伪造的数据替换为您自己的客户信息
一旦订单准备好,您就发送命令生成订单的iframe,如下所示
$pesapal=\Pesapal\Pesapal::make($config);
$pesapal->generateIframe($order);
当iframe生成时,所有iframe监听器都将调用具有iframe的show方法。
##设置IPN
您必须将IPN类放在您之前提供的回调类中响应的位置
$ipn_data= new \Pesapal\Values\IPNData($_GET['pesapal_merchant_reference'],$_GET['pesapal_notification_type'],$_GET['pesapal_transaction_tracking_id']);
$pesapal=\Pesapal\Pesapal::make($config);
$pesapal->ipn($ipn_data);
就这样,当新的IPN到来时,所有支付状态监听器上的相关方法(已支付、失败、进行中)将被调用。
##手动确认支付 您可以通过商户参考来确认您的支付。请注意,如果您的参考不是唯一的,这可能不会起作用。
$pesapal=\Pesapal\Pesapal::make($config);
$merchant_ref='54a3';
$result=$pesapal->queryStatus($merchant_ref);
##示例
要查看上述代码的实际应用,请查看示例文件
##注意事项
在安装过程中,您可能会遇到版本兼容性问题。这是因为应用所使用的库之一仍处于alpha阶段。正在努力解决这个问题。