JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Gallery
Workshop: REST API Inbound and Outbound
Workshop: REST API Inbound and Outbound
A. Pengenalan REST API Salesforce
B. Inbound (Apex REST Webservice)
C. Outbound (Apex REST Callouts)
References
Announcement Poster
Challanges
Question & Idea
More
Share
Explore
C. Outbound (Apex REST Callouts)
by
@
Muhammad Bustamil Adam
C.1. Step – Step for Create Callout Method Integration Based on
Triggers
1. Buat Class Apex untuk Mendapatkan Access Token
Buka
Visual Studio Code Atau Developer Console
di Salesforce org
Buat Apex Class baru yang akan mengirim HTTP Request ke token endpoint Salesforce dan mendapatkan
Access Token
.
Gunakan kode berikut:
public
class
REST_CallOut_SalesforceOAuth
{
// Metode untuk mendapatkan Access Token dari org tujuan
public
static
String
getAccessToken
(
)
{
// URL Endpoint untuk OAuth 2.0 token
String
tokenEndpoint
=
'https
:
/
/
login
.
salesforce
.
com
/
services
/
oauth2
/
token'
;
// Setup HTTP Request
HttpRequest
req
=
new
HttpRequest
(
)
;
req
.
setEndpoint
(
tokenEndpoint
)
;
req
.
setMethod
(
'POST'
)
;
req
.
setHeader
(
'
Content
-
Type
', '
application
/
x
-
www
-
form
-
urlencoded'
)
;
// OAuth 2.0 credentials dari Connected App di org tujuan
String
clientId
=
'
YOUR_CONSUMER_KEY
'
;
// Ganti dengan Client ID (Consumer Key)
String
clientSecret
=
'
YOUR_CONSUMER_SECRET
'
;
// Ganti dengan Client Secret (Consumer Secret)
String
username
=
'
YOUR_ORG_TUJUAN_USERNAME
'
;
// Ganti dengan username org tujuan
String
password
=
'
YOUR_ORG_TUJUAN_PASSWORD_AND_SECURITY_TOKEN
'
;
// Gabungan password + security token dari org tujuan
// Set body untuk request, sesuai dengan format OAuth 2.0
String
body
=
'grant_type
=
password'
+
'
&
client_id
=
'
+
EncodingUtil
.
urlEncode
(
clientId
,
'UTF-8'
)
+
'
&
client_secret
=
'
+
EncodingUtil
.
urlEncode
(
clientSecret
,
'UTF-8'
)
+
'
&
username
=
'
+
EncodingUtil
.
urlEncode
(
username
,
'UTF-8'
)
+
'
&
password
=
'
+
EncodingUtil
.
urlEncode
(
password
,
'UTF-8'
)
;
req
.
setBody
(
body
)
;
// Eksekusi HTTP Request
Http
http
=
new
Http
(
)
;
HttpResponse
res
=
http
.
send
(
req
)
;
// Jika responsenya sukses (status 200), ambil token dari response body
if
(
res
.
getStatusCode
(
)
==
200
)
{
// Parsing JSON response untuk mendapatkan access token
Map
<
String
,
Object
>
responseBody
=
(
Map
<
String
,
Object
>
)
JSON
.
deserializeUntyped
(
res
.
getBody
(
)
)
;
String
accessToken
=
(
String
)
responseBody
.
get
(
'access_token'
)
;
// Log token untuk debugging (jangan gunakan ini di produksi)
System
.
debug
(
'
Access
Token
:
'
+
accessToken
)
;
// Kembalikan access token
return
accessToken
;
}
else
{
// Log jika terjadi kesalahan dan return null
System
.
debug
(
'
Error
Response
:
'
+
res
.
getBody
(
)
)
;
return
null
;
}
}
}
Credentials
End Point :
https://saastentechnologies65-dev-ed.develop.my.salesforce.com
CONSUMER_KEY
: 3MVG9VMBZCsTL9hna9QaiPuFBAPG4StUl9CkTR0xdSvQBoHmThkUn_UhnTB0k3qZQxcupYINLjheLWe5SU1b0
CONSUMER_SECRET
: BB1E7ECC5ACDEA2D7DFD680ACDCECA2360C8AD8E59E2880AC2CBB58041AD7176
USER_NAME
: devorg1@saasten.com
PASSWORD
: demo1234
SECURITY TOKEN :
7cZapUnBJBo0di1buBHlNvxp
2. Buat Class Apex untuk Melakukan Callout ke Org Tujuan
Setelah mendapatkan token, kita akan menggunakan token tersebut untuk memanggil Salesforce REST API di org tujuan dan mengirimkan data.
Buat
Apex Class
baru untuk melakukan HTTP callout ke org tujuan menggunakan token yang telah didapatkan.
Berikut Contoh Codingannya:
public
class
REST_Callout_Contact
{
@future
(
callout
=
true
)
public
static
void
InsertContactDataToOrg2
(
Id
contactId
)
{
// Ambil data Contact yang akan dikirim
Contact
con
=
[
SELECT
Id
,
FirstName
,
LastName
,
Email
FROM
Contact
WHERE
Id
=
:
contactId
]
;
// Dapatkan Access Token menggunakan metode yang dibuat sebelumnya
String
accessToken
=
REST_CallOut_SalesforceOAuth
.
getAccessToken
(
)
;
if
(
accessToken
==
null
)
{
System
.
debug
(
'
Failed
to
get
access token'
)
;
return
;
}
String
EndPoint
=
'https
:
/
/
saastentechnologies65
-
dev
-
ed
.
develop
.
my
.
salesforce
.
com'
;
// URL Endpoint Salesforce REST API di org tujuan
String
URLendpoint
=
EndPoint
+
'
/
services
/
data
/
v54
.
0
/
sobjects
/
Contact
/
'
;
// Siapkan HTTP Request
HttpRequest
req
=
new
HttpRequest
(
)
;
req
.
setEndpoint
(
URLendpoint
)
;
req
.
setMethod
(
'POST'
)
;
req
.
setHeader
(
'
Authorization
', '
Bearer
'
+
accessToken
)
;
req
.
setHeader
(
'
Content
-
Type
', '
application
/
json'
)
;
// Format data Contact ke dalam JSON
String
jsonBody
=
'
{
"FirstName"
:
"' + con.FirstName + '"
,
"LastName"
:
"' + con.LastName + '"
,
"Email"
:
"' + con.Email + '"
}
'
;
req
.
setBody
(
jsonBody
)
;
// Eksekusi HTTP Request
Http
http
=
new
Http
(
)
;
HttpResponse
res
=
http
.
send
(
req
)
;
// Log hasil response
System
.
debug
(
'
Response
Status
:
'
+
res
.
getStatus
(
)
)
;
System
.
debug
(
'
Response
Body
:
'
+
res
.
getBody
(
)
)
;
}
}
Buat trigger yang akan memanggil class Apex di atas setiap kali ada perubahan (insert atau update) pada object
Contact
.
Berikut Contoh Codingannya
trigger
ContactTrigger
on
Contact
(
after insert
)
{
for
(
Contact
con
:
Trigger
.
new
)
{
// Panggil metode untuk mengirim data ke org tujuan
REST_Callout_Contact
.
sendContactDataToOrg2
(
con
.
Id
)
;
}
}
3. Testing dan Verifikasi
Buat Contact Baru di Org Sumber:
Buka Salesforce org sumber dan buat Contact baru.
Salesforce org sumber akan melakukan HTTP callout ke org tujuan untuk mengirim data kontak.
Periksa Org Tujuan:
Masuk ke Salesforce org tujuan.
Buka Object Manager untuk
Contact
dan periksa apakah data kontak yang baru telah ditambahkan.
Lihat Debug Log:
Buka
Developer Console
di Salesforce org sumber dan lihat
Debug Log
untuk memastikan bahwa request dan response berjalan dengan benar.
C.2. Step – Step for Create Callout Method Integration Based on
Button
Using Invocable Metode
1. Membuat Invocable Method untuk Pengiriman Data Contact
Contoh Kode:
public
with
sharing
class
ContactIntegrationService
{
@InvocableMethod
(
label
=
'
Send
Contact
Data
'
)
public
static
List
<
String
>
sendContactData
(
List
<
Id
>
contactIds
)
{
List
<
String
>
resultMessages
=
new
List
<
String
>
(
)
;
String
accessToken
=
REST_CallOut_SalesforceOAuth
.
getAccessToken
(
)
//Mendapatkan Access Token
for
(
Id
contactId
:
contactIds
)
{
try
{
Contact
contact
=
[
SELECT
Id
,
FirstName
,
LastName
,
Email
FROM
Contact
WHERE
Id
=
:
contactId
LIMIT
1
]
;
HttpRequest
req
=
new
HttpRequest
(
)
;
req
.
setEndpoint
(
'https
:
/
/
target
-
org
.
my
.
salesforce
.
com
/
services
/
data
/
v52
.
0
/
sobjects
/
Contact
/
'
)
;
req
.
setMethod
(
'POST'
)
;
req
.
setHeader
(
'
Authorization
', '
Bearer
'
+
accessToken
)
;
req
.
setHeader
(
'
Content
-
Type
', '
application
/
json'
)
;
Map
<
String
,
Object
>
contactData
=
new
Map
<
String
,
Object
>
(
)
;
contactData
.
put
(
'
FirstName
'
,
contact
.
FirstName
)
;
contactData
.
put
(
'
LastName
'
,
contact
.
LastName
)
;
contactData
.
put
(
'Email'
,
contact
.
Email
)
;
req
.
setBody
(
JSON
.
serialize
(
contactData
)
)
;
Http
http
=
new
Http
(
)
;
HttpResponse
res
=
http
.
send
(
req
)
;
if
(
res
.
getStatusCode
(
)
==
201
)
{
resultMessages
.
add
(
'
Contact
'
+
contact
.
FirstName
+
' '
+
contact
.
LastName
+
' berhasil dikirim
!
'
)
;
}
else
{
resultMessages
.
add
(
'
Gagal
mengirim
Contact
'
+
contact
.
FirstName
+
': '
+
res
.
getBody
(
)
)
;
}
}
catch
(
Exception
e
)
{
resultMessages
.
add
(
'
Error
mengirim
Contact
Id
:
'
+
contactId
+
'
.
Pesan
error
:
'
+
e
.
getMessage
(
)
)
;
}
}
return
resultMessages
;
}
}
Poin Penting:
Method ini mengirim data
Contact
ke Salesforce Org target.
Pesan status akan diberikan untuk setiap
Contact
yang berhasil atau gagal dikirim.
2. Membuat Button untuk Memanggil Invocable Method
Langkah-langkah Membuat Button:
Buat Flow di Salesforce:
Buat
Flow
yang memanggil Apex Class dengan
Invocable Method
sendContactData
.
Buat Custom Button:
Gunakan tombol custom untuk memicu
Flow
atau langsung memanggil metode Apex dari UI.
C.1. Step – Step for Create Callout Method Integration Based on Triggers
1. Buat Class Apex untuk Mendapatkan Access Token
Credentials
2. Buat Class Apex untuk Melakukan Callout ke Org Tujuan
3. Testing dan Verifikasi
C.2. Step – Step for Create Callout Method Integration Based on Button Using Invocable Metode
1. Membuat Invocable Method untuk Pengiriman Data Contact
2. Membuat Button untuk Memanggil Invocable Method
Langkah-langkah Membuat Button:
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
Ctrl
P
) instead.