From b0ae674600b68d8b8fa1d522cb0f5366ee0f2cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=EA=A6=AB=EA=A6=B6=EA=A6=8F=EA=A7=80=EA=A6=A6?= =?UTF-8?q?=EA=A6=BF=EA=A6=A7=EA=A6=AE=EA=A6=91=EA=A6=A9=EA=A6=AD=EA=A7=80?= Date: Tue, 1 Dec 2020 17:09:16 +0800 Subject: Checkout function --- ord.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'ord.c') diff --git a/ord.c b/ord.c index cf7bd12..a429879 100644 --- a/ord.c +++ b/ord.c @@ -3,6 +3,7 @@ #include "request.h" #include "icclient/catalog.h" #include "icclient/product.h" +#include "icclient/member.h" #include "icclient/ord.h" typedef struct icclient_catalog icclient_catalog; @@ -83,6 +84,82 @@ void icclient_ord_order(const char *sku, const icclient_catalog *catalog, request(NULL, NULL, NULL, "%s%s", "order?mv_arg=", sku); } +void icclient_ord_checkout(struct icclient_ord_order *order, + struct icclient_member *member) +{ + struct curl_httppost *post, *last = NULL; + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "mv_todo", + CURLFORM_COPYCONTENTS, "submit", + CURLFORM_END); + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "mv_action", + CURLFORM_COPYCONTENTS, "refresh", + CURLFORM_END); + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "mv_order_profile", + CURLFORM_PTRCONTENTS, order->profile, + CURLFORM_END); + if (member->fname) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "fname", + CURLFORM_PTRCONTENTS, member->fname, + CURLFORM_END); + if (member->lname) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "lname", + CURLFORM_PTRCONTENTS, member->lname, + CURLFORM_END); + if (member->address1) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "address1", + CURLFORM_PTRCONTENTS, member->address1, + CURLFORM_END); + if (member->address2) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "address2", + CURLFORM_PTRCONTENTS, member->address2, + CURLFORM_END); + if (member->city) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "city", + CURLFORM_PTRCONTENTS, member->city, + CURLFORM_END); + if (member->state) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "state", + CURLFORM_PTRCONTENTS, member->state, + CURLFORM_END); + if (member->zip) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "zip", + CURLFORM_PTRCONTENTS, member->zip, + CURLFORM_END); + if (member->email) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "email", + CURLFORM_PTRCONTENTS, member->email, + CURLFORM_END); + if (member->phone_day) + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "phone_day", + CURLFORM_PTRCONTENTS, member->phone_day, + CURLFORM_END); + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "mv_same_billing", + CURLFORM_COPYCONTENTS, + member->preferences->mv_same_billing? "1" : "0", + CURLFORM_END); + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "email_copy", + CURLFORM_COPYCONTENTS, member->preferences->email_copy? "1" : "0", + CURLFORM_END); + last = NULL; + request(NULL, NULL, post, "%s", "ord/checkout"); + curl_formfree(post); + post = NULL; +} + void icclient_ord_free(struct icclient_ord_order *order) { for (size_t i = 0; i < order->nitems; i++) -- cgit v1.2.3