我正在开发使用Stripe的信用卡付款。在创建令牌之后(我已经完成了),我不知道如何继续。Android中的条带集成,之后要做什么?
官方文件说:
使用令牌
使用支付代币,但它获得,需要使用你的秘密的API密钥服务器API调用。 (为了安全起见,您不应该将您的秘密API密钥嵌入到您的应用程序中。) 在您的服务器上设置可以接收标记的HTTP POST调用的端点。在onActivityResult方法(用于Android Pay)或onSuccess回调(使用自己的表单时)中,您需要将提供的令牌POST到您的服务器。确保与您的服务器的任何通信都是SSL安全的,以防止窃听。 看看完整的示例应用程序,看看放在一起的一切。
而且我的代码是:
public class FragmentThree extends Fragment {
private static final String TAG = "FragmentThree";
//Stripe
private Card card;
private TextView mResponse;
private Button mPaymentBtn;
private ProgressBar mProgressBar;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_three, container, false);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
mResponse = (TextView) getActivity().findViewById(R.id.response);
mPaymentBtn = (Button) getActivity().findViewById(R.id.paymentBtn);
mProgressBar = (ProgressBar)getActivity().findViewById(R.id.progressBar);
mPaymentBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mProgressBar.setVisibility(View.VISIBLE);
if(isNetworkAvailable()){
String cardNumber = "4242-4242-4242-4242";
int cardExpMonth = 12;
int cardExpYear = 2018;
String cardCVC = "123";
card = new Card(//We create a new Card
cardNumber,
cardExpMonth,
cardExpYear,
cardCVC
);
if (!card.validateCard()){ //The card is not a valid one
mProgressBar.setVisibility(View.GONE);
Toast.makeText(getActivity(), R.string.Not_Valid_Card, Toast.LENGTH_SHORT).show();
}else{
Stripe stripe = null;
try {
//TODO Change with LIVE KEY
stripe = new Stripe("pk_test_wt0efdvgYxds7CywHYKCqnhX");
} catch (AuthenticationException e) {
mProgressBar.setVisibility(View.GONE);
Toast.makeText(getActivity(),
R.string.Merchant_Does_Not_Exist, Toast.LENGTH_SHORT).show();
}
if(stripe != null){
stripe.createToken(
card,
new TokenCallback() {
public void onSuccess(Token token) {
// Send token to your server
Log.d(TAG, "The token number is: " + token.getId());
mProgressBar.setVisibility(View.GONE);
}
public void onError(Exception error) {
// Show localized error message
Toast.makeText(getActivity(),
error.getLocalizedMessage(), Toast.LENGTH_LONG).show();
mProgressBar.setVisibility(View.GONE);
}
}
);
}
}
}else{
mProgressBar.setVisibility(View.GONE);
Toast.makeText(getActivity(),
R.string.No_Internet_Connection, Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
如何让服务器(我没有自己)知道我的令牌?那之后该怎么办?如何从服务器或Firebase进行API调用? 我可以使用Firebase:我必须使用它吗?我需要在那里执行什么?
服务器端,对我来说,代表了一个问题。
有人能写我一步一步的实施,以便我知道如何处理令牌和我可以接下来做什么?
如何确定SSL安全?
对不起我的问题,但我从来没有做过。
谢谢,加埃塔诺
是否有可能发送令牌火力在如何使用Node.js某种方式?我真的非常感谢您的回答 –
根据您的代码,您将收到条形标记为“TokenCallback()”方法。然后向您的服务请求卷曲付款。如果是Firebase,请检查此问题。 (http://stackoverflow.com/questions/39911456/stripe-integration-with-firebase-on-ios) – mugzi
如果你想你可以使用thrid派对工具以及示例 - https://zapier.com/zapbook/firebase /条纹/ – mugzi