2017-02-15 28 views
1

我正在开发使用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安全?

对不起我的问题,但我从来没有做过。

谢谢,加埃塔诺

回答

0

您需要一个中介服务器。我已经完成了与Heroku条纹集成$ 7/mo写在node.js

0

你不能在客户端做条纹API支付。您需要使用处理分段付款的方法创建服务。然后将您从令牌创建中获得的令牌传递给该服务。

您的客户端代码 -

stripe.createToken(
    card, 
    new TokenCallback() { 
    public void onSuccess(Token token) { 
    // Send token to your server 

例如(节点js的服务方法): -

// Set your secret key: remember to change this to your live secret key in production 
    // See your keys here: https://dashboard.stripe.com/account/apikeys 
    var stripe = require("stripe")("your private key"); 

    // Token is created using Stripe.js or Checkout! 
    // Get the payment token submitted by the form: 
    var token = request.body.stripeToken; // Using Express 

    // Charge the user's card: 
    var charge = stripe.charges.create({ 
     amount: 1000, 
     currency: "usd", 
     description: "Example charge", 
     source: token, 
    }, function(err, charge) { 
     // asynchronously called 
    }); 
+0

是否有可能发送令牌火力在如何使用Node.js某种方式?我真的非常感谢您的回答 –

+0

根据您的代码,您将收到条形标记为“TokenCallback()”方法。然后向您的服务请求卷曲付款。如果是Firebase,请检查此问题。 (http://stackoverflow.com/questions/39911456/stripe-in​​tegration-with-firebase-on-ios) – mugzi

+0

如果你想你可以使用thrid派对工具以及示例 - https://zapier.com/zapbook/firebase /条纹/ – mugzi