2016-04-11 21 views
9

Tôi đang sử dụng Angular2, Ionic2 và Stripe.js để xử lý thanh toán. Chủ đề này ở đây ionic2 with stripe payment gateway đang sử dụng plugin https://github.com/Telerik-Verified-Plugins/Stripe/blob/master/doc/index.md nhưng không an toàn vì bạn phải nhúng khóa Bí mật bên trong ứng dụng. Ngay cả trang cũng nói với mọi người không nên sử dụng plugin này.Nhập khẩu sọc bằng Angular2 và stripe.js

Tôi cố gắng để sử dụng phiên bản Node.js đây:

https://www.npmjs.com/package/stripe

Tuy nhiên, tôi không thể tìm ra cách để làm var stripe = require('stripe')(' your stripe API key '); khi trong nguyên cảo, bạn phải sử dụng import.

Cuối cùng, tôi đã đặt <script type="text/javascript" src="https://js.stripe.com/v2/"></script> trong index.html và biến số stripe hiển thị trên toàn cầu bên trong mỗi Thành phần. Tuy nhiên, tôi không cảm thấy như thế này là cách thích hợp để làm điều đó vì đối tượng stripe có thể chưa sẵn sàng vào lúc tôi sử dụng nó trong mỗi Thành phần hoặc Trang.

Cách thích hợp để sử dụng Angular2 và Stripe.js là gì? Ionic2 đặc biệt sẽ tốt đẹp nhưng tùy chọn.

Cảm ơn

CẬP NHẬT 1

tôi đã cố gắng npm install stripe và sau đó sử dụng import '../../node_modules/stripe/lib/stripe.js'; nhưng vẫn nhận được lỗi:

TypeScript error: /Users/username/Documents/StripePayment/app/pages/home/home.ts(16,23): Error TS2304: Cannot find name 'Stripe'. 
Error: Cannot find module '../../node_modules/stripe/lib/stripe.js' from '/Users/username/Documents/StripePayment/app/pages/home' 

Dưới đây là ảnh chụp màn hình VS Mã của tôi với cấu trúc thư mục:

enter image description here

+0

'nhập 'đường dẫn/đến/stripe.js';' phải giải quyết việc nhập. Nhưng đừng bao gồm '.js'. – Chrillewoodz

+0

Tôi đã cập nhật câu hỏi vì đề xuất không hoạt động. –

+0

@MarcusAsplund Vui lòng đăng bài dưới dạng câu trả lời bên dưới và tôi sẽ chấp nhận. Cảm ơn. –

Trả lời

6

Thêm scripttag trong index.html và sau đó đưa ra tuyên bố sau khi nhập khẩu trong home.ts

declare var Stripe: any; Tôi tin rằng đây là cách chính xác để nhập libs bên ngoài trong ng2

Src: Nic Raboy Có một số thông tin thêm ở đó; những cách tốt hơn để cài đặt một lib bên ngoài là để tải về typedefs từ DefinitelyTyped và cài đặt với $ typings install Sau đó, bạn sẽ có thể nhập như bình thường

Đây là, tất nhiên, nếu có typedefs trong repo DefinitelyTyped. Có vẻ như không tồn tại typedefs cho thư viện Stripe.

+1

Tôi nghĩ rằng tôi có thể đã tìm thấy một: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/stripe/stripe.d.ts – Maxim

+0

Ngoài ra còn có cái này: https : //github.com/DefinitelyTyped/DefinitelyTyped/blob/master/stripe-node/stripe-node.d.ts – TomTom

3

sọc dường như có định nghĩa kiểu bây giờ để cùng

npm install --save stripe 

bạn cũng có thể chạy sau để có được định nghĩa nguyên cảo:

npm install --save @types/stripe 

sau đó bạn sẽ có thể để một cái gì đó như:

import { Stripe } from 'stripe' 

Ở trên là mã psudo như Ive chưa thử nghiệm nhưng sẽ là thứ gì đó giống.

Thông tin thêm ở đây: https://www.npmjs.com/package/@types/stripe

+0

Vì gói 'stripe' không xuất ra lớp' Stripe' có tên bạn cần thực hiện 'import * as Sọc từ 'sọc'; 'thay vào đó. – brod

1

Thư viện stripe.js dành cho máy chủ, đòi hỏi các module child_process, và tạo ra một máy chủ của riêng nó. Không có cách nào tốt để nhập thư viện này trực tiếp vào môi trường trình duyệt.

Các vấn đề liên quan