merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

cutted_from_service (5618B)


      1 ///* PART FROM WHICH IDEAS FOR NEW IMPLEMENTATION HAVE BEEN DEFINED*/
      2 //
      3 ///* application *before* including this header should do: */
      4 //#define TALER_MERCHANT_ORDER_PAY_CALLBACK_CLOSURE_TYPE struct PayState
      5 //
      6 //
      7 //#ifndef TALER_MERCHANT_ORDER_PAY_CALLBACK_CLOSURE_TYPE
      8 //#define TALER_MERCHANT_ORDER_PAY_CALLBACK_CLOSURE_TYPE void
      9 //#endif
     10 //
     11 //struct TALER_MERCHANT_OrderPayHandle *
     12 //TALER_MERCHANT_order_pay_create (
     13 //  struct GNUNET_CURL_Context *ctx,
     14 //  TALER_MERCHANT_OrderPayCallback pay_cb,
     15 //  TALER_MERCHANT_ORDER_PAY_CALLBACK_CLOSURE_TYPE *pay_cb_cls)
     16 //{
     17 //  ph->body = json_object (); // json_t *
     18 //}
     19 //
     20 //
     21 //struct TALER_MERCHANT_OrderPayOption
     22 //{
     23 //  enum TALER_MERCHANT_OrderPayOptionType
     24 //  {
     25 //    TALER_MERCHANT_OrderPayOptionType_END = 0,
     26 //    TALER_MERCHANT_OrderPayOptionType_MERCHANT_URL,
     27 //    TALER_MERCHANT_OrderPayOptionType_SESSION_ID,
     28 //    TALER_MERCHANT_OrderPayOptionType_H_CONTRACT,
     29 //    TALER_MERCHANT_OrderPayOptionType_CHOICE_INDEX,
     30 //    TALER_MERCHANT_OrderPayOptionType_AMOUNT,
     31 //    TALER_MERCHANT_OrderPayOptionType_MAX_FEE,
     32 //    TALER_MERCHANT_OrderPayOptionType_MERCHANT_PUB,
     33 //    TALER_MERCHANT_OrderPayOptionType_TIMESTAMP,
     34 //    TALER_MERCHANT_OrderPayOptionType_REFUND_DEADLINE,
     35 //    TALER_MERCHANT_OrderPayOptionType_PAY_DEADLINE,
     36 //    TALER_MERCHANT_OrderPayOptionType_H_WIRE,
     37 //    TALER_MERCHANT_OrderPayOptionType_ORDER_ID,
     38 //    TALER_MERCHANT_OrderPayOptionType_COINS,
     39 //    TALER_MERCHANT_OrderPayOptionType_INPUT_TOKENS,
     40 //    TALER_MERCHANT_OrderPayOptionType_OUTPUT_TOKENS
     41 //  } ot;
     42 //
     43 //  union
     44 //  {
     45 //    const char *merchant_url;
     46 //    const char *session_id;
     47 //    const struct TALER_PrivateContractHashP *h_contract;
     48 //    int choice_index;
     49 //    struct TALER_Amount amount;
     50 //    struct TALER_Amount max_fee;
     51 //    struct TALER_MerchantPublicKeyP merchant_pub;
     52 //    struct GNUNET_TIME_Timestamp timestamp;
     53 //    struct GNUNET_TIME_Timestamp refund_deadline;
     54 //    struct GNUNET_TIME_Timestamp pay_deadline;
     55 //    struct TALER_MerchantWireHashP h_wire;
     56 //    const char *order_id;
     57 //    struct
     58 //    {
     59 //      unsigned int num_coins;
     60 //      const struct TALER_MERCHANT_PayCoin *coins;
     61 //    } coins;
     62 //    struct
     63 //    {
     64 //      unsigned int num_tokens;
     65 //      const struct TALER_MERCHANT_UseToken *tokens;
     66 //    } input_tokens;
     67 //    struct
     68 //    {
     69 //      unsigned int num_output_tokens,
     70 //      const struct TALER_MERCHANT_OutputToken *output_tokens;
     71 //    } output_tokens;
     72 //  } details;
     73 //};
     74 //
     75 ///*FIXME: THIS PARTS NEEDS TO BE DEFINED CLEARLY and ideally in new file with previous struct*/
     76 //enum TALER_MERCHANT_OrderPayOptionErrorCode
     77 //TALER_MERCHANT_order_pay_set_options (
     78 //  struct TALER_MERCHANT_OrderPayHandle *ph,
     79 //  struct TALER_MERCHANT_OrderPayOption options[],
     80 //  size_t max_options);
     81 //
     82 //{
     83 //  for (i-- not 0 - terminateor && i < max_options; i++)
     84 //    switch (options[i].type)
     85 //      case ...
     86 //        GNUNET_assert (0 ==
     87 //                       json_object_set_new (ph->body,
     88 //                                            "field",
     89 //                                            json_string ("foo")));
     90 //  return OK;
     91 //  case ...
     92 //    GNUNET_assert (0 ==
     93 //                   json_object_set_new (ph->body,
     94 //                                        "field",
     95 //                                        json_bool (true)));
     96 //
     97 //    return OK;
     98 //  case ...
     99 //    GNUNET_assert (0 ==
    100 //                   json_object_set_new (ph->body,
    101 //                                        "wire_hash",
    102 //                                        GNUNET_JSON_PACK (
    103 //                                          GNUNET_JSON_pack_data_auto (NULL,
    104 //                                                                      &options[i
    105 //                                                                      ].details.
    106 //                                                                      h_wire))))
    107 //    return OK;
    108 //}
    109 //
    110 //}
    111 //return ERROR_UNKNOWN_OPTION;
    112 //}
    113 //
    114 //#define TALER_MERCHANT_ORDER_PAY_OPTION_TERMINATE() \
    115 //        (const struct TALER_MERCHANT_OrderPayOption) { \
    116 //          .ot = TALER_MERCHANT_OrderPayOptionType_END \
    117 //        }
    118 //
    119 //
    120 //#define TALER_MERCHANT_ORDER_PAY_OPTION_SESSION_ID(session_id)   \
    121 //        (const struct TALER_MERCHANT_OrderPayOption) { \
    122 //          .ot = TALER_MERCHANT_OrderPayOptionType_SESSION_ID, \
    123 //          .details.session_id = session_id           \
    124 //        }
    125 //
    126 //#define TALER_MERCHANT_ORDER_PAY_SET_OPTIONS(ph,...)          \
    127 //        MHD_NOWARN_COMPOUND_LITERALS_                   \
    128 //        TALER_MERCHANT_order_pay_set_options (                        \
    129 //          daemon,                                       \
    130 //          ((const struct TALER_MERCHANT_OrderPayHandle[])    \
    131 //           {__VA_ARGS__, TALER_MERCHANT_ORDER_PAY_OPTION_TERMINATE ()}),   \
    132 //          MHD_OPTIONS_ARRAY_MAX_SIZE)                   \
    133 //
    134 ///* END OF THE PART THAT NEEDS TO BE EXTENDED */
    135 //
    136 //enum TALER_MERCHANT_OrderPayOptionErrorCode
    137 //TALER_MERCHANT_order_pay_start (struct TALER_MERCHANT_OrderPayHandle *ph);
    138 
    139 //#if APP /*SAMPLE OF USAGE OF PREVIOUS DEFINITIONS*/
    140 //{
    141 //  struct TALER_MERCHANT_OrderPayHandle *ph;
    142 //
    143 //  ph = TALER_MERCHANT_order_pay_create (struct GNUNET_CURL_Context *ctx,
    144 //                                        TALER_MERCHANT_OrderPayCallback pay_cb,
    145 //                                        pay_cb_cls);
    146 //
    147 //  GNUNET_assert (OK ==
    148 //                 TALER_MERCHANT_ORDER_PAY_SET_OPTIONS (
    149 //                   ph,
    150 //                   TALER_MERCHANT_ORDER_PAY_OPTION_SESSION_ID ("session")));
    151 //  pay_start (ph);
    152 //}
    153 //#endif
    154 
    155 /* END OF LIST OF IDEAS */