Skip to content

Commit 7dceb02

Browse files
author
akankari
committed
Adding sample codes + Tests for the Q1 API : CreateSubscriptionFromCustomerProfile
Updated the sample code for CreateCustomerProfileFromTransaction to incorporate the Q1 changes
1 parent 82834a7 commit 7dceb02

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

CustomerProfiles/create-customer-payment-profile.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def create_customer_payment_profile(customerProfileId = '35894174')
1515

1616
payment = PaymentType.new(CreditCardType.new('4111111111111111','2020-05'))
1717
profile = CustomerPaymentProfileType.new(nil,nil,payment,nil,nil)
18+
profile.billTo = CustomerAddressType.new
19+
profile.billTo.firstName = "John"
20+
profile.billTo.lastName = "Snow"
1821

1922
request.paymentProfile = profile
2023
request.customerProfileId = customerProfileId

CustomerProfiles/create-customer-profile-from-transaction.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ def create_customer_profile_from_a_transaction(transId = 2242762682)
1313

1414
request = CreateCustomerProfileFromTransactionRequest.new
1515
request.transId = transId
16+
17+
#You can either specify the customer information in form of customerProfileBaseType object
18+
request.customer = CustomerProfileBaseType.new
19+
request.customer.merchantCustomerId = "1231232"
20+
request.customer.description = "This is a sample customer profile"
21+
request.customer.email = "[email protected]"
22+
# OR
23+
# You can just provide the customer Profile ID
24+
# customerProfileId = "123343"
25+
1626
response = transaction.create_customer_profile_from_transaction(request)
1727

1828

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
require 'rubygems'
2+
require 'yaml'
3+
require 'authorizenet'
4+
5+
require 'securerandom'
6+
7+
include AuthorizeNet::API
8+
9+
def create_Subscription_from_customer_profile(profileId = "123213", paymentProfileId = "123213", addressId = "123213")
10+
config = YAML.load_file(File.dirname(__FILE__) + "/../credentials.yml")
11+
12+
transaction = Transaction.new(config['api_login_id'], config['api_transaction_key'], :gateway => :sandbox)
13+
#subscription = Subscription.new(config['api_login_id'], config['api_subscription_key'], :gateway => :sandbox)
14+
15+
request = ARBCreateSubscriptionRequest.new
16+
request.refId = DateTime.now.to_s[-8]
17+
request.subscription = ARBSubscriptionType.new
18+
request.subscription.name = "Jane Doe"
19+
request.subscription.paymentSchedule = PaymentScheduleType.new
20+
request.subscription.paymentSchedule.interval = PaymentScheduleType::Interval.new("3","months")
21+
request.subscription.paymentSchedule.startDate = (DateTime.now).to_s[0...10]
22+
request.subscription.paymentSchedule.totalOccurrences ='12'
23+
request.subscription.paymentSchedule.trialOccurrences ='1'
24+
25+
random_amount = ((SecureRandom.random_number + 1 ) * 150 ).round(2)
26+
request.subscription.amount = random_amount
27+
request.subscription.trialAmount = 0.00
28+
29+
request.subscription.profile = CustomerProfileIdType.new
30+
request.subscription.profile.customerProfileId = profileId
31+
request.subscription.profile.customerPaymentProfileId = paymentProfileId
32+
request.subscription.profile.customerAddressId = addressId
33+
34+
response = transaction.create_subscription(request)
35+
36+
puts response.messages.to_yaml()
37+
38+
if response != nil
39+
if response.messages.resultCode == MessageTypeEnum::Ok
40+
puts "Successfully created a subscription #{response.subscriptionId}"
41+
else
42+
#puts response.transactionResponse.errors.errors[0].errorCode
43+
#puts response.transactionResponse.errors.errors[0].errorText
44+
puts response.messages.messages[0].code
45+
puts response.messages.messages[0].text
46+
raise "Failed to create a subscription"
47+
end
48+
end
49+
return response
50+
end
51+
52+
if __FILE__ == $0
53+
create_Subscription_from_customer_profile()
54+
end
55+

spec/sample_code_spec.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,19 @@ def validate_response(response= nil)
105105
response = create_Subscription()
106106
validate_response(response)
107107
subscriptionId = response.subscriptionId
108-
108+
109+
#Create subscription from customer profile
110+
profile_response = create_customer_profile()
111+
payment_response = create_customer_payment_profile(profile_response.customerProfileId)
112+
shipping_response = create_customer_shipping_address(profile_response.customerProfileId)
113+
114+
response = create_subscription_from_customer_profile(profile_response.customerProfileId, payment_response.customerPaymentProfileId, shipping_response.customerAddressId)
115+
validate_response(response)
116+
117+
delete_customer_profile(profile_response.customerProfileId)
118+
cancel_subscription(response.subscriptionId)
119+
#End of create subscription from customer profile
120+
109121
response = get_subscription(subscriptionId)
110122
validate_response(response)
111123

0 commit comments

Comments
 (0)