3

Stripe のマネージド アカウントをクラウド コード関数に実装しようとしています。これまでのところうまくいくようになりましたが、解決できないように見える問題に遭遇しました。

結論: 'content_type': 'application/x-www-form-urlencoded'JSON を送信するにはどうすればよいですか?

application/JSONStripe は URL コード化されたフォームを想定しているため、content_type を に変更することはできません。JSON を文字列化しようとしましたが、これを行うと Stripe も文句を言います。「ハッシュ」が必要です。これは JSON であると想定しています。

content_type を form-urlencoded に設定したまま送信できるように、JSON を URL エンコードすることはできますか?

Parse が次のように言っているため、現在のコードは機能しません。

キャッチされないエラー: オブジェクトをフォーム エンコードできません

var secret_key = stripeKeys.stripeSecretKey;
var cardTokenId = "tok_...";
var country = "BE";
var currency = "EUR";
var email = "test@test.org";
var firstName = "test";
var lastName = "tester";
var dobDay = 1;
var dobMonth = 1;
var dobYear = 1950;
var addressCity = "City";
var addressCountry = "Country";
var addressLine = "Address line";
var addressZIP = "ZIP";
var addressProvince = "Province";       

var createAccountPromise = function()
{
    var params = 
        {
            url: "https://api.stripe.com/v1/accounts",
            method: "POST",
            headers: 
            {
                "Authorization": "Basic " + new Buffer(secret_key + ":").toString("base64"),
                "content_type": "application/x-www-form-urlencoded"
            },
            body: 
            {   
                "country": country,
                "default_currency": currency,
                "email": email,
                "managed": true,
                "legal_entity":
                    {
                        "first_name": firstName,
                        "last_name": lastName,
                        "type": "individual",
                        "dob":
                            {
                                "day": dobDay,
                                "month": dobMonth,
                                "year": dobYear
                            },
                        "personal_address":
                            {
                                "city": addressCity,
                                "country": addressCountry,
                                "line1": addressLine,
                                "postal_code": addressZIP,
                                "state": addressProvince
                            }
                    },
                "external_account": cardTokenId
            }
        };
    return Parse.Cloud.httpRequest(params);
}

createAccountPromise()
    .then(function(result)
    {
        console.log("SUCCESS: " + result.text);
        response.success("Account Created");
    },
    function(errorReason)
    {
        console.log("ERROR: " + errorReason.text);
        response.error("Account NOT Created because: " + errorReason.text);
    });
4

2 に答える 2

0

encodeURIComponentjson を x-www-form-urlencoded に変換するために使用します。次に、リクエストを送信します。

return Parse.Cloud.httpRequest(encodeURIComponent(params));

または

return Parse.Cloud.httpRequest(encodeURIComponent(JSON.stringify(params)));
于 2016-01-11T11:22:54.280 に答える