Billhighway Cloud API

<back to all web services

CoreChargeDonationRq

The following routes are available for this service:
POST/integrations/api/{integrationType}/core/donationcharge
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoreChargeGatewaySaleResponse:
    failure_type: Optional[str] = None
    is_duplicate: Optional[bool] = None
    is_successful: Optional[bool] = None
    error_code: Optional[str] = None
    message: Optional[str] = None
    gateway_id: Optional[int] = None
    confirmation_number: Optional[str] = None
    network_transaction_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AttributeItem:
    name: Optional[str] = None
    value: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreditCardBillingAddressItem:
    address1: Optional[str] = None
    address2: Optional[str] = None
    city: Optional[str] = None
    postal_code: Optional[str] = None
    region: Optional[str] = None
    country: Optional[str] = None
    attributes: Optional[List[AttributeItem]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreditCardChargeVerificationResult:
    network_verification_attempted: Optional[bool] = None
    cvv_verification_result: Optional[str] = None
    address_verification_result: Optional[str] = None
    postal_code_verification_result: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoreCreditCardChargeDetails:
    card_type: Optional[str] = None
    exp_month: Optional[int] = None
    exp_year: Optional[int] = None
    last4: Optional[str] = None
    address: Optional[CreditCardBillingAddressItem] = None
    verification_result: Optional[CreditCardChargeVerificationResult] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoreChargeDetails:
    payment_type: Optional[str] = None
    amount: Optional[int] = None
    integration_type: Optional[str] = None
    currency: Optional[str] = None
    card_details: Optional[CoreCreditCardChargeDetails] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoreChargeDonationRs:
    transaction_id: Optional[str] = None
    stored_account_id: Optional[int] = None
    national_id: Optional[int] = None
    chapter_id: Optional[int] = None
    charge_type: Optional[str] = None
    integration_type: Optional[str] = None
    context_integration_partner_id: Optional[int] = None
    caller_integration_partner_id: Optional[int] = None
    gateway_response: Optional[CoreChargeGatewaySaleResponse] = None
    charge_details: Optional[CoreChargeDetails] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EventItem:
    customer_fee_item_type_id: Optional[str] = None
    quantity: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CoreChargeDonationRq(IChargeRequest):
    # @ApiMember(ParameterType="path")
    integration_type: Optional[str] = None

    national_id: Optional[int] = None
    chapter_id: Optional[int] = None
    stored_account_id: Optional[int] = None
    context_integration_partner_id: Optional[int] = None
    caller_integration_partner_id: Optional[int] = None
    user_id: Optional[int] = None
    authentication_id: Optional[int] = None
    charge_type: Optional[str] = None
    token: Optional[str] = None
    # @ApiMember(Format="decimal", ParameterType="model")
    amount: Optional[Decimal] = None

    description: Optional[str] = None
    campaign_id: Optional[int] = None
    created_by_id: Optional[int] = None
    transaction_id: Optional[int] = None
    partner_reference_id: Optional[str] = None
    event_items: Optional[List[EventItem]] = None

Python CoreChargeDonationRq DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /integrations/api/{integrationType}/core/donationcharge HTTP/1.1 
Host: devapi.billhighway.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	integrationType: String,
	NationalId: 0,
	ChapterId: 0,
	StoredAccountId: 0,
	ContextIntegrationPartnerId: 0,
	CallerIntegrationPartnerId: 0,
	UserId: 0,
	AuthenticationId: 0,
	ChargeType: String,
	Token: String,
	Amount: 0,
	Description: String,
	CampaignId: 0,
	CreatedById: 0,
	TransactionId: 0,
	PartnerReferenceId: String,
	EventItems: 
	[
		{
			CustomerFeeItemTypeId: String,
			Quantity: String
		}
	]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	TransactionId: String,
	StoredAccountId: 0,
	NationalId: 0,
	ChapterId: 0,
	ChargeType: String,
	IntegrationType: String,
	ContextIntegrationPartnerId: 0,
	CallerIntegrationPartnerId: 0,
	GatewayResponse: 
	{
		FailureType: String,
		IsDuplicate: False,
		IsSuccessful: False,
		ErrorCode: String,
		Message: String,
		GatewayId: 0,
		ConfirmationNumber: String,
		NetworkTransactionId: String
	},
	ChargeDetails: 
	{
		PaymentType: String,
		Amount: 0,
		IntegrationType: String,
		Currency: String,
		CardDetails: 
		{
			CardType: String,
			ExpMonth: 0,
			ExpYear: 0,
			Last4: String,
			Address: 
			{
				Address1: String,
				Address2: String,
				City: String,
				PostalCode: String,
				Region: String,
				Country: String,
				Attributes: 
				[
					{
						Name: String,
						Value: String
					}
				]
			},
			VerificationResult: 
			{
				NetworkVerificationAttempted: False,
				CvvVerificationResult: String,
				AddressVerificationResult: String,
				PostalCodeVerificationResult: String
			}
		}
	}
}