BTPayPalCheckoutRequest.m 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #import "BTPayPalCheckoutRequest_Internal.h"
  2. #import "BTPayPalRequest_Internal.h"
  3. @implementation BTPayPalCheckoutRequest
  4. - (instancetype)initWithAmount:(NSString *)amount {
  5. if (amount == nil) {
  6. return nil;
  7. }
  8. if (self = [super init]) {
  9. _amount = amount;
  10. _offerPayLater = NO;
  11. _intent = BTPayPalRequestIntentAuthorize;
  12. _userAction = BTPayPalRequestUserActionDefault;
  13. }
  14. return self;
  15. }
  16. - (NSString *)intentAsString {
  17. switch(self.intent) {
  18. case BTPayPalRequestIntentSale:
  19. return @"sale";
  20. case BTPayPalRequestIntentOrder:
  21. return @"order";
  22. default:
  23. return @"authorize";
  24. }
  25. }
  26. - (NSString *)userActionAsString {
  27. switch(self.userAction) {
  28. case BTPayPalRequestUserActionCommit:
  29. return @"commit";
  30. default:
  31. return @"";
  32. }
  33. }
  34. - (NSString *)hermesPath {
  35. return @"v1/paypal_hermes/create_payment_resource";
  36. }
  37. - (BTPayPalPaymentType)paymentType {
  38. return BTPayPalPaymentTypeCheckout;
  39. }
  40. - (NSDictionary<NSString *, NSObject *> *)parametersWithConfiguration:(BTConfiguration *)configuration {
  41. NSMutableDictionary *parameters = [[super parametersWithConfiguration:configuration] mutableCopy];
  42. parameters[@"intent"] = self.intentAsString;
  43. parameters[@"amount"] = self.amount;
  44. parameters[@"offer_pay_later"] = @(self.offerPayLater);
  45. NSString *currencyCode = self.currencyCode ?: [configuration.json[@"paypal"][@"currencyIsoCode"] asString];
  46. if (currencyCode) {
  47. parameters[@"currency_iso_code"] = currencyCode;
  48. }
  49. if (self.requestBillingAgreement) {
  50. parameters[@"request_billing_agreement"] = @(self.requestBillingAgreement);
  51. }
  52. if (self.requestBillingAgreement && self.billingAgreementDescription) {
  53. parameters[@"billing_agreement_details"] = @{@"description": self.billingAgreementDescription};
  54. }
  55. if (self.shippingAddressOverride) {
  56. parameters[@"line1"] = self.shippingAddressOverride.streetAddress;
  57. parameters[@"line2"] = self.shippingAddressOverride.extendedAddress;
  58. parameters[@"city"] = self.shippingAddressOverride.locality;
  59. parameters[@"state"] = self.shippingAddressOverride.region;
  60. parameters[@"postal_code"] = self.shippingAddressOverride.postalCode;
  61. parameters[@"country_code"] = self.shippingAddressOverride.countryCodeAlpha2;
  62. parameters[@"recipient_name"] = self.shippingAddressOverride.recipientName;
  63. }
  64. return parameters;
  65. }
  66. @end