def purchase_part_one( self, return_token, return_domain, return_path, return_with_https, encryption_key, customer=None, card=None ): """First part of the 2 stage purchase process. See the XML API documentation for more information about the purchase process. Args: return_token (string): Unique token for this purchase call. return_domain (string): The domain for the return URL. return_path (string): The path for the return URL. return_with_https (boolean): Indicates whether the URL should use HTTP or HTTPS. encryption_key (string): Encryption key for data. customer (Customer): Optional, Customer object representing the customer making the purchase. card (Card): Optional, Card object representing the payment card information. Returns: Dictionary: A dictionary containing an item called 'redirect_html_page_data' with a string value of HTML that should be passed to the user's browser in order to perform the redirect. """ if card: card_data = dict_ignore_nones(**card._get_dict()) else: card_data = None if customer: customer_data = dict_ignore_nones(**customer._get_dict()) else: customer_data = None https_string = boolean_to_yes_no( return_with_https ) crypto_block = self._get_crypto_block_for_object( method_name='make_reservation', interface_object=self ) resp_dict = self.get_core_api().purchase_reservation_part_one( crypto_block=crypto_block, upfront_data_token=self.settings['upfront_data_token'], customer_data=customer_data, return_token=return_token, return_domain=return_domain, return_path=return_path, return_with_https=https_string, encryption_key=encryption_key, card_data=card_data, ) return resp_dict
def purchase_reservation( self, customer=None, send_confirmation_email=None, ): """A one stage purchase process that should only be used for purchases made on credit. See the XML API documentation for more information about the purchase process. Note the absence of a 'card_data' element in the input - this is intentional since the 2-stage purchase process (calling purchase_part_one & purchase_part_two) should always be used whenever a payment method is required. Args: customer (Customer): Optional, Customer object representing the customer making the purchase. send_confirmation_email (boolean): Optional, boolean indicating whether TSW should send a confirmation email or not. Returns: Dictionary: The result of the attempted purchase """ if customer: customer_data = dict_ignore_nones(**customer._get_dict()) else: customer_data = None crypto_block = self._get_crypto_block_for_object( method_name='make_reservation', interface_object=self ) resp_dict = self.get_core_api().purchase_reservation( crypto_block=crypto_block, upfront_data_token=self.settings['upfront_data_token'], customer_data=customer_data, send_confirmation_email=send_confirmation_email, ) return resp_dict