使用 ParseServer/Bitnami 通过 Android 接受 Stripe 付款

Posted

技术标签:

【中文标题】使用 ParseServer/Bitnami 通过 Android 接受 Stripe 付款【英文标题】:Accepting Stripe payments with Android using ParseServer/Bitnami 【发布时间】:2018-02-15 23:45:52 【问题描述】:

我希望一切都好。我对编程很陌生,而且我的学校没有提供适当级别的 android 开发来教我需要知道的内容。所以请不要因为“指南”而将其标记下来,我只是想获得一些帮助。我的导师拒绝提供帮助,因为法律不允许他们教授未提供的内容。所以拜托,拜托,请不要记下来。

我正在尝试在我的移动应用程序上接受 Stripe 付款。我正在使用 ParseServer/Bitnami,并且已经足够发送和检索 tokenId 以对卡收费。只是还没想好怎么刷卡。请帮忙。

    Card userCard = new Card(num, expiryMonth, expiryYear, cvc);

        //  Test the data.
        if (userCard.validateCard()) 
            Stripe stripe = new Stripe(CardActivity.this, "pk_live_----REMOVED FOR SECURITY");
            stripe.createToken(
                    userCard,
                    new TokenCallback() 
                        public void onSuccess(final Token token) 
                            //  Get the current user.
                            ParseUser user = ParseUser.getCurrentUser();

                            String tokenId = token.getId();
                            //  Update the token.
                            user.put("tokenId", tokenId);

                            /*Map<String, Object> params = new HashMap<>();
                            params.put("currency", "usd");
                            params.put("interval", "month");
                            params.put("name", "Membership");
                            params.put("amount", 9.99);
                            params.put("id", user.getObjectId());*/


                            user.saveInBackground(new SaveCallback() 
                                @Override
                                public void done(ParseException e) 
                                    Toast.makeText(CardActivity.this, "Success", Toast.LENGTH_SHORT).show();

                                
                            );
                        
                        public void onError(Exception error) 
                            // Show error message
                            Toast.makeText(CardActivity.this,
                                    error.getMessage(),
                                    Toast.LENGTH_LONG
                            ).show();
                        
                    
            );
        

【问题讨论】:

请提供minimal reproducible example 说明您尝试过的方法以及遇到的问题。 【参考方案1】:

因此,要建立交易或创建费用(作为一次性费用或通过定期订阅)实际上有两个阶段。

第一阶段称为“捕获和标记化阶段”。这就是我们使用有关信用卡(或其他支付来源)的信息来创建一个特殊字符串来表示卡的实际详细信息的地方。我喜欢将这些标记更多地视为一个代码字(也许我只是看太多电影)——午夜的乌鸦飞。这是一种让您和 Stripe 都知道您指的是哪张卡片的特殊方式,而其他任何人都无法窃听并找出任何敏感信息。您可以使用 Stripe.js [1]、Elements [2]、Checkout [3] 或您的移动 SDK [4][5] 来完成此阶段。此阶段使用您的可发布 API 密钥并发生在前端(html/javascript 或移动设备)。

第二个阶段是“存储或充电阶段”。您可以使用我们之前制作的特殊令牌或代码字,然后 (a) 收取特定金额的费用或 (b) 将其附加到客户并存储以备后用。这两种方法都要求您在后端使用 Stripe API。另一种方法是使用插件或集成为您完成所有这些工作。此阶段使用您的 API 密钥并发生在后端 Web 服务(php、Python、Ruby 等)上

要创建定期收费或将付款来源附加到客户,您将使用创建客户 [6] API 端点。 source-argument 将是令牌 ID,在第一阶段生成。然后,您将使用 Create a Charge [7] API Endpoint,其 customer-参数等于您创建的客户 ID。

或者,要创建一次性收费,您可以简单地将 source-参数传递给不带 customer-参数的 Create a Charge [7] API 端点。

意思——你在这里错过了最后一步——你需要将检索到的令牌传递给你控制的后端服务器以进行收费。

希望有帮助!

[1]https://stripe.com/docs/stripe.js/v2 [2]https://stripe.com/docs/elements [3]https://stripe.com/docs/checkout [4]https://stripe.com/docs/mobile/ios [5]https://stripe.com/docs/mobile/android [6]https://stripe.com/docs/api#create_customer [7]https://stripe.com/docs/api#create_charge

【讨论】:

谢谢。我已经找到了一种使用上述链接和其他链接创建一次性交易的方法。我正在为订阅创建定期付款。 Korben,我一直在解决这个问题,但我仍然在这堵砖墙上。我正在使用带有 ParseServer 的 Back4App,它允许我使用 Javascript 函数,但我不知道 Javascript。我找到了示例代码,它引导我朝着正确的方向前进,但并不完全是我需要去的地方。 Stripe 有优秀的 Java 示例,但这是服务器端代码,我不知道发布此代码的适当平台,也不知道如何从我的 Android 应用程序调用它。请帮忙,伙计。我真的很感激。

以上是关于使用 ParseServer/Bitnami 通过 Android 接受 Stripe 付款的主要内容,如果未能解决你的问题,请参考以下文章

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)

通过 Join-Where-Group 通过选择查询避免使用临时的正确索引;使用文件排序

如何使用 SLRequest 通过 iOS 更改为通过 <AppName>

使用 mailR 包通过 R 通过 Outlook 发送经过身份验证的邮件

通过使用 pybind11 的虚函数通过引用传递 std::vector 的问题

如何使用 IP 地址(通过 InetAddress)通过 JDBC 与 MySQL 建立连接?