chencha/pesapal

Pesapal支付集成

0.1.1 2014-12-09 16:41 UTC

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阶段。正在努力解决这个问题。