Skip to content

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
Commits on Nov 29, 2012
@mattt mattt Adding note about mission-critical sister projects b4488a0
Commits on Dec 11, 2012
@lxcid Exposes transaction receipt verification method. a776b13
@lxcid Minor formatting to match convention. 529adb6
@lxcid Merge branch 'master' of into recei…
@lxcid Could not use CBError* because it is used by Core Bluetooth. Rename t…
…o CargoBayError*. Also rename CBStatus* to CargoBayStatus*.
@lxcid Continue to improve error reporting. 9e81aec
@lxcid Check for transaction ID uniqueness is supported but optional currently.
User can replace with their own implementation or uses the default implementation based on Apple's VerificationController.
@lxcid Do not check against bundle version because it will likely fails if t…
…he app is updated.
Commits on Dec 14, 2012
@lxcid Should uses com.mattt instead of me.mattt. cc178ad
Commits on Dec 17, 2012
@lxcid if you compile your source with iOS 6 SDK, __IPHONE_6_0 will always b…
…e defined. This is not the same as (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_5_1).
Commits on Dec 18, 2012
@lxcid Fix CBValidateTransactionMatchesPurchaseInfo using wrong error code. 0dff19a
Commits on Dec 19, 2012
@lxcid Fixed a critical bug on CBDataFromBase64EncodedString where the inner…
… loop when reconstructing the value start from index 0 instead of the current index. (I'm surprised that this have worked well so far…)
@lxcid Unit tests for receipt verification (Pretty much the only functionali…
…ties that can be unit test it seems).

Had to exposes some of the method, but I tried to keep them in a separate header as private method for now.
I also tries to bind some of the C functions so that I could run unit test on them too.
I find this is the least intrusive.
Commits on Dec 26, 2012
@lxcid Refactors `productionReceiptVerificationClient` and `sandboxReceiptVe…

Uses `dispatch_once` in an uncommon way. Rather than static local variables of their methods, it is an ivar of the `CargoBay` instance. It should lazily instantiate the `AFHTTPClient` but allows the client to be owned by the instance of `CargoBay`.
Commits on Jan 01, 2013
@mattt mattt Reformatting CBDataFromBase64EncodedString b09729c
@mattt mattt Using NSLocalizedStringFromTable in CBValidatePurchaseInfoMatchesReceipt 8d98198
@mattt mattt Reformatting initialization of NSError userInfo 601b397
@mattt mattt Setting POSIX locale to date formatter
Using static instance to cache date formatter
@mattt mattt Reformatted code, removing 'the' prefixes for variable names 22e7314
@mattt mattt Using _CARGOBAY_VALIDATE_TRANSACTION_BUNDLE_VERSION_ for optional che…
…ck for bundle version
@mattt mattt Reformatting CBCheckReceiptSecurity 3104998
@mattt mattt Formatting f4a9978
@mattt mattt Reformatting CBPurchaseInfoFromTransactionReceipt 1936a58
@mattt mattt Change CBCheckReceiptSecurity to take NSDate * parameter rather than …
@mattt mattt Reformat isTransactionAndItsReceiptValid:error: ef21178
@mattt mattt Refactoring receipt and transaction verification b8c41b9
@mattt mattt Reformatting verifyTransactionReceipt:... e65a9eb
@mattt mattt Remove -productsWithRequest:... and productsHTTPClient property 137e872
@mattt mattt Removing binding methods de64592
@mattt mattt Adding Default-568 image 7345d3e
@mattt mattt Removing static storage class on functions
#ifndef -> #ifdef
@mattt mattt Removing CargoBay+PrivateMethods, opting instead to use extern functi…
…on references to unobtrusively test private functionality of CargoBay
@mattt mattt Renaming setVerifyUniquenessofTransactionIDWithBlock: -> setTransacti…
@mattt mattt Bumping version to 0.2.0 0ff8401
@mattt mattt Fixing deployment target for iOS 1d6a6f1
Commits on Jan 02, 2013
@mattt mattt Updating README ba3b5fc
@mattt mattt Fixing receipt verification example /thanks @stevestreza 3d513ea
@smilingpoplar smilingpoplar Update CargoBay/CargoBay.m
line 933 should need a mutableCopy, or line 939:

[knownIAPTransactionsDictionary setObject:[NSNumber numberWithBool:YES] forKey:transactionID];

throw exception in my test
@mattt mattt Merge pull request #8 from smilingpoplar/patch-1
Update CargoBay/CargoBay.m
@mattt mattt Bumping to 0.2.1 22ef4a8
Commits on Jan 04, 2013
@plarsson plarsson etc/gmt wasn't handled at one place 6791ac7
Commits on Jan 05, 2013
@mattt mattt Merge pull request #9 from plarsson/dateformatfix
etc/gmt wasn't handled at one place
Commits on Jan 26, 2013
@mattt mattt [Issue #12] Adding missing static specifiers for private functions ac7cc0f
@mattt mattt Merge branch 'master' of 263f1c9
@marclefrancois marclefrancois Fixing Xcode warning caused by block variable shadowing local variable
Signed-off-by: Mattt Thompson <>
Commits on Jan 28, 2013
@toblux toblux Add support for paymentQueue:updatedDownloads: 1dae2d5
Commits on Jan 29, 2013
@mattt mattt Merge pull request #14 from toblux/master
Add support for paymentQueue:updatedDownloads:
@mattt mattt Minor reformatting / reorganizing 5c027b9
@mattt mattt Updating project settings d1c4ff4
@mattt mattt Fixing warning about retain cycle by strong capture of self c820a3e
Commits on Feb 01, 2013
@mattt mattt [Issue #15] Removing reference to unimplemented -productsWithURLReque…
Commits on Feb 06, 2013
@mattt mattt Using extern storage class for private functions in test target 2a98ede
Commits on Mar 25, 2013
@mattt mattt Fixing typo in code (/thanks Ricardo Sánchez-Sáez) ecc6cb5
Commits on Mar 31, 2013
@mattt mattt Updating AFNetworking submodule reference abe2e77
@mattt mattt Merge branch 'master' of b0364dd
Commits on Apr 09, 2013
@lxcid - Updates AFNetworking. 5c37729
@lxcid - Import SystemConfiguration and MobileCoreServices framework.
- Fix some outdated Xcode project settings.
@lxcid - Travis CI setup. 3214539
Commits on Apr 17, 2013
@lxcid [CRITICAL BUG] Fixed restoration bug caused by incorrectly check for …
…unique identifier for vendor.

Every (re-)installation generates a new unique identifier for vendor.
Every purchase and restoration receipt will be tag with this new unique identifier.
But the latest receipt info might have a unique identifier for vendor from another device, from a previous installation, etc.
So we should only check if the purchase info matches receipt for device for receipt we restored with this device.
We should not check for unique identifier for vendor in latest receipt info.
This has caused a critical bug where restoration will always fails.

This commit attempts to fixed this issue.
@lxcid Merge branch 'master' of 1999f37
Commits on Apr 22, 2013
@lxcid - Updates dispatchSemaphoreInBlock: method to something simpler that …
…doesn't need semaphore, thus avoid the iOS 5 error.

Should refactor the unit tests to use mocks and stubs and make it simpler.