2016-02-05 8 views
2

я использую Stripe plugin for Grails, Grails версия 2.5.1 я не могу сделать любую успешную сделку я всегда получить There was an error processing your credit card., как показан в контроллере, я заметил, что Charge метод не определен, как показано на скриншоте enter image description hereGrails нашивка ошибка плагин

Я пытался импортировать com.stripe.Stripe, но я получаю unable to resolve class com.stripe.Stripe.

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

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 
} 
+0

Вам не нужно импортировать com.stripe.Stripe, чтобы установить ключ api, потому что плагин позаботится об этом. Я бы начал с проверки сообщения, которое вы получаете в CardException. Он может дать понять, почему транзакция терпит неудачу. –

ответ

0

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

В сборки конфигурации добавить:

plugins { 
... 
compile "org.grails.plugins:stripe:2.8" 
... 
} 

В контроллере:

package stripesample 

import com.stripe.model.Charge 
import com.stripe.exception.CardException; 

class CheckoutController { 

    def index() {} 

    def charge(String stripeToken, Double amount) { 
     def amountInCents = (amount * 100) as Integer 

     def chargeParams = [ 
      'amount': amountInCents, 
      'currency': 'usd', 
      'card': stripeToken, 
      'description': '[email protected]' 
     ] 

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

     render view: "confirmation", model:[msg: status,chargeObject:chargeStatus] 
     return 
    } 
} 

В вашей основной раскладке файл:

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

В вашей кредитной карты формы Вид:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta name="layout" content="main"/> 

    </head> 
    <body> 
     <h3>Checkout</h3> 

       <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> 

     </div> 
    </body> 
</html> 

Создайте еще один вид в той же папке контроллера в моем случае оформления заказа/confirmation.gsp

<!DOCTYPE html> 
<html> 
    <head> 

    </head> 
    <body> 


     <h3>Checkout</h3> 
     <p>${msg}</p> 

     <p>Data: </p> 
     <p>${chargeObject}</p> 

    </body> 
</html> 

Run grails clean , а затем, Пробег grails run-app

Если вам нужно протестировать пример приложения вы можете клонировать мое приложение здесь: Sample App

+0

ваш пример работал отлично, но когда я пытаюсь импортировать 'import com.stripe.model.Charge, import com.stripe.exception.CardException' в моем контроллере, я получаю' Groovy: не удалось разрешить класс com.stripe.model.Charge 'и' Groovy: не удается разрешить класс com.stripe.exception.CardException' любые подсказки для решения этой проблемы, также я переустановил плагин, но все еще имею ошибки. – Sherif

0

я сделал «Refresh зависимостей» в затмении, и все работало нормально

0

Вопрос был о Grails 2.5.x. Плагин недоступен для Grails 3.x.x. Я получил его работу и разместил онлайн-учебник. Для загрузки доступно полнофункциональное приложение Grails 3.2.3. Он также реализует корзину покупок. Страница: http://www.databaseapplications.com.au/stripe_payments.jsp