首页 文章

Parse.com Stripe:创建未捕获的费用

提问于
浏览
1

我正在开发一款使用Stripe处理付款的iOS应用 . 我们正在从一个使用两个单独收费进行初始购买的系统转移到一个系统,该系统使用一次性收费,该收费始于用户账户,然后在设置提示时被捕获 . 这是Stripe在我们询问如何使用一次充电时向我们推荐的系统,但也验证了该卡可以处理指定金额的费用 .

对于我们的后端,我们使用Parse.com来跟踪我们的订单,因此我们使用Stripe 's integration with Parse.com' s Cloud Code作为我们的服务器 . 我们的主要问题是Parse.com没有功能(即捕获费用) . 经过一番搜索,我发现http POST请求是与Stripe.js交互并实际捕获费用的最佳选择 . 但是,由于Parse.com在尝试创建未捕获的电荷时给出了Code 141错误(接收到未知参数:已捕获),因此我无法达到那么远 . Parse.com 's Stripe API suggests that you can set all parameters through their Stripe.Charges.create, but it won' t接受捕获为有效参数 .

要针对此问题抽象其他任何人,如何使用Parse.com Stripe API创建将捕获的参数设置为false的费用?

我在下面发布了一些我的Cloud Code,它应该定义一种方法来创建尚未捕获的费用 . 这个方法给我的错误是捕获的不是一个有效的参数 .

/**
 * Create Hold on Card
 * Required:
 * orderCostInCents                      -- in cents  ex. $10.24 = 1024
 * customer                              -- cus_11EXEXEXEXEXEX
 * description                           -- order.objectId to link it with order item.
 */
 Parse.Cloud.define("holdAccount", function(request, response) {
               //response.success("Not Charged");
               var Stripe = require("stripe");
               Stripe.initialize(kStripePrivateKey);
               Stripe.Charges.create({
                                     amount : request.params.orderCostInCents,
                                     currency : "usd",
                                     customer : request.params.customer,
                 captured : false,
                                     description : request.params.description
                                     },{
                                     success: function(httpResponse) {
                                     console.log(httpResponse);
                                     response.success(httpResponse);
                                     },
                                     error: function(httpResponse) {
                                     console.log(httpResponse.message);
                                     response.error("Failed to create charge");
                                     }
                                     });
               });

我相信我可以按照https://www.parse.com/questions/stripe-payment-capture-method-not-available设置的指南创建收费后构建一个http(POST)请求 . 对于我的问题,本指南可能对其他任何人都非常有帮助!

最好的,谢谢你的帮助!

编辑:我意识到我没有发布我们正在使用的Cloud Code版本 . 这是1.2.19 .

1 回答

  • 2

    好吧,从我盯着屏幕的时间休息一下后,我当然感觉像是一个doofus!我正在使用的参数被捕获,其中正确的参数应为 capture . 我能够通过在创建充电时从参数名称中删除"d"来解决我的问题 .

    哎呦!我仍然愿意通过评论对http请求提出建议,但是如果我遇到问题,我将自己测试这些问题并发布一个单独的线程,因为这个问题与这个问题相关,因而是偏离主题 .

    对于每个加入的人来说,答案是如果你用捕获替换捕获的参数,上面的代码就可以完美地运行

    Edit :对于其他感兴趣的人,此问题的后续内容是关于实际通过Parse Cloud Code上的http请求进行捕获 . 经过大量搜索和反复试验后,以下方法可行 . 这里最难的部分是弄清楚如何格式化URL,因为这是我第一次涉足http请求 . 如果需要链接参数,只需添加"&="

    //kStripePrivateKey is your stripe private key
    //Must pass in chargeID = stripe charge id and 
        //orderCostInCents = capture amount in cents as parameters
    var captureURL  = "https://"+ kStripePrivateKey +
                ":@api.stripe.com/v1/charges/"+
                request.params.chargeID+
                "/capture?amount="+request.params.orderCostInCents;
    
    Parse.Cloud.httpRequest({
        url: captureURL,
        method: 'POST',
        success: function(httpResponse) {
            // Handle any success actions here
            response.success(httpResponse);
        }, error: function(httpResponse) {
            response.error(httpResponse);
        }
    });
    

相关问题