2016-02-02 7 views
0

Я использую Stripe grails plugin в моем приложении, и я получаю ошибку ниже:Используя плагин Grails нашивки

Class:groovy.lang.MissingPropertyExceptionMessage:No such property: Stripe for class: com.myApp.app.SubscriptionRequestController 

Вот мои действия:

def charge(String stripeToken, Double amount) { 
    Stripe.apiKey = grailsApplication.config.grails.plugins.stripe.secretKey 
    def amountInCents = (amount * 100) as Integer 
    def chargeParams = [ 
     'amount': amountInCents, 
     'currency': 'usd', 
     'card': stripeToken, 
     'description': '[email protected]' 
    ] 

    def status 
    try { 
     Charge.create(chargeParams) 
     status = 'Your purchase was successful.' 
    } catch(CardException) { 
     status = 'There was an error processing your credit card.' 
    } 

    redirect(action: "confirmation", params: [msg: status]) 
    return 
} 

я также получение ниже, так как я установил плагин, когда я его удаляю, я его не вижу, это происходит при попытке доступа или обновления любого вида:

java.lang.RuntimeException: It looks like you are missing some calls to the r:layoutResources tag. After rendering your page the following have not been rendered: [head] 

ответ

0

Попробуйте это:

в основной файл макета т.д .: main.gsp, имеют два дополнительных как в теле и голове. Кроме того, загружает stripe-v2 вручную. Не нужно добавлять его в веб-приложение/js, поскольку сам плагин уже имеет его.

<html> 
    <head> 
     <g:javascript src="stripe-v2.js" /> 
     <r:layoutResources/> 
    </head> 
    <body> 
     <g:layoutBody/> 
     <r:layoutResources/> 
    </body> 
</html> 

в Config.groovy добавить:

grails.resources.modules = { 
    stripe { 
     dependsOn 'jquery' 
     resource url:'/js/stripe-v2.js', disposition: 'head', exclude:'minify' 
    } 
} 

образца GSP (взято из документации), но я добавил платежно-ошибки в качестве источника можно использовать:

<stripe:script formName="payment-form"/> 
<g:form controller="checkout" action="charge" method="POST" name="payment-form"> 
    <div class="payment-errors"></div> 
    <div class="form-row"> 
     <label>Amount (USD)</label> 
     <input type="text" size="20" autocomplete="off" id="amount" name="amount"/> 
    </div> 

    <stripe:creditCardInputs cssClass="form-row"/> 

    <button type="submit">Submit Payment</button> 
</g:form> 

Я думаю, сам плагин не поддерживал текущую реализацию Grails Asset Pipeline.I думаю, что он несовместим с grails 2.4.3 и выше.

+0

теперь после принятия как выше, я больше не получаю эту ошибку 'java.lang.RuntimeException: похоже, что вам не хватает некоторых вызовов тега r: layoutResources. После рендеринга вашей страницы следующие данные не были показаны: [head] ', но я все еще не могу совершить успешную транзакцию, также замечаю, что действие' Charge' не определено, см. Скриншот http://postimg.org/image/ k16zioat3 /, я попытался импортировать 'import com.stripe.Stripe', но я получаю' неспособность разрешить класс com.stripe.Stripe' – Sherif

+0

Конечно, давайте исправьте его, открыв еще один вопрос. Дайте мне знать, как только вы его открыли и разместите на своем снимке. :) – Quchie

+0

Если вы принимаете это как ответ, можете ли вы принять это и закрыть это? Спасибо – Quchie

0

Как бы то ни было, вы, вероятно, не импортируете класс com.stripe.Stripe, поэтому вы получаете это конкретное сообщение.

Вам не нужно пытаться вручную назначить секретный ключ классу Stripe. Просто определите grails.plugins.stripe.secretKey в вашем Config.groovy, и плагин будет обрабатывать остальные, так как вы можете see in the plugin source.

+0

так что это классы Stripe, которые мне нужно импортировать, и в каком пакете они есть, я всегда получаю эту ошибку 'java.lang.RuntimeException: похоже, что вам не хватает некоторых вызовов тега r: layoutResources. После рендеринга вашей страницы не было показано следующее: [head] ', так как я установил плагин !! когда я удаляю его, я не вижу этой ошибки – Sherif

+0

Это звучит как еще один вопрос – doelleri

+0

Я уже отредактировал главный пост, но какие пакеты нужно импортировать? – Sherif