Ejemplo n.º 1
0
/**
 * Set access token and include all required classes in the application.
 */
require_once 'header.php';
/**
 * This class contains utility functions to create request/response objects for
 * webservice api.
 */
require_once 'utils/wob_utils.php';
$wobPayload = new WobPayload($ORIGINS);
$objId = strval(rand(1, 100));
switch ($_REQUEST['type']) {
    case 'loyalty':
        $loyaltyObject = Loyalty::generateLoyaltyObject(ISSUER_ID, LOYALTY_CLASS_ID, LOYALTY_OBJECT_ID . $objId);
        $wobPayload->addWalletObjects($loyaltyObject, LOYALTY_OBJECT_ID);
        break;
    case 'offer':
        $offerObject = Offer::generateOfferObject(ISSUER_ID, OFFER_CLASS_ID, OFFER_OBJECT_ID . $objId);
        $wobPayload->addWalletObjects($offerObject, OFFER_OBJECT_ID);
        break;
    case 'giftcard':
        $giftCardObject = GiftCard::generateGiftCardObject(ISSUER_ID, GIFTCARD_CLASS_ID, GIFTCARD_OBJECT_ID . $objId);
        $wobPayload->addWalletObjects($giftCardObject, GIFTCARD_OBJECT_ID);
        break;
}
// Save to wallet request body.
$requestBody = $wobPayload->getSaveToWalletRequest();
// Create the response JWT.
$utils = new WobUtils();
echo $jwt = $utils->makeSignedJwt($requestBody, $cred);
$inputJson = file_get_contents('php://input');
$input = json_decode($inputJson, TRUE);
$requestObject = $utils->getWebserviceRequestObject($input);
//Get linking id the merchant loyalty program account identification.
$linkId = is_object($requestObject) ? $requestObject->getParams()->getLinkingId() : NULL;
// Get api version from request object.
$apiVersion = is_object($requestObject) ? $requestObject->getApiVersion() : '1.0';
// Create loyalty object based on linking id.
$loyaltyObjectId = $linkId != NULL ? $linkId : LOYALTY_OBJECT_ID;
$loyaltyObject = Loyalty::generateLoyaltyObject(ISSUER_ID, LOYALTY_CLASS_ID, $loyaltyObjectId);
$firstName = $requestObject->getParams()->getWalletUser()->getFirstName();
$returnCode = strtoupper($firstName);
if (is_object($loyaltyObject)) {
    // Handle signup and linking.
    $webResponse = new WebserviceResponse($returnCode);
    if (strpos($webResponse->getStatus(), ResponseCode::SUCCESS) !== false) {
        // Generate Web Service Response Body.
        $responseBody = $utils->generateWebserviceResponse($loyaltyObject, $webResponse, $apiVersion);
    } else {
        $errorAction = $linkId != NULL ? ResponseCode::ERROR_INVALID_LINKING_ID : ResponseCode::ERROR_ACCOUNT_ALREADY_LINKED;
        // For rejected sign-up/linking.
        $webResponse = new WebserviceResponse($errorAction);
        $invalidWalletUserFields = array('zipcode', 'phone');
        $webResponse->setInvalidWalletUserFields($invalidWalletUserFields);
        // Generate Web Service Response Body.
        $responseBody = $utils->generateWebserviceResponse('', $webResponse, $apiVersion);
    }
}
// Create the response JWT.
echo $jwt = $utils->makeSignedJwt($responseBody, $cred);