bool PaymentService::handle_event(bps_event_t *p_event) { if (bps_event_get_domain(p_event) != paymentservice_get_domain()) { return false; }; Dictionary dict; int res = paymentservice_event_get_response_code(p_event); if (res == SUCCESS_RESPONSE) { dict["result"] = "ok"; res = bps_event_get_code(p_event); if (res == PURCHASE_RESPONSE) { dict["type"] = "purchase"; const char *pid = paymentservice_event_get_digital_good_id(p_event, 0); dict["product_id"] = String(pid ? pid : ""); }; } else { const char *desc = paymentservice_event_get_error_text(p_event); if (strcmp(desc, "alreadyPurchased") == 0) { dict["result"] = "ok"; } else { dict["result"] = "error"; dict["error_description"] = paymentservice_event_get_error_text(p_event); dict["error_code"] = paymentservice_event_get_error_id(p_event); printf("error code is %i\n", paymentservice_event_get_error_id(p_event)); printf("error description is %s\n", paymentservice_event_get_error_text(p_event)); }; dict["product_id"] = ""; }; res = bps_event_get_code(p_event); if (res == PURCHASE_RESPONSE) { dict["type"] = "purchase"; }; printf("********** adding event with result %ls\n", String(dict["result"]).c_str()); pending_events.push_back(dict); return true; };
/** * Handle the failure case for either event. Print the error information. */ void failureCommon(bps_event_t *event) { if (event == NULL) { fprintf(stderr, "Invalid event.\n"); return; } unsigned request_id = paymentservice_event_get_request_id(event); int error_id = paymentservice_event_get_error_id(event); const char* error_text = paymentservice_event_get_error_text(event); fprintf(stderr, "Payment System error. Request ID: %d Error ID: %d Text: %s\n", request_id, error_id, error_text ? error_text : "N/A"); }