我能够使用Stripes Android Walkthrough创建令牌。但是现在我想创建一个客户并最终产生一笔费用,他们会在这里显示如何在你的服务器上做。但是我正在使用SQLite作为数据库,因为此应用程序仅由少数人使用,并且仅由我自己加载到单个平板电脑上。所以我的问题是我可以在应用程序中创建客户而不必在应用程序中构建整个服务器端后端吗?
这是我创建令牌的代码,现在我要使用该令牌创建一个客户:(忽略应用程序的混乱情况,对不起,最终的应用程序将更加干净,只是尝试查看我是否可以使它正常工作)
package com.zeuspwr.zeuspower;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
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 {
EditText fNameh;
EditText lNameh;
EditText emailh;
EditText phoneNumh;
EditText pinh;
EditText cardNumberh;
EditText cardCVCh;
Spinner cardExpMonthh;
Spinner cardExpYearh;
String fname;
String lname;
String email;
String phonenum;
String pin;
String cardNumber;
String cardCVC;
Integer cardExpMonth;
Integer cardExpYear;
String stripetok;
Card cardNew;
String cardExpMonthStr;
String cardExpYearStr;
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);
fNameh = (EditText) findViewById(R.id.fNameNew);
lNameh = (EditText) findViewById(R.id.lNameNew);
emailh = (EditText) findViewById(R.id.emailNew);
phoneNumh = (EditText) findViewById(R.id.phoneNew);
pinh = (EditText) findViewById(R.id.pinNew);
cardNumberh = (EditText) findViewById(R.id.cardNumNew);
cardCVCh = (EditText) findViewById(R.id.cvcNew);
cardExpMonthh = (Spinner) findViewById(R.id.monthNew);
cardExpYearh = (Spinner) findViewById(R.id.yearNew);
ImageButton createNewUser = (ImageButton) findViewById(R.id.createNew);
createNewUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
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();
cardExpMonthStr = cardExpMonthh.getSelectedItem().toString();
cardExpYearStr = cardExpYearh.getSelectedItem().toString();
cardExpMonth = Integer.valueOf(cardExpMonthStr);
cardExpYear = Integer.valueOf(cardExpYearStr);
cardNew = new Card(
cardNumber,
cardExpMonth,
cardExpYear,
cardCVC
);
if(cardNew.validateCard() & cardNew.validateCVC()) {
final 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();
}
/*Intent retPage = new Intent(BorroworReturn.this, returno.class);
startActivity(retPage);*/
}
});
不幸的是,由于这些调用需要您的Secret API密钥,因此无法在Android应用程序中执行任何操作。您永远不要在Android应用程序中拥有Secret API密钥,否则攻击者可能会亲手使用它,然后代您创建费用,退款或转帐。
您需要做的是先创建一个卡令牌(已完成),然后将其发送到您的服务器,您将在其中使用您的密钥创建费用或客户。在您的Android应用程序中什么都不会发生。
您可以参考另一个问题:使用Android发送带区令牌的正确方法,以检查有关如何将令牌发送到服务器的一些Android代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句