/// <summary> /// Creates a new order /// </summary> /// <param name="merchantOrderId">The unique id of the order at the merchant systems</param> /// <param name="email">The email used for contact in the order</param> /// <param name="customer">The customer information</param> /// <param name="paymentDetails">The payment details</param> /// <param name="billingAddress">Billing address</param> /// <param name="shippingAddress">Shipping address</param> /// <param name="lineItems">An array of all products in the order</param> /// <param name="shippingLines">An array of all shipping details for the order</param> /// <param name="gateway">The payment gateway that was used</param> /// <param name="customerBrowserIp">The customer browser ip that was used for the order</param> /// <param name="currency">A three letter code (ISO 4217) for the currency used for the payment</param> /// <param name="totalPrice">The sum of all the prices of all the items in the order, taxes and discounts included</param> /// <param name="createdAt">The date and time when the order was created</param> /// <param name="updatedAt">The date and time when the order was last modified</param> /// <param name="discountCodes">An array of objects, each one containing information about an item in the order (optional)</param> /// <param name="totalDiscounts">The total amount of the discounts on the Order (optional)</param> /// <param name="cartToken">Unique identifier for a particular cart or session that is attached to a particular order. The same ID should be passed in the Beacon JS (optional)</param> /// <param name="totalPriceUsd">The price in USD (optional)</param> /// <param name="closedAt">The date and time when the order was closed. If the order was closed (optional)</param> /// <param name="financialStatus">The financial status of the order (could be paid/voided/refunded/partly_paid/etc.)</param> /// <param name="fulfillmentStatus">The fulfillment status of the order</param> /// <param name="source">The source of the order</param> /// <param name="noChargeDetails">No charge sums - including all payments made for this order in giftcards, cash, checks or other non chargebackable payment methods</param> /// <param name="ClientDetails">Technical information regarding the customer's browsing session</param> /// <param name="chargeFreePaymentDetails">Payment sums made using non-chargebackable methods and should be omitted from the Chargeback gurantee sum and Riskified fee</param> public Order(string merchantOrderId, string email, Customer customer, AddressInformation billingAddress, AddressInformation shippingAddress, LineItem[] lineItems, ShippingLine[] shippingLines, string gateway, string customerBrowserIp, string currency, double totalPrice, DateTimeOffset createdAt, DateTimeOffset updatedAt, IPaymentDetails paymentDetails = null, DiscountCode[] discountCodes = null, double? totalDiscounts = null, string cartToken = null, double? totalPriceUsd = null, DateTime? closedAt = null, string financialStatus = null, string fulfillmentStatus = null, string source = null, NoChargeDetails noChargeDetails = null, string[] additionalEmails = null, string vendorId = null, string vendorName = null, DecisionDetails decisionDetails = null, ClientDetails clientDetails = null, ChargeFreePaymentDetails chargeFreePaymentDetails = null, string groupFounderOrderID = null) : base(merchantOrderId) { LineItems = lineItems; ShippingLines = shippingLines; BillingAddress = billingAddress; ShippingAddress = shippingAddress; Customer = customer; Email = email; CustomerBrowserIp = customerBrowserIp; Currency = currency; TotalPrice = totalPrice; Gateway = gateway; CreatedAt = createdAt; UpdatedAt = updatedAt; // optional fields PaymentDetails = paymentDetails; DiscountCodes = discountCodes; TotalPriceUsd = totalPriceUsd; TotalDiscounts = totalDiscounts; CartToken = cartToken; ClosedAt = closedAt; FinancialStatus = financialStatus; FulfillmentStatus = fulfillmentStatus; Source = source; NoChargeAmount = noChargeDetails; AdditionalEmails = additionalEmails; VendorId = vendorId; VendorName = vendorName; Decision = decisionDetails; ClientDetails = clientDetails; ChargeFreePaymentDetails = chargeFreePaymentDetails; // This field is added for gift card group purchase GroupFounderOrderID = groupFounderOrderID; }
/// <summary> /// Generates a new order object /// Mind that some of the fields of the order (and it's sub-objects) are optional /// </summary> /// <param name="orderNum">The order number to put in the order object</param> /// <returns></returns> private static Order GenerateOrder(int orderNum) { var customerAddress = new BasicAddress( address1: "27 5th avenue", city: "Manhattan", country: "United States", countryCode: "US", phone: "5554321234", address2: "Appartment 5", zipCode: "54545" ); // putting sample customer details var customer = new Customer( firstName: "John", lastName: "Doe", id: "405050606", ordersCount: 4, email: "*****@*****.**", verifiedEmail: true, createdAt: new DateTime(2013, 12, 8, 14, 12, 12, DateTimeKind.Local), // make sure to initialize DateTime with the correct timezone notes: "No additional info", address: customerAddress); // putting sample billing details var billing = new AddressInformation( firstName: "Ben", lastName: "Rolling", address1: "27 5th avenue", city: "Manhattan", country: "United States", countryCode: "US", phone: "5554321234", address2: "Appartment 5", zipCode: "54545", province: "New York", provinceCode: "NY", company: "IBM", fullName: "Ben Philip Rolling"); var shipping = new AddressInformation( firstName: "Luke", lastName: "Rolling", address1: "4 Bermingham street", city: "Cherry Hill", country: "United States", countryCode: "US", phone: "55546665", provinceCode: "NJ", province: "New Jersey"); var payments = new CreditCardPaymentDetails( avsResultCode: "Y", cvvResultCode: "n", creditCardBin: "124580", creditCardCompany: "Visa", creditCardNumber: "XXXX-XXXX-XXXX-4242"); var noChargeAmount = new NoChargeDetails( refundId: "123444", amount: 20.5, currency: "GBP", reason: "giftcard" ); var lines = new[] { new ShippingLine(price: 22.22,title: "Mail"), new ShippingLine(price: 2,title: "Ship",code: "A22F") }; var recipientSocial = new SocialDetails( network: "Facebook", publicUsername: "******", accountUrl: "http://www.facebook.com/john.smith"); var recipient = new Recipient( email: "*****@*****.**", phone: "96522444221", social: recipientSocial); var items = new[] { new LineItem(title: "Bag",price: 55.44,quantityPurchased: 1,productId: 48484,sku: "1272727",deliveredTo: DeliveredToType.StorePickup, delivered_at:new DateTime(2016, 12, 8, 14, 12, 12, DateTimeKind.Local)), new LineItem(title: "Monster", price: 22.3, quantityPurchased: 3, seller: new Seller(customer: customer,correspondence: 1, priceNegotiated: true, startingPrice: 120)), // Events Tickets Industry new LineItem(title: "Concert", price: 123, quantityPurchased: 1, category: "Singers", subCategory: "Rock", eventName: "Bon Jovy", eventSectionName: "Section", eventCountry: "USA", eventCountryCode: "US", latitude: 0, longitude: 0), // Digital Goods (giftcard) industry new LineItem(title: "Concert", price: 123, quantityPurchased: 1, sender_name: "John", display_name: "JohnJohn", photo_uploaded: true, photo_url: "http://my_pic_url", greeting_photo_url: "http://my_greeting_pic_url", message: "Happy Birthday", greeting_message: "Happy Birthday from John", card_type: "regular", card_sub_type: "birthday", sender_email: "*****@*****.**", recipient: recipient), }; var discountCodes = new[] { new DiscountCode(moneyDiscountSum: 7, code: "1") }; DecisionDetails decisionDetails = new DecisionDetails(ExternalStatusType.Approved, DateTime.Now); // make sure to initialize DateTime with the correct timezone // This is an example for an order with charge free sums (e.g. gift card payment) var chargeFreePayments = new ChargeFreePaymentDetails( gateway: "giftcard", amount: 45); // This is an example for client details section var clientDetails = new ClientDetails( accept_language: "en-CA", user_agent: "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); var order = new Order( merchantOrderId: orderNum.ToString(), email: "*****@*****.**", customer: customer, paymentDetails: payments, billingAddress: billing, shippingAddress: shipping, lineItems: items, shippingLines: lines, gateway: "authorize_net", customerBrowserIp: "165.12.1.1", currency: "USD", totalPrice: 100.60, createdAt: DateTime.Now, // make sure to initialize DateTime with the correct timezone updatedAt: DateTime.Now, // make sure to initialize DateTime with the correct timezone discountCodes: discountCodes, source: "web", noChargeDetails: noChargeAmount, decisionDetails: decisionDetails, vendorId: "2", vendorName: "domestic", additionalEmails: new [] {"*****@*****.**","*****@*****.**"}, chargeFreePaymentDetails: chargeFreePayments, clientDetails: clientDetails, groupFounderOrderID: "2222" ); return order; }