Omnipay与3D安全

时间:2013-10-31 17:00:15

标签: php payment-gateway omnipay

我正在尝试使用omnipay为不受支持的支付网关创建自定义网关。但是,我很难为我的提供商的3D安全实现创建响应类。

我看过sagepay,但3D安全的响应似乎都在1 api请求中返回。

要完成3D安全付款,我需要执行以下操作:

  1. 检查卡是否已注册3D安全的API请求
  2. 将用户(POST - 隐藏表单)重定向到网址
  3. 验证3D安全值的API请求
  4. 付款(PurchaseRequest)
  5. 每个api请求是否需要不同的响应类?那么VerifyEnrolledResponse,VerifySigResponse和PurchaseResponse?

    或者我需要这样的东西:

    if ($response->isSuccessful()) {
        // payment was successful
    } elseif ($response->isRedirect()) {
        // redirect to offsite payment gateway
        $response->redirect();
    } elseif ($response->notEnrolled() {
        // User not enrolled in 3D secure - make auth or display error
    } elseif ($response->3DSecureSuccess() {
        // Card passed 3D secure
    } else {
        // payment failed: display message to customer
        echo $response->getMessage();
    }
    

    在这里真的丢失了,我想用isSuccessful(),isRedirect()等来抽象它。任何帮助都非常感激。

    文档:https://resourcecentre.globaliris.com/documents/pdf.html?id=98

1 个答案:

答案 0 :(得分:2)

看起来全球虹膜的做法有所不同,因为它们要求您分别对初始费用提出3d安全请求。所以有三个步骤(请求3dsecure,验证3dsecure,付款)。

为了使事情与无所不在的做事方式保持一致,我将结合最后两步。因此,当您致电purchase()时,请提出3ds-verifyenrolled请求,并在请求成功时返回重定向响应。

然后,当客户从3dsecure返回时,在completePurchase()方法中,首先验证3dsecure签名,然后如果签名/ 3dsecure成功,则向其服务器发出付款请求并返回响应。