2017-03-28 17 views
6

Tôi đang làm việc trên một ứng dụng ionic 2 mà về cơ bản là một giỏ mua hàng với Woocommerce như một phụ trợ. Mọi thứ đã khá trơn tru với API REST: Tôi có thể duyệt qua các sản phẩm và tạo đơn đặt hàng cho khách hàng trong ứng dụng.Làm cách nào để xử lý thanh toán PayPal trong ứng dụng ionic cho Woocommerce?

Nhưng bây giờ tôi bị kẹt với xử lý thanh toán. Ứng dụng sẽ chỉ sử dụng PayPal và có một số PayPal plugin Tôi muốn sử dụng. Tôi đã không thử nghiệm nó, nhưng nó có vẻ khá đơn giản: bạn vượt qua các chi tiết mua (giá, tiền tệ, mô tả ...) và sau đó làm cho giao diện người dùng PayPal.

Tôi có thể cung cấp tất cả thông tin đó cho giao diện người dùng PayPal, nhưng nó mang câu hỏi rõ ràng: làm cách nào để tích hợp nó với đơn hàng Woocommerce được liên kết? Làm thế nào để làm cho nó như vậy nếu thanh toán thành công, Woocommerce đăng ký nó như vậy?

Cài đặt Woocommerce đã bật PayPal. Bạn có thể sử dụng PayPal trong trang web tốt.

Bây giờ, tôi khá chắc chắn rằng nó có liên quan đến IPN của PayPal. Có một dự đoán hoang dã, có lẽ tôi nên bằng cách nào đó vượt qua ID đơn đặt hàng để các plugin PayPal, do đó, sau đó IPN sẽ vượt qua ID này cùng một đơn đặt hàng để Woocommerce? Có lẽ một cái gì đó như thế, nhưng tôi không thể tìm thấy tài liệu thích hợp về việc này.

Nếu bạn tìm kiếm "ionic 2 woocommerce paypal", bạn sẽ thấy rất nhiều người bán mã nguồn cho khá nhiều điều tương tự. Tôi có thể mua một cái và nghiên cứu nó, nhưng tôi muốn tìm tài liệu về hành động cụ thể này.

+0

Thay vì sử dụng plugin, tại sao chỉ đặt một nút HTML chung để thanh toán? –

+0

@JonathanBrizio thậm chí như vậy, tôi sẽ không biết thông tin gì để chuyển cho nút đó. – Voldemort

+0

Bạn có thể cung cấp một phiên bản nhẹ của việc triển khai trên Git Repo không? Sau đó, chúng ta có thể chơi với nó không? – Sampath

Trả lời

0

Bạn sắp hoàn tất. Nếu bạn không muốn mua plugin, bạn có thể thực hiện thủ công. Ví dụ: đặt thông số notify_url vào trang web của bạn, tức là pp_respond (hoặc bất kỳ thứ gì bạn muốn).

enter image description here

Trong functions.php của bạn, đặt mã này:

if(isset($_GET['pp_respond'])){ 
    file_put_contents(__DIR__."/my_notificationssss.txt", $_SERVER['REQUEST_URI']. "\r\n". print_r($_POST,true) . "\r\n ------------- \r\n" , FILE_APPEND); 
} 

sau đó thực hiện mua hàng kiểm tra, và dọc file functions.php sẽ có một tập tin mới có tên my-notificationssss.txt, và xem xét thông qua tập tin đó, và tìm hiểu các thông số mong muốn của bạn để sử dụng trong tương lai.

0

Một giải pháp có thể là thêm thông tin đơn đặt hàng vào phiên người dùng trước khi gửi người dùng đến Paypal.

Sau khi người dùng thanh toán qua Paypal, chuyển hướng họ đến một url "thành công" (được chỉ định trong yêu cầu PayPal). Khi người dùng truy cập url thành công này, bạn có thể cập nhật thứ tự trong WooCommerce bằng cách sử dụng thông tin phiên.

0

Sau khi tìm kiếm mã nguồn thương mại woo, có vẻ như nó thêm ID đặt hàng của riêng nó vào phần invoiceNumber của PayPal.

Vì vậy, nếu bạn có thương mại điện tử PayPal plugin trên trang web của bạn (cần bật IPN), bạn có thể sử dụng plugin PayPal Cordova trong ionic 2 bằng cách chuyển ID đơn hàng thương mại đến invoiceNumber. Giống như ví dụ bên dưới:

CHỈNH SỬA: Mặc dù thương mại điện tử có thêm số hóa đơn, giờ tôi tin rằng các thông số quan trọng nhất được chuyển là thông số custom.

pay() { 
    let payment = new PayPalPayment(this.data.price, this.data.currency, this.data.description, 'sale'); 
    payment.custom = JSON.stringify({ order_id: this.data.WOOCOMMERCE_ORDERID, order_key: this.data.WOOCOMMERCE_ORDERKEY }); 
    this.payPal.renderSinglePaymentUI(payment).then((response) => { 
     console.log(response); 
     // Successfully paid 

     // Example sandbox response 
     // 
     // { 
     // "client": { 
     //  "environment": "sandbox", 
     //  "product_name": "PayPal ANDROID SDK", 
     //  "paypal_sdk_version": "2.16.0", 
     //  "platform": "iOS" 
     // }, 
     // "response_type": "payment", 
     // "response": { 
     //  "id": "PAY-1AB23456CD789012EF34GHIJ", 
     //  "state": "approved", 
     //  "create_time": "2016-10-03T13:33:33Z", 
     //  "intent": "sale" 
     // } 
     // } 
    },() => { 
     // Error or render dialog closed without being successful 
    }); 
} 
Các vấn đề liên quan