Submit Payment API

As its name suggest, this API submits payment to your processor. You can either submit an authorization or a charge. It also creates the corresponding payment record in Salesforce. You submit payment in the following form:

curl -v https://<instance>.salesforce.com/services/apexrest/fw1/v2/payments \
     -H 'Authorization: Bearer <access token>' \
     -H 'Content-Type: application/json' \
     -X POST \
     -d '{<arguments>}'

To get an access token, read here: Authentication

EXAMPLE REQUEST:

curl -v https://na14.salesforce.com/services/apexrest/fw1/v2/payments \
     -H 'Authorization: Bearer 00Dx0000000exxV!AXXXXXfcKqHB0czbxxxxxHkyo9gt41BxxxhWPxxZzaXxXxbAJxx9Ov4Hno..mu1Xi5XXXX8MWHVD81JVr6ShxxxxxorGv6Uy' \ 
     -H 'Content-Type: application/json' \ 
     -X POST \ 
     -d '{"amount":9.99, 
          "credit_card_number":"4111111111111111", 
          "expiry_month":"08", 
          "expiry_year":"2018", 
          "first_name":"Jeff", 
          "last_name":"Johnson", 
          "billing_street":"12345 Jefferson St.", 
          "billing_city":"Torrance", 
          "billing_state":"CA", 
          "billing_zip":"90501", 
          "billing_country":"US"}'

EXAMPLE RESPONSE:

{"type":"Charge",
  "status":"Captured",
  "salesforce_payment_id":"a0Ad000000MXxZxXXL",
  "processor_transaction_id":"2219157406",
  "processor":"Authorize.Net",
  "payment_date":"2014-09-09T04:20:23.563Z",
  "message":"This transaction has been approved.",
  "is_successful":true,
  "cvv2_match":null,
  "avs_code":null,
  "amount_currency":"USD",
  "amount":9.99}

is_successful (true/false) indicates whether or not the payment was successful. If payment was not successful, the corresponding error message will be listed in message. If payment was successful, salesforce_payment_id will contain the ID of the payment record created in Salesforce.

COMPLETE LIST OF ARGUMENTS

  • amount – required, a positive decimal number, i.e. 9.99
  • credit_card_number – required
  • expiry_month – required, 2-digit month, i.e. 01 for January
  • expiry_year – required, 4-digit year
  • first_name – required, first name as it appears on the card
  • last_name – required, last name as it appears on the card
  • cvv2 – required or optional depending on your setting, this is the security code
  • billing_street – required, billing street associated with the card
  • billing_city – required, billing city associated with the card
  • billing_state – required, billing state associated with the card. This is not required for non-US addresses
  • billing_zip – required, billing zip associated with the card
  • billing_country – required, billing country associated with the card
  • trans_type –  optional, values could be Charge or Authorization. If not sent, the default value from settings will be used
  • processor –  optional, name of your processor as defined in your settings. If not sent, the default will be used.
  • payment_name – optional, any name to identify your payment. If not sent, a name will be created for you.
  • reference – optional, any reference related to your payment, i.e. order number, invoice number, etc.
  • amount_currency – optional, 3-letter ISO code for currency, i.e USD, EUR, etc. If not sent, the default value from settings will be used
  • shipping_street – optional, customer shipping street
  • shipping_city – optional, customer shipping city
  • shipping_state – optional, customer shipping state
  • shipping_zip – optional, customer shipping zip
  • shipping_country – optional, customer shipping country
  • email – optional, customer email address. This is required if your processor is CyberSource
  • routing_number – required if paying by eCheck
  • account_number – required if paying by eCheck, this is the bank account number
  • name_on_account – optional, name on bank account
  • related_object_field – optional, if payment is to be related to a record, pass the lookup field name (API name) as defined in fw1__Payment__c object
  • related_record_id – optional, the ID of the record where the payment will be related
  • related_object_name – optional, if you want to update the related object with the paid amount, pass the object name (API name) here
  • related_object_paid_amount_field – optional, name (API name) of the field in the related object that holds the paid amount
  • account_id – you can pass an account ID to relate the payment to the account
  • contact_id – you can pass a contact ID to relate the payment to the contact
  • opportunity_id – you can pass an opportunity ID to relate the payment to the opportunity
  • invoice_id – you can pass an invoice ID to relate the payment to the invoice
  • processor_category – If you have categorized your processors, you can pass the category here and the system will select the appropriate processor based on the category. More info here: Using Multiple Processors
  • profile_id – you can pass a payment profile ID, and the details such as credit card number, etc. will be taken from the profile. Although you don’t need a credit card since it will be taken from the profile, you cannot pass a null value to it. So along with the “profile_id”, please pass the parameter “credit_card_number”, you can pass a space to it (but not null)