可以在Parse.com Stripe模块中使用Stripe.com管理帐户吗?

时间:2015-07-27 14:32:12

标签: parse-platform stripe-payments stripe-connect

我看到Parse.com有Stripe付款模块,但我不确定他们是否支持Stripe.com管理帐户,因为我正在为市场创建移动应用程序,Stripe支持告诉我应该使用管理帐户进行市场支持

Parse.com Stripe模块:https://parse.com/docs/js/guide#cloud-code-modules-stripe

Stripe.com管理帐户:https://stripe.com/docs/connect/managed-accounts

有Parse.com Stripe模块经验的人吗?

3 个答案:

答案 0 :(得分:3)

遗憾的是,Parse很长一段时间没有更新他们的Stripe API库,并声明他们没有计划更新它。他们的API库是基于Stripe API的2012-07-09版本构建的,这是在Connect和Managed Accounts输入Stripe API之前的几年。因此,Parse API库不支持托管帐户。

答案 1 :(得分:1)

您需要确保已将您的Stripe帐户设置为允许已连接的帐户。通过添加var Buffer = require('buffer')。Buffer;如果您在请求范围之外对云代码进行条带化,则可以使用以下代码创建帐户:

 var Buffer = require('buffer').Buffer;
 var bankAccountNumber = request.params['bankAccountNumber']
 Parse.Cloud.httpRequest({

            method:"POST",

            url: "https://" +"api.stripe.com/v1" + "/accounts",

             headers: {
                'Authorization': 'Basic ' + new Buffer('YOUR_STRIPE_SECRET_KEY' + ':' + '').toString('base64')
              },
            body:{
                "managed": false,
                "country": "US",
                "email": "example@mailinator.com"

                },
            success: function(httpResponse) {
              response.success(httpResponse.text);
            },
            error: function(httpResponse) {
                response.error('Request failed with response code: ' + httpResponse.status);
            }

如果您创建一个独立帐户,您将在创建时收到一封电子邮件。 Mailinator是一项服务,允许您创建任何名称的工作电子邮件地址,但没有隐私。 编辑:我正在使用关联帐户。我注意到,在测试时,如果您成功创建了一个帐户,后续尝试使用同一封电子邮件创建帐户将失败。要转移资金,Stripe需要您可以在平台信息中心的已连接帐户下查看的某些属性。我找到了其中几个的语法(除银行帐户外)。 编辑2:要完成条纹的必填字段以验证您的帐户,您需要包含银行帐户字段。我的项目在Swift中运行,传递到我的云代码的参数是在我的应用程序中使用STPAPIClient.sharedClient()创建的令牌.createTokenWithBankAccount和在https://stripe.com/docs/testing#how-do-i-test-sending-transfers给出的测试帐户信息。

    body:{
                "managed": true,
                "country": "US",
                "email": "yourUniqueemail@mailinator.com",
                "legal_entity[first_name]": "AnyName",
                "legal_entity[last_name]": "AnyName",
                "legal_entity[dob[day]]": "20",
                "legal_entity[dob[month]]": "11",
                "legal_entity[dob[year]]": "1993",
                "legal_entity[type]": "individual",
                "tos_acceptance[date]": "1438198036",
                "tos_acceptance[ip]": "123.34.56.789",
                "bank_account": bankAccountNumber,
                },

编辑3: 我的代码的工作方式是创建客户并收取费用。收费金额将以申请费的形式发送至平台。然后连接的帐户从平台支付。(我不完全确定这是使用Stripe的正确方法;但是,这种方法似乎在测试模式下工作,并允许我们存储有关客户和我们付出的人的信息。)幸运的是,Parse的api中存在计费方法,因此我们不必发出POST请求。以下是执行此功能的收费方法。

    Parse.Cloud.define("chargeAccount", function(request, response) {
     var amount2 = request.params['amount']*100;

      Stripe.Charges.create({
        amount: amount2,
        currency: request.params["currency"],
        customer: request.params['customerId'], 
        description: request.params['description'],
        application_fee: amount2/5, 
        destination: request.params['destinationAccountId']
      },{
          success: function(charge) {
           response.success("There was a charge of $" + amount2/100  + " The application fee is: $" +amount2/500 +".");
        },
       error: function(error) {
         response.error("\nThis is the error:\n" +error); 
       }
      })
    });

答案 2 :(得分:0)

我在解析问题部分找到了this个问题。我相信您应该能够更改此代码以满足您的需求。我还没有对它进行过测试,但是通过查看the stripe api,我想出了这个:

这是curl请求的样子:

curl https://api.stripe.com/v1/accounts \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2: \
-d managed=false \
-d country=US \
-d email="bob@example.com"

所以你的javascript会是这样的,我相信:

Parse.Cloud.httpRequest({

//STRIPE_SECRET_KEY will be your stripe secret key obviously, this is different from the public key that you will use in your iOS/Android side.
// STRIPE_API_BASE_URL = 'api.stripe.com/v1'

method:"POST",
url: "https://" +  STRIPE_API_BASE_URL + "/accounts/",
headers: {
"keys[secret]" : STRIPE_SECRET_KEY
}, 
body:{ 
    "managed="+true,
    "country="+"US",
    "email="+"bob@example.com"
},
success: function(httpResponse) {
    response.success(httpResponse.text);
},
error: function(httpResponse) {
    response.error('Request failed with response code ' + httpResponse.status);
    }
});

这可能不是100%,因为我还没有能够测试它,但请查看以下问题以获取更多资源:

https://parse.com/questions/cloud-httprequest-unable-to-take-dictionary-object-as-parameter-cant-form-encode-an-object-error

https://www.parse.com/questions/stripe-store-multiple-cards-on-a-customer