Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit authorizenetsoapcall;
- interface
- uses Classes, SysUtils, AuthService, XSBuiltIns;
- type
- TAuthorizeNetARB = class(TObject)
- private
- FMerc: MerchantAuthenticationType;
- FArb: ARBSubscriptionType;
- FRet: ARBCreateSubscriptionResponseType;
- FAUTHORIZE_LOGIN: string;
- FAUTHORIZE_KEY: string;
- FMerchant_assigned_name: string;
- FAmount: string;
- FTrialamount: string;
- FInterval_length: SmallInt;
- FStartdate_month: Word;
- FStartdate_day: Word;
- FStartdate_year: integer;
- FTotalOccurrences: SmallInt;
- FTrialOccurrences: SmallInt;
- FCreditCard_cardNumber: string;
- FCreditCard_expirationDate: string;
- FCreditCard_cardCode: string;
- FCustomerID: string;
- FCustomerEmail: string;
- FCustomerPhone: string;
- FCustomerFax: string;
- FBillTo_firstName: string;
- FBillTo_lastName: string;
- FBillTo_address: string;
- FBillTo_city: string;
- FBillTo_state: string;
- FBillTo_zip: string;
- FBillTo_country: string;
- // returns
- FReturnCode: integer;
- FReturnMessage: string;
- FReturnSubscriptionID: string;
- procedure InitSOAP;
- public
- constructor Create;
- destructor Destroy; override;
- function MakePayment: string;
- published
- property AUTHORIZE_LOGIN: string read FAUTHORIZE_LOGIN write FAUTHORIZE_LOGIN;
- property AUTHORIZE_KEY: string read FAUTHORIZE_KEY write FAUTHORIZE_KEY;
- property Merchant_assigned_name: string read FMerchant_assigned_name write FMerchant_assigned_name;
- property Amount: string read FAmount write FAmount;
- property Trialamount: string read FTrialamount write FTrialamount;
- property Interval_length: SmallInt read FInterval_length write FInterval_length;
- property Startdate_month: Word read FStartdate_month write FStartdate_month;
- property Startdate_day: Word read FStartdate_day write FStartdate_day;
- property Startdate_year: integer read FStartdate_year write FStartdate_year;
- property TotalOccurrences: SmallInt read FTotalOccurrences write FTotalOccurrences;
- property TrialOccurrences: SmallInt read FTrialOccurrences write FTrialOccurrences;
- property CreditCard_cardNumber: string read FCreditCard_cardNumber write FCreditCard_cardNumber;
- property CreditCard_expirationDate: string read FCreditCard_expirationDate write FCreditCard_expirationDate;
- property CreditCard_cardCode: string read FCreditCard_cardCode write FCreditCard_cardCode;
- property CustomerID: string read FCustomerID write FCustomerID;
- property CustomerEmail: string read FCustomerEmail write FCustomerEmail;
- property CustomerPhone: string read FCustomerPhone write FCustomerPhone;
- property CustomerFax: string read FCustomerFax write FCustomerFax;
- property BillTo_firstName: string read FBillTo_firstName write FBillTo_firstName;
- property BillTo_lastName: string read FBillTo_lastName write FBillTo_lastName;
- property BillTo_address: string read FBillTo_address write FBillTo_address;
- property BillTo_city: string read FBillTo_city write FBillTo_city;
- property BillTo_state: string read FBillTo_state write FBillTo_state;
- property BillTo_zip: string read FBillTo_zip write FBillTo_zip;
- property BillTo_country: string read FBillTo_country write FBillTo_country;
- property ReturnCode: integer read FReturnCode;
- property ReturnMessage: string read FReturnMessage;
- property ReturnSubscriptionID: string read FReturnSubscriptionID;
- end;
- implementation
- { TAuthorizeNetARB }
- constructor TAuthorizeNetARB.Create;
- begin
- FMerc := MerchantAuthenticationType.Create;
- FArb := ARBSubscriptionType.Create;
- end;
- destructor TAuthorizeNetARB.Destroy;
- begin
- FMerc.Free;
- FArb.Free;
- FRet.Free;
- inherited;
- end;
- procedure TAuthorizeNetARB.InitSOAP;
- var
- amount: TxsDecimal;
- trialamount: TxsDecimal;
- startdate: TXSDate;
- begin
- amount := TxsDecimal.Create;
- trialamount := TxsDecimal.Create;
- startdate := TXSDate.Create;
- FMerc.name_ := AUTHORIZE_LOGIN;
- FMerc.transactionKey := AUTHORIZE_KEY;
- FArb.name_ := FMerchant_assigned_name;
- amount.DecimalString := FAmount;
- FArb.amount := amount;
- trialamount.DecimalString := FTrialamount;
- FArb.trialAmount := trialamount;
- FArb.paymentSchedule := PaymentScheduleType.Create;
- FArb.paymentSchedule.interval := PaymentScheduleTypeInterval.Create;
- FArb.paymentSchedule.interval.length := Interval_length;
- FArb.paymentSchedule.interval.unit_ := ARBSubscriptionUnitEnum.months;
- startdate.Month := Startdate_month;
- startdate.Day := Startdate_day;
- startdate.Year := Startdate_year;
- FArb.paymentSchedule.startDate := startdate;
- FArb.paymentSchedule.totalOccurrences := TotalOccurrences;
- FArb.paymentSchedule.trialOccurrences := TrialOccurrences;
- FArb.payment := PaymentType.Create;
- FArb.payment.creditCard := CreditCardType.Create;
- FArb.payment.creditCard.cardNumber := CreditCard_cardNumber;
- FArb.payment.creditCard.expirationDate := CreditCard_expirationDate;
- FArb.payment.creditCard.cardCode := CreditCard_cardCode;
- FArb.customer := CustomerType.Create;
- FArb.customer.id := FCustomerID;
- FArb.customer.email := FCustomerEmail;
- FArb.customer.phoneNumber := FCustomerPhone;
- FArb.customer.faxNumber := FCustomerFax;
- FArb.billTo := NameAndAddressType.Create;
- FArb.billTo.firstName := BillTo_firstName;
- FArb.billTo.lastName := BillTo_lastName;
- FArb.billTo.address := BillTo_address;
- FArb.billTo.city := BillTo_city;
- FArb.billTo.state := BillTo_state;
- FArb.billTo.zip := BillTo_zip;
- FArb.billTo.country := BillTo_country;
- end;
- // make payment will return 0 as ReturnCode if the subscription is successfull
- function TAuthorizeNetARB.MakePayment: string;
- begin
- result := '';
- try
- InitSOAP;
- FRet := GetServiceSoap.ARBCreateSubscription(FMerc, FArb);
- FReturnCode := integer(FRet.resultCode);
- FReturnMessage := FRet.messages[0].text;
- FReturnSubscriptionID := IntToStr(FRet.subscriptionId);
- except
- on e: Exception do
- result := e.Message;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement