Skip to content

Instantly share code, notes, and snippets.

@vinodronold
Last active November 16, 2021 05:31
Show Gist options
  • Save vinodronold/5f5f97c39df4150af1ffb9b08090f89f to your computer and use it in GitHub Desktop.
Save vinodronold/5f5f97c39df4150af1ffb9b08090f89f to your computer and use it in GitHub Desktop.
Sample REST API Implementation using PeopleCode
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