Php Omnipay与3D安全

Php Omnipay与3D安全,php,payment-gateway,omnipay,Php,Payment Gateway,Omnipay,我正在尝试为不受支持的支付网关创建自定义网关。但是,我很难为提供商的3D安全实现创建响应类 我已经看过sagepay,但对3D secure的响应似乎都是在1个api请求中返回的 要完成3D安全支付,我需要执行以下操作: API请求检查该卡是否已在3D secure中注册 将用户(隐藏后表单)重定向到url 验证3D安全值的API请求 付款(购买请求) 每个api请求是否需要不同的响应类?那么VerifyEnrolledResponse、VerifySigResponse和PurchaseRes

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

我已经看过sagepay,但对3D secure的响应似乎都是在1个api请求中返回的

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

  • API请求检查该卡是否已在3D secure中注册
  • 将用户(隐藏后表单)重定向到url
  • 验证3D安全值的API请求
  • 付款(购买请求)
  • 每个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()等将其抽象化。非常感谢您的帮助


    文档:

    看起来global iris做的事情有所不同,因为它们要求您在初始费用中单独提出3d安全请求。所以有三个步骤(请求3dsecure、验证3dsecure、付款)

    为了使事情符合全方位付费的做事方式,我将结合最后两个步骤。因此,在调用
    purchase()
    时,发出
    3ds verifyenrolled
    请求,如果请求成功,则返回重定向响应


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

    您可以发布到网关文档的链接吗?我已经添加了一个问题的链接。感谢您的帮助。如果需要重定向,“VerifyRegistered”的结果可能是00,如果应该立即购买,则结果可能是110。因此,在send()方法中,我需要检查此值,然后返回重定向响应或发出付款请求?此外,文档说明completePurchase()方法必须具有与purchase()相同的参数,但是除非我将其传递给completePurchase()方法,否则如何验证3dsecure签名?是的,听起来不错。看看其他的入口。httpRequest也被传递到request类中,因此您可以使用它来访问GET/POST变量。对于我的理解不足,我深表歉意,这是我使用的第一个库(太棒了)!如果可能的话,您能告诉我completePurchase方法的一些示例用法吗?我对需要传递到completePurchase方法中的参数有点困惑。当然。这可能是一个很好的例子: