2016-04-30 31 views
1

首先,請原諒我,如果這被認爲是模糊的,這是我第一次發佈到Stack Exchange。

希望這不是一個很差的問題,我確實給了它一些想法,儘管它假定熟悉CURL,Stripe和Angular。

上的問題:

我試圖重新建立一個捲曲的結果向條紋API與Angular.js的$ HTTP和遇到了一些麻煩這樣做。

使用curl,我能夠按照以下步驟創建一個卡令牌:

curl -X POST https://api.stripe.com/v1/tokens \ 
    -u MY_TEST_KEY: \ 
    -d "card[number]"=4242424242424242 \ 
    -d "card[exp_month]"=12 \ 
    -d "card[exp_year]"=2017 \ 
    -d "card[cvc]"=123 

這讓我像「tok_blahblahbcryptnonsense」

不過,我似乎無法在這個CURL翻譯成角$的東西http函數,我回來了一個狀態代碼400,並顯示消息「您必須傳遞完整的卡片詳細信息才能創建令牌。」

$http({ 
    method: 'POST', 
    url: 'https://api.stripe.com/v1/tokens', 
    headers: { 
     'content-type': 'application/json', 
     'Authorization': 'Bearer MY_TEST_KEY' 
    }, 
    params: { 
     card: { 
      "number": '4242424242424242', // I have tried this as 
             // an integer and string 
             // Stripe docs say string 
      "exp_month": 12, 
      "exp_year": 2017, 

      "cvc": '123' // I have tried this as 
         // an integer and string 
         // Stripe docs don't specify but I think string 
     } 
    } 
    }).then(function(success){ 
     console.log('success ', success) 
    }, function(error){ 
     console.log('error ', error) // gets here, this is where the message is 
    }) 

據我瞭解,這是完全可能的。我需要的是爲所述卡創建一個令牌。天色已晚,它可能是一個完全明顯的解決方案,我太累了。

+0

打開瀏覽器的開發工具,然後單擊網絡選項卡。然後發送您的請求。然後在網絡選項卡中查看請求的正文。它是什麼樣子的? –

+0

哇,我已經很尷尬,應該是更具體的方式。我在離子模式下運行這個代碼,在模擬的iPhone 5s - iOS 9.2上啓用了實時重載和控制檯。代碼本身只是角度,所以我想這樣提出問題。我想我會把它放到一個不同的角度項目中,並迅速檢查出來。 –

+0

@SamuelPolicar:出於PCI合規性考慮,你應該*不*自己製作原始的HTTP請求。您應該使用Stripe Checkout或Stripe.js。 – koopajah

回答

1

也許Stripe API也接受JSON,但是你在curl命令中發送的內容不是JSON。它是表格數據。

此外,params用於傳遞查詢字符串中的數據。你想在POST主體中使用這些數據。

正確的代碼應該是:

var myData = { 
    card: { 
    "number": '4242424242424242', 
    "exp_month": 12, 
    "exp_year": 2017, 
    "cvc": '123' 
    } 
}; 
$http({ 
    method: 'POST', 
    url: 'https://api.stripe.com/v1/tokens', 
    headers: { 
    'Authorization': 'Bearer MY_TEST_KEY', 
    'Content-Type': 'application/x-www-form-urlencoded' 
    }, 
    data: $httpParamSerializerJQLike(myData), 
}); 
+0

謝謝JB,$ httpParamSerializerJQLike和數據密鑰是缺少的。很奇怪,使用params鍵和$ httpParamSerializerJQLike無法使用x-www-form-urlencoded對Stripe進行某些POST請求。這真讓我的思路混亂了,更不用說在過去的10場比賽中爲這個項目編碼了。我終於可以睡了。 –

+0

晚安,然後。 –