/** * On successful completion of a get existing purchases request, * print the existing purchases. */ void onGetExistingPurchasesSuccess(bps_event_t *event) { if (event == NULL) { fprintf(stderr, "Invalid event.\n"); return; } unsigned request_id = paymentservice_event_get_request_id(event); int purchases = paymentservice_event_get_number_purchases(event); fprintf(stderr, "Get existing purchases success. Request ID: %d\n", request_id); fprintf(stderr, "Number of existing purchases: %d\n", purchases); fprintf(stderr, "Existing purchases:\n"); int i = 0; for (i = 0; i<purchases; i++) { const char* date = paymentservice_event_get_date(event, i); const char* digital_good = paymentservice_event_get_digital_good_id(event, i); const char* digital_sku = paymentservice_event_get_digital_good_sku(event, i); const char* license_key = paymentservice_event_get_license_key(event, i); const char* metadata = paymentservice_event_get_metadata(event, i); const char* purchase_id = paymentservice_event_get_purchase_id(event, i); fprintf(stderr, " Date: %s PurchaseID: %s DigitalGoodID: %s SKU: %s License: %s Metadata: %s\n", date ? date : "N/A", purchase_id ? purchase_id : "N/A", digital_good ? digital_good : "N/A", digital_sku ? digital_sku : "N/A", license_key ? license_key : "N/A", metadata ? metadata : "N/A"); } }
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; };
/** * Upon successful completion of a purchase, print a string containing * information about the digital good that was purchased. */ void onPurchaseSuccess(bps_event_t *event) { if (event == NULL) { fprintf(stderr, "Invalid event.\n"); return; } unsigned request_id = paymentservice_event_get_request_id(event); const char* date = paymentservice_event_get_date(event, 0); const char* digital_good = paymentservice_event_get_digital_good_id(event, 0); const char* digital_sku = paymentservice_event_get_digital_good_sku(event, 0); const char* license_key = paymentservice_event_get_license_key(event, 0); const char* metadata = paymentservice_event_get_metadata(event, 0); const char* purchase_id = paymentservice_event_get_purchase_id(event, 0); fprintf(stderr, "Purchase success. Request Id: %d\n Date: %s\n DigitalGoodID: %s\n SKU: %s\n License: %s\n Metadata: %s\n PurchaseId: %s\n\n", request_id, date ? date : "N/A", digital_good ? digital_good : "N/A", digital_sku ? digital_sku : "N/A", license_key ? license_key : "N/A", metadata ? metadata : "N/A", purchase_id ? purchase_id : "N/A"); }