2017-02-01 52 views
1

我正在尝试集成Stripe以在我的Android应用程序中处理付款。尝试集成条纹时应用程序强制关闭

我有用户输入信用卡信息,然后我现在要做的就是创建一个令牌。但是当我点击按钮时,应用程序部队关闭。

这不是最终的应用程序将如何接受卡与磁条的工作,但我只是想获得一个了解我是如何将在未来

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.Spinner; 
import android.widget.Toast; 

import com.stripe.android.*; 
import com.stripe.android.model.Card; 
import com.stripe.android.model.Token; 
import com.stripe.android.Stripe; 

import java.util.HashMap; 
import java.util.Map; 

public class newUser extends AppCompatActivity { 

String fname; 
String lname; 
String email; 
String phonenum; 
String pin; 
String cardNumber; 
String cardCVC; 
Integer cardExpMonth; 
Integer cardExpYear; 
String stripetok; 
Card cardNew; 

private static final String PUBLISHABLE_KEY = "pk_test_iUVdhdvJuurqSxIlXpzq32LS"; 
UserDBHelper newUserr; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new_user); 

    newUserr = new UserDBHelper(newUser.this); 

    EditText fNameh = (EditText) findViewById(R.id.fNameNew); 
    EditText lNameh = (EditText) findViewById(R.id.lNameNew); 
    EditText emailh = (EditText) findViewById(R.id.emailNew); 
    EditText phoneNumh = (EditText) findViewById(R.id.phoneNew); 
    EditText pinh = (EditText) findViewById(R.id.pinNew); 
    EditText cardNumberh = (EditText) findViewById(R.id.cardNumNew); 
    EditText cardCVCh = (EditText) findViewById(R.id.cvcNew); 
    Spinner cardExpMonthh = (Spinner) findViewById(R.id.monthNew); 
    Spinner cardExpYearh = (Spinner) findViewById(R.id.yearNew); 

    fname = fNameh.getText().toString(); 
    lname = lNameh.getText().toString(); 
    email = emailh.getText().toString(); 
    phonenum = phoneNumh.getText().toString(); 
    pin = pinh.getText().toString(); 
    cardNumber = cardNumberh.getText().toString(); 
    cardCVC = cardCVCh.getText().toString(); 
    cardExpMonth = (Integer) cardExpMonthh.getSelectedItem(); 
    cardExpYear = (Integer) cardExpYearh.getSelectedItem(); 


    cardNew = new Card(
      cardNumber, 
      cardExpMonth, 
      cardExpYear, 
      cardCVC 
    ); 

    ImageButton createNewUser = (ImageButton) findViewById(R.id.createNew); 



    createNewUser.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      if(cardNew.validateCard() & cardNew.validateCVC()) { 
       Stripe stripe = new Stripe(); 
       stripe.createToken(cardNew, PUBLISHABLE_KEY, new TokenCallback() { 
        public void onSuccess(Token token) { 
         // TODO: Send Token information to your backend to initiate a charge 
         Toast.makeText(
           getApplicationContext(), 
           "Token created: " + token.getId(), 
           Toast.LENGTH_LONG).show(); 
        } 

        public void onError(Exception error) { 
         Log.d("Stripe", error.getLocalizedMessage()); 
        } 
       }); 

      } 

      else{ 
       Toast.makeText(
         getApplicationContext(), 
         "Token not made!", 
         Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

任何想法融入条纹为什么这是发生?我没有收到任何错误,但活动甚至无法加载。

我已经在依赖包括

compile 'com.stripe:stripe-android:2.0.2' 

到应用程序的的build.gradle

感谢任何投入!

编辑1: 我相信这个问题可能是当我从字符串投射字符串到整数。

E/dalvikvm: Could not find class 'android.widget.ThemedSpinnerAdapter', referenced from method android.support.v7.widget.AppCompatSpinner$DropDownAdapter.<init> 
W/dalvikvm: VFY: unable to resolve instanceof 2583 (Landroid/widget/ThemedSpinnerAdapter;) in Landroid/support/v7/widget/AppCompatSpinner$DropDownAdapter; 
D/dalvikvm: VFY: replacing opcode 0x20 at 0x0016 
D/AndroidRuntime: Shutting down VM 
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x416fcbc0) 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.zeuspwr.zeuspower, PID: 32121 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zeuspwr.zeuspower/com.zeuspwr.zeuspower.newUser}: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
         at android.app.ActivityThread.access$800(ActivityThread.java:166) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:136) 
         at android.app.ActivityThread.main(ActivityThread.java:5584) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
         at dalvik.system.NativeStart.main(Native Method) 
        Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
         at com.zeuspwr.zeuspower.newUser.onCreate(newUser.java:62) 
         at android.app.Activity.performCreate(Activity.java:5447) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)  
         at android.app.ActivityThread.access$800(ActivityThread.java:166)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:136)  
         at android.app.ActivityThread.main(ActivityThread.java:5584)  
         at java.lang.reflect.Method.invokeNative(Native Method)  
         at java.lang.reflect.Method.invoke(Method.java:515)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)  
         at dalvik.system.NativeStart.main(Native Method)  
I/Process: Sending signal. PID: 32121 SIG: 9 
Application terminated. 
+0

提供的崩溃日志 –

+0

你也都可以从在OnCreate文本字段中的值。这将在开始时假设为空或为空。让他们进入按钮点击 –

+0

发布您的错误日志。 – Shailesh

回答

1

变化

cardExpMonth = (Integer) cardExpMonthh.getSelectedItem(); 
cardExpYear = (Integer) cardExpYearh.getSelectedItem(); 

cardExpMonth = Integer.valueOf(cardExpMonthh.getSelectedItem()); 
cardExpYear = Integer.valueOf(cardExpYearh.getSelectedItem());