Grails支付网关集成

时间:2014-10-21 11:52:09

标签: security grails integration payment-gateway

民间,

我希望在Grails 2.3.10网站上集成支付网关。刚刚开始划清表面上做同样的事情。我主要关注3件事

一个。如何将正确的信息发送到网关 湾获得批准后,如何将其存储在我的系统上,然后使用该信息授予对“安全”内容的正确访问权限。 C。是使用“PaidUser”之类的“角色”保护内容还是保护控制器的其他方式?

任何有关样本实施/问题处理的帮助/只是在线信息指示供我阅读&学习非常受欢迎。 谢谢。

1 个答案:

答案 0 :(得分:0)

按照以下步骤操作:---

1)第一步是通过编辑安装插件 的grails-app / CONF / BuildConfig.groovy。在插件部分添加类似于下面的条目:

grails.project.dependency.resolution = {

plugins {
    ...
    compile ":paypal:0.6.8"
}

}

2)要配置,只需编辑grails-app / conf / Config.groovy。 : -

环境{

production {
    grails.paypal.server = "https://www.paypal.com/cgi-bin/webscr"
    grails.paypal.email = "merchant@grails.asia"
    grails.serverURL = "http://store.grails.asia"
}

development {
    grails.paypal.server = "https://www.sandbox.paypal.com/cgi-bin/webscr"
    grails.paypal.email = "merchant_test_grails@paypal.com"
    grails.serverURL = "http://localhost:8080/sample"
}

}

3)创建域类:---

class ProductItem {

String name
BigDecimal price
static constraints = {
    name(blank:false, nullable:false, unique: true)
    price(blank:false, nullable:false)
}

}

import org.grails.paypal.Payment

class ProductPurchase {

SystemUser user
ProductItem item
Payment payment
boolean completed = false

}

4)创建购买/购买过滤器。例如,使用以下代码创建过滤器grails-app / conf / myfilters / PurchaseFilters.groovy:

class PurchaseFilters {

def filters = {
    all(controller:'paypal', action:'buy') {
        before = {
        }
        after = { Map model ->
            def user = SystemUser.get(request.payment.buyerId)
            def item = ProductItem.findByName(request.payment.paymentItems[0].itemName)
            new ProductPurchase( user:user, payment:request.payment, item:item).save()
        }
        afterView = { Exception e ->
        }
    }
}

}

6)创建购买完成过滤器。例如,使用以下代码创建过滤器grails-app / conf / myfilters / PurchaseCompletedFilters.groovy:

class PurchaseCompletedFilters {

def filters = {
    all(controller: 'paypal', action: '(success|notifyPaypal)') {
        before = {
        }
        after = { Map model ->
            def payment = request.payment
            if(payment && payment.status == org.grails.paypal.Payment.COMPLETE) {
                def purchase = ProductPurchase.findByPayment(payment)
                if ( !purchase.completed ) {
                    purchase.completed = true
                }
            }
        }
        afterView = { Exception e ->
        }
    }
}

}

7)在gsp:----

中创建购买按钮

    /<paypal:button
    itemName="${item.name}"
    itemNumber="${item.name}"
    discountAmount="${0}"
    amount="${item.price}"
    buyerId="${user.id}"/>