Beispiel #1
0
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;
};
Beispiel #2
0
/**
 * 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");
}