// License: LGPL-3.0-or-later // Supporter wants to make a single donation to Nonprofit with ID 1 /* IN PROGRESS - some examples of transaction requests */ /* we disable since this is just an example file */ /* eslint-disable @typescript-eslint/no-unused-vars,@typescript-eslint/no-explicit-any*/ import Transaction, { Donation, OfflineTransaction } from "."; import {Charge, Charge as OfflineTransactionCharge} from './OfflineTransaction'; //`POST api/nonprofit/1/transaction` const donation_request = { // donation is a `transaction assignment`. Others are `campaign_gift_purchase` // or `ticket_purchase` donations: [{ // since this is in the nonprofit's currency they could do `amount: 10000` and // we'll autoexpand // if there's only one transaction assignment, this can be figured out. amount: { cents: 10000, currency: 'usd', }, designation: 'Special account', }], offline_transactions: [{ // this amount must match all of the transaction assignments amount: 10000, method: 'check', }], // information about the supporter donating. This either creates a new supporter // or finds one with the same email supporter: { email: 'penelope@fightingpoverty.org', name: 'Penelope Schultz', }, }; const donation_result: Transaction = { object: 'transaction', id: 'trx_313435ncan', amount: { cents: 10000, currency: 'usd', }, // timestamp created: 124541254, deleted: false, transaction_assignments: [{ object: 'donation', id: 'don_2454', // from transaction supporter: 340, // from supporter nonprofit: 1235, amount: { cents: 10000, currency: 'usd', }, designation: 'Special account', // it's a transaction assignment. type: 'trx_assignment', transaction: 'trx_313425ncan', } as Donation], subtransaction: { id: 'offltrx_415h5io', object: 'offline_transaction', deleted: false, created: 4144, // based upon adding up the first charge original_amount: { cents: 10000, currency: 'usd', }, amount: { cents: 10000, currency: 'usd', }, amount_disputed: { cents: 0, currency: 'usd', }, amount_pending: { cents: 0, currency: 'usd', }, amount_refunded: { cents: 0, currency: 'usd', }, fee_total: { cents: 0, currency: 'usd', }, //this is based upon adding up all of the charges, refunds, disputes and adjustments net_amount: { cents: 10000, currency: 'usd', }, // method: 'check', // status: 'success', disputes: [], refunds: [], charges: [ { id: 'offchrg_4325n3fnfewE', object: 'offline_transaction_charge', // gross_amount - fees net_amount: { cents: 10000, currency: 'usd', }, gross_amount: { cents: 10000, currency: 'usd', }, fees: { cents: 0, currency: 'usd'}, //from transaction supporter: 340, // from supporter nonprofit: 1235, // from subtransaction transaction: 'trx_313435ncan', subtransaction: 'offltrx_415h5io', type: 'payment', //timestamp of creation created: 133543588, }, ] as Charge[], //it's a subtransaction type: 'subtransaction', //from transaction supporter: 340, // from supporter nonprofit: 1235, transaction: 'trx_313435ncan', } as OfflineTransaction, nonprofit: { id: 1235, object: 'nonprofit', name: "Nonprofit's name", }, // we include all payments here from all of the subtransactions for ease of use subtransaction_payments: [{ id: 'offchrg_4325n3fnfewE', object: 'offline_transaction_charge', deleted: false, amount:{ cents: 10000, currency: 'usd', }, amount_pending: { cents: 10000, currency: 'usd', }, // gross_amount - fees net_amount: { cents: 10000, currency: 'usd', }, gross_amount: { cents: 10000, currency: 'usd', }, fees: null, status: 'success', subtransaction_entity: 'offchrg_4325n3fnfewE', // from subtransaction_entity subtransaction: 'offltrx_415h5io', //from transaction supporter: 340, // from supporter nonprofit: 1235, // subtransaction transaction: 'trx_313435ncan', created: 133543588, type: 'payment', } as OfflineTransactionCharge], // information about the supporter donating supporter: { id: 340, email: 'penelope@fightingpoverty.org', name: 'Penelope Schultz', nonprofit: 1235, anonymous: false, deleted: false, merged_into: null, organization: null, phone: null, object: 'supporter', addresses: [], }, } as Transaction; // Supporter wants to make a ticket purchase from Nonprofit 1 and tickets are available const ticket_purchase_request:any = { // donation is a `transaction assignment`. Others are `campaign_gift_purchase` // or `ticket_purchase` ticket_purchase: { // since this is in the nonprofit's currency they could do `amount: 10000` and // we'll autoexpand amount: { cents: 10000, currency: 'usd', }, event: 1, ticket_requests: [{ ticket_level: 'tktlvl_r3453j90942', quantity: 5, note: "Seat with Penelope's Father", }, { ticket_level: 'tktlvl_434', quantity: 1, }], }, offline_transactions: [{ // this amount must match all of the transaction assignments amount: 10000, method: 'check', }], // information about the supporter donating. This either creates a new supporter // or finds one with the same email supporter: { email: 'penelope@fightingpoverty.org', name: 'Penelope Schultz', }, }; const ticket_purchase_result:Transaction = { object: 'transaction', id: 'trx_313435ncan', amount: { cents: 10000, currency: 'usd', }, ticket_purchases: [{ // since this is in the nonprofit's currency they could do `amount: 10000` and // we'll autoexpand amount: { cents: 10000, currency: 'usd', }, event: 1, tickets: [{ amount: { cents: 2000, currency: 'usd', }, ticket_level: 'tktlvl_r3453j90942', checked_in: false, deleted: false, note: "Seat with Penelope's Father", id: 'tkt_werikhti35N', }, { amount: { cents: 2000, currency: 'usd', }, ticket_level: 'tktlvl_r3453j90942', checked_in: false, deleted: false, note: "Seat with Penelope's Father", id: 'tkt_werikVti35N', }, //... and 3 more for tktlvl_r3453j90942 { ticket_level: 'tktlvl_434', checked_in: false, deleted: false, id: 'tkt_535nrfuoh', amount: { cents: 0, currency: 'usd', }, }], id: 'tktpur_34235nrf', object: 'ticket_purchase', subtype: 'trx_assignment', }], offline_transactions: [{ id: 'offltrx_415h5io', object: 'offline_transasction', // based upon adding up the first charge original_amount: { cents: 10000, currency: 'usd', }, //this is based upon adding up all of the charges, refunds, disputes and adjustments net_amount: { cents: 10000, currency: 'usd', }, method: 'check', status: 'success', charges: [ { id: 'offchrg_4325n3fnfewE', object: 'offline_charge', // gross_amount - fees net_amount: { cents: 10000, currency: 'usd', }, gross_amount: { cents: 10000, currency: 'usd', }, fees: null, status: 'success', //from transaction supporter: 340, // from supporter nonprofit: 1235, // from subtransaction transaction: 'trx_313435ncan', subtransaction: 'offltrx_415h5io', subtype: 'payment', //timestamp of creation created: 133543588, }, ], //it's a subtransaction subtype: 'subtransaction', //from transaction supporter: 340, // from supporter nonprofit: 1235, transaction: 'trx_313435ncan', }], nonprofit: { id: 1235, object: 'nonprofit', name: "Nonprofit's name", }, // we include all payments here from all of the subtransactions for ease of use subtransaction_payments: [{ id: 'offchrg_4325n3fnfewE', object: 'offline_charge', // gross_amount - fees net_amount: { cents: 10000, currency: 'usd', }, gross_amount: { cents: 10000, currency: 'usd', }, fees: null, status: 'success', // from subtransaction_entity subtransaction: 'offltrx_415h5io', //from transaction supporter: 340, // from supporter nonprofit: 1235, // subtransaction transaction: 'trx_313435ncan', created: 133543588, }], // information about the supporter donating supporter: { id: 340, email: 'penelope@fightingpoverty.org', name: 'Penelope Schultz', nonprofit: 1235, }, }; // Supporter wants to make a ticket purchase from Nonprofit 1 and tickets are NOT available // TODO // Supporter wants to make a Stripe charge for a campaign_gift from Nonprofit 1 const stripe_campaign_gift_request:any = { campaign_gift_purchase: { // since this is in the nonprofit's currency they could do `amount: 10000` and // we'll autoexpand amount: { cents: 10000, currency: 'usd', }, campaign: 1, campaign_gifts: [{ campaign_gift_option: 'cgo_535n35n', }], }, stripe_transactions: [ { amount: 10000, }, ], // information about the supporter donating. This either creates a new supporter // or finds one with the same email supporter: { email: 'penelope@fightingpoverty.org', name: 'Penelope Schultz', }, }; const stripe_campaign_gift_result:any = { // donation is a `transaction assignment`. Others are `campaign_gift_purchase` // or `ticket_purchase` }; // Supporter wants to start a recurring donation and charge immediately //`POST /nonprofit/1/recurring_donation`