Failed to set loyalty reward to redeemed state but it still worked anyhow?

hi there – I’ve encountered this error in the live environment. Can someone explain what the error is about?

[request:Square\Http\ApiResponse:private] => Square\Http\HttpRequest Object
    (
        [httpMethod:Square\Http\HttpRequest:private] => Post
        [headers:Square\Http\HttpRequest:private] => Array
            (
                [user-agent] => Square-PHP-SDK/15.0.0.20211020
                [Accept] => application/json
                [content-type] => application/json
                [Square-Version] => 2021-10-20
                [Authorization] => Bearer ...........
            )

        [queryUrl:Square\Http\HttpRequest:private] => https://connect.squareup.com/v2/loyalty/rewards/7fba249a-19cc-397f-85a7-79761f2affa6/redeem
        [parameters:Square\Http\HttpRequest:private] => 
    )

[statusCode:Square\Http\ApiResponse:private] => 400
...
...
...
[result:Square\Http\ApiResponse:private] => 
[body:Square\Http\ApiResponse:private] => {"errors": [{"code": "BAD_REQUEST","detail": "Cannot explicitly redeem rewards attached to an order","category": "INVALID_REQUEST_ERROR"}]}

[errors:Square\Http\ApiResponse:private] => Array
    (
        [0] => Square\Models\Error Object
            (
                [category:Square\Models\Error:private] => INVALID_REQUEST_ERROR
                [code:Square\Models\Error:private] => BAD_REQUEST
                [detail:Square\Models\Error:private] => Cannot explicitly redeem rewards attached to an order
                [field:Square\Models\Error:private] => 
            )

    )

but in querying the loyalty events for this account, there’s a REDEEM_REWARD event for that reward id – did it all work out?

[events:Square\Models\SearchLoyaltyEventsResponse:private] => Array
    (
        [0] => Square\Models\LoyaltyEvent Object
            (
                [id:Square\Models\LoyaltyEvent:private] => d8b68297-d744-398d-b203-fb6e07e122d9
                [type:Square\Models\LoyaltyEvent:private] => REDEEM_REWARD
                [createdAt:Square\Models\LoyaltyEvent:private] => 2022-01-02T03:38:03Z
                [accumulatePoints:Square\Models\LoyaltyEvent:private] => 
                [createReward:Square\Models\LoyaltyEvent:private] => 
                [redeemReward:Square\Models\LoyaltyEvent:private] => Square\Models\LoyaltyEventRedeemReward Object
                    (
                        [loyaltyProgramId:Square\Models\LoyaltyEventRedeemReward:private] => 8796ae20-9c1d-4ef6-bff0-08e1a967d1c9
                        [rewardId:Square\Models\LoyaltyEventRedeemReward:private] => 7fba249a-19cc-397f-85a7-79761f2affa6
                        [orderId:Square\Models\LoyaltyEventRedeemReward:private] => gUVUc1ZeeNHsl7wMbkKWa4gitAgZY
                    )

oh – I’ve figured it out - the completion of the order automatically set the reward from issued to redeemed, so I don’t need to explicitly redeem the reward. thanks!

Glad to hear you were able to figure it out. :slightly_smiling_face: