naustudio / vn-payments

Various VN Payment Gateways implemented for NodeJS
http://code.naustud.io/vn-payments
Apache License 2.0
134 stars 41 forks source link

checkout fail Customer email cannot exceed 24 characters #13

Closed trungdh closed 6 years ago

trungdh commented 6 years ago

Hi Mr. trongthanh Em có tích hợp thanh toán tới cổng Onepay bàng thư viện node-vn-payments trong project. Nhưng khi gửi thanh toán qua cổng Onepay bằng cách gọi method buildCheckoutUrl của đối tượng onepayIntl với checkoutData truyền vào có email của customer.

Nếu với những email < 24 characters, thì kết quả trả về là success và kèm theo dữ liệu redirectURL. Nhưng với email có độ dài lớn hơn 24 ký tự, thì tôi gặp phải lỗi trên.

Xin hỏi là với những email customer có độ dài > 24 ký tự thì có phải set thêm options trong checkoutData để expands độ dài email không ạ ? Hoặc xin vui lòng gợi ý solution nào khác để fix lỗi trên.

Chân thành cảm ơn !

trongthanh commented 6 years ago

Chào bạn,

Giới hạn 24 ký tự của customer email được ghi trong tài liệu đặc tả của OnePay nên chúng tôi theo đó cài đặt lại trong checkoutSchema. (Xem hình, cột cuối cùng)

screen shot 2018-06-14 at 1 15 23 pm

Tuy nhiên đồng ý với bạn là giới hạn 24 ký tự cho email khá là vô lý và cũng không chắc là phía backend của OnePay có kiểm tra thật sự hay không.

Mình có 2 giải pháp:

Một là bạn không gửi customer email vào checkoutData (customer email là không bắt buộc). Email của khách hàng của bạn không cần phải gửi cho cổng thanh toán. Họ chỉ cần customer ID để lưu transaction phía họ thôi.

Hai là bạn ghi đè lại thuộc tính static OnePayInternational.checkoutSchema để tăng thêm limit cho các field của checkoutData.

Với cách ghi đè lại checkoutSchema, bạn cần cài thêm package vào project: simpl-schema để có thể tạo instance mới của SimpleSchema.

Nếu bạn thử dùng cách Hai thì vui lòng comment lại đây nếu phía OnePay họ thật sự không giới hạn 24 ký tự cho email. Mình sẽ update lại thư viện.

trungdh commented 6 years ago

Hi Mr. trongthanh,

Mình đã thử override lại thuộc tính max cho việc check schema của customerEmail >24, nhưng khi thực hiện call checkout sang Onepay thì vẫn nhận response với lỗi tương tự. Vì thế nên dành phải xử lý theo solution thứ nhất là bỏ dữ liệu customerEmail khỏi checkoutData và chuyển qua xử lý truy vấn thông tin customer (email) qua orderID đc trả về trong callback.

Cảm ơn rất nhiều vì sự hỗ trợ.

Thanks and Best Regards !!