Better late than never.
The value of receiptJson is a string. After parsing, it looks like this (at least in my case):
"receiptJson": {
"timestamp": "1970-01-01T00:00:00Z",
"ack": "Success",
"correlation_id": "xxxxxxxxxxxxx",
"version": "XXX",
"build": "XXXXXXXX",
"token": "EC-XXXXXXXXXXXXXXXXX",
"transaction_id": "XXXXXXXXXXXXXXXXX",
"parent_transaction_id": null,
"receipt_id": null,
"transaction_type": "cart",
"payment_type": "instant",
"payment_date": "1970-01-01T00:00:00Z",
"gross_amount": "1.00",
"gross_amount_currency_id": "EUR",
"fee_amount": "1.00",
"fee_amount_currency_id": "EUR",
"tax_amount": "0.00",
"tax_amount_currency_id": "EUR",
"exchange_rate": null,
"payment_status": "Completed",
"pending_reason": "none",
"reason_code": "none",
"protection_eligibility": "Eligible",
"protection_eligibility_type": "ItemNotReceivedEligible,UnauthorizedPaymentEligible",
"pay_pal_account_id": "mail@example.com",
"secure_merchant_account_id": "XXXXXXXXXXXXX",
"success_page_redirect_requested": "false",
"coupled_payment_info": null,
"Token": "EC-XXXXXXXXXXXXXXXXX",
"PaymentInfo": {
"TransactionID": "XXXXXXXXXXXXXXXXX",
"ParentTransactionID": null,
"ReceiptID": null,
"TransactionType": "cart",
"PaymentType": "instant",
"PaymentDate": "1970-01-01T00:00:00Z",
"GrossAmount": "1.00",
"FeeAmount": "1.00",
"TaxAmount": "0.00",
"ExchangeRate": null,
"PaymentStatus": "Completed",
"PendingReason": "none",
"ReasonCode": "none",
"ProtectionEligibility": "Eligible",
"ProtectionEligibilityType": "ItemNotReceivedEligible,UnauthorizedPaymentEligible",
"SellerDetails": {
"PayPalAccountID": "mail@example.com",
"SecureMerchantAccountID": "XXXXXXXXXXXXX"
}
},
"SuccessPageRedirectRequested": "false",
"CoupledPaymentInfo": null
}