2013-07-24 89 views
0

我已经下载了Android的PayPal SDK,并将我的代码与示例项目进行了比较,除了添加的意图,我发送给PayPal后的活动。问题是我得到一个奇怪的错误。一旦我点击按钮,并添加cc的详细信息,并按费用... paypal说我输入的信用卡是无效的。只有当我尝试发送自己的额外内容时才会发生这种情况。当我突然删除我的额外意图时,同一个沙盒信用卡就可以通过了。这是因为PayPal只接受某些变量,可能是Floats而不喜欢字符串?或者,也许我的代码有一个简单的缺陷?PayPal无效Sandbox信用卡#

public void onBuyPressed(View pressed) { 

TextView inputx =(TextView)findViewById(R.id.super); 
String ix =inputx.getText().toString(); 
TextView inputP =(TextView)findViewById(R.id.input); 
String ip =inputP.getText().toString(); 
try{ 
    double valuey =Double.parseDouble(ip); 
    if(valuey>0) 
    { 
PayPalPayment payment = new PayPalPayment(new BigDecimal(valuey), "USD", ix); 
    Intent intent = new Intent(this, PaymentActivity.class); 
intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, PaymentActivity.ENVIRONMENT_SANDBOX); 
// it's important to repeat the clientId here so that the SDK has it if Android restarts your 
// app midway through the payment UI flow. 
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, "AZetc,etc,etc..the Id is NOT the issue"); 

// Provide a payerId that uniquely identifies a user within the scope of your system, 
// such as an email address or user ID. 
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, ""); 

intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL,"[email protected]"); 
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment); 
startActivityForResult(intent, 0); 
} 
else{ 
Toast.makeText(getApplicationContext(), "You haven't entered anything.", 
     Toast.LENGTH_LONG).show(); 
}} catch (NumberFormatException e) { 
}} 

@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
if (resultCode == Activity.RESULT_OK) { 
    PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION); 
    if (confirm != null) { 

     final TextView x =(TextView)findViewById(R.id.custname); 
     String onex = x.getText().toString(); 

     final TextView nov =(TextView)findViewById(R.id.secret); 
     String dec = nov.getText().toString(); 

     final TextView feb =(TextView)findViewById(R.id.secretname); 
     String jan = feb.getText().toString(); 

     final TextView xx =(TextView)findViewById(R.id.inputPrice); 
     String twox = xx.getText().toString(); 

     final TextView xxx =(TextView)findViewById(R.id.help); 
     String threex = xxx.getText().toString(); 

     Intent intent= new Intent(SuperActivity2.this,SuperCheckActivity.class) 

     .putExtra("secret",dec) 
     .putExtra("secretname",jan) 
     .putExtra("date",threex) 
     .putExtra("inputPrice",twox) 
     .putExtra("customername",onex) 
     .putStringArrayListExtra("list", listItems); 
     startActivity(intent); 
     try { 
      Log.i("paymentExample", confirm.toJSONObject().toString(4)); 

      // TODO: send 'confirm' to your server for verification. 
      // see https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-payment/ 
      // for more details. 

     } catch (JSONException e) { 
      Log.e("paymentExample", "an extremely unlikely failure occurred: ", e); 
     } 
    } 
} 
else if (resultCode == Activity.RESULT_CANCELED) { 
    Log.i("paymentExample", "The user canceled."); 
} 
else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) { 
    Log.i("paymentExample", "An invalid payment was submitted. Please see the docs."); 


} 

回答

0

我有同样的问题。当我尝试用PayPal付款时,确定,但是当我尝试用信用卡付款时,出现错误,信用卡数据不正确。 然后我调试我的应用程序,并看到,我设置为PayPalPayment的金额有很大的percision。所以我把我的偏见设置为2位小数,用信用卡付款确定。

这里是例如i如何设置量:

ttlPrice = new BigDecimal(totalPrice, MathContext.DECIMAL32).setScale(2); 
payment = new PayPalPayment(ttlPrice, "EUR", "description"); 
0

ttlPrice =新的BigDecimal(totalPrice,MathContext.DECIMAL32).setScale(2); payment = new PayPalPayment(ttlPrice,“EUR”,“description”);

+0

plz修复你的答案,显示一些解释并格式化好。 – Zeina