Last active
November 16, 2021 05:31
-
-
Save vinodronold/5f5f97c39df4150af1ffb9b08090f89f to your computer and use it in GitHub Desktop.
Sample REST API Implementation using PeopleCode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Z_REST_UTIL:Request; | |
class InstrumentAssignments | |
method InstrumentAssignments(&nVendorId As number, &nPaymentPartyId As number, &nPaymentInstrumentId As number); | |
property number VendorId readonly; | |
property number PaymentPartyId readonly; | |
property number PaymentInstrumentId readonly; | |
property string PaymentFlow readonly; | |
property string PaymentInstrumentType readonly; | |
property string PrimaryIndicator readonly; | |
property string Intent readonly; | |
property number CloudPaymentInstrumentAssignmentId readonly; | |
method getAssignment() Returns JsonObject; | |
method createAssignment() Returns JsonObject; | |
method create(); | |
private | |
instance Z_REST_UTIL:Request &AssignmentRequest; | |
end-class; | |
method InstrumentAssignments | |
/+ &nVendorId as Number, +/ | |
/+ &nPaymentPartyId as Number, +/ | |
/+ &nPaymentInstrumentId as Number +/ | |
&VendorId = &nVendorId; | |
&PaymentPartyId = &nPaymentPartyId; | |
&PaymentInstrumentId = &nPaymentInstrumentId; | |
&PaymentFlow = "DISBURSEMENTS"; | |
&PaymentInstrumentType = "BANKACCOUNT"; | |
&PrimaryIndicator = "Y"; | |
&Intent = "Supplier"; | |
&AssignmentRequest = create Z_REST_UTIL:Request("https://<servername>/fscmRestApi/resources/11.13.18.05/instrumentAssignments"); | |
end-method; | |
method getAssignment | |
/+ Returns JsonObject +/ | |
&AssignmentRequest.queryParams.AddElement("finder", "PaymentInstrumentAttributes;Intent=Supplier,PaymentInstrumentId=" | NumberToString("%*.0t", &PaymentInstrumentId)); | |
&AssignmentRequest.queryParams.AddElement("q", "VendorId=" | NumberToString("%*.0t", &VendorId)); | |
Return &AssignmentRequest.get(); | |
end-method; | |
method createAssignment | |
/+ Returns JsonObject +/ | |
Local JsonObject &jRqst = CreateJsonObject(); | |
&jRqst.AddProperty("PaymentPartyId", NumberToString("%*.0t", &PaymentPartyId)); | |
&jRqst.AddProperty("PaymentInstrumentId", NumberToString("%*.0t", &PaymentInstrumentId)); | |
&jRqst.AddProperty("PaymentFlow", &PaymentFlow); | |
&jRqst.AddProperty("PaymentInstrumentType", &PaymentInstrumentType); | |
&jRqst.AddProperty("PrimaryIndicator", &PrimaryIndicator); | |
&jRqst.AddProperty("Intent", &Intent); | |
Return &AssignmentRequest.post(&jRqst); /*** POST ***/ | |
end-method; | |
method create | |
Local JsonObject &jResp, &jItem; | |
Local JsonArray &jArrItems; | |
/*** GET Instrument Assignment ***/ | |
&jResp = %This.getAssignment(); | |
&jArrItems = &jResp.GetJsonArray("items"); | |
If &jArrItems.Length() > 0 Then | |
/*** FOUND IN CLOUD ***/ | |
&jItem = &jArrItems.GetJsonObject(1); | |
&CloudPaymentInstrumentAssignmentId = &jItem.GetNumber("PaymentInstrumentAssignmentId"); | |
Else | |
/*** NOT FOUND - create Instrument Assignment ***/ | |
try | |
&jResp = %This.createAssignment(); | |
catch Exception &exCreateAssignment | |
throw CreateException(0, 0, "Instrument Assignments Create: " | &exCreateAssignment.ToString( False)); /*** STOP ***/ | |
end-try; | |
&CloudPaymentInstrumentAssignmentId = &jResp.GetNumber("PaymentInstrumentAssignmentId"); | |
End-If; | |
end-method; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment