https://github.com/powermobileweb/applepay
a Python library for decrypting Apple Pay payment tokens.
https://github.com/powermobileweb/applepay
apple-pay encryption python python-libra token
Last synced: 9 months ago
JSON representation
a Python library for decrypting Apple Pay payment tokens.
- Host: GitHub
- URL: https://github.com/powermobileweb/applepay
- Owner: powermobileweb
- Created: 2019-02-15T19:16:20.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-15T19:20:09.000Z (over 7 years ago)
- Last Synced: 2024-12-20T18:54:17.023Z (over 1 year ago)
- Topics: apple-pay, encryption, python, python-libra, token
- Language: Python
- Size: 16.6 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# A Python library for decrypting Apple Pay payment tokens.
ApplePay reference https://developer.apple.com/library/ios/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html
## Apple's intermediate and root certificates
```sh
$ wget 'https://www.apple.com/certificateauthority/AppleAAICAG3.cer'
$ wget 'https://www.apple.com/certificateauthority/AppleRootCA-G3.cer'
```
## Install
Installing library into your environment:
```sh
$ pip install applepay
```
## Usage
Step by step:
```python
from applepay import payment as apple
# payment_json value example:
#
# {"data":"<>",
# "header":
# {"publicKeyHash":"<>",
# "ephemeralPublicKey":"<>",
# "transactionId":"<>"},
# "version":"EC_v1"}
certificate_pem = open('merchant_cert.pem', 'rb').read()
private_key_pem = open('merchant_private_key', 'rb').read()
payment = apple.Payment(certificate_pem, private_key_pem)
decrypted_json = payment.decrypt(payment_json['header']['ephemeralPublicKey'], payment_json['data'])
# decrypted_json value example
# {
# "applicationPrimaryAccountNumber"=>"4804123456789012",
# "applicationExpirationDate"=>"190123",
# "currencyCode"=>"123",
# "transactionAmount"=>700,
# "deviceManufacturerIdentifier"=>"123456789012",
# "paymentDataType"=>"3DSecure",
# "paymentData"=> {
# "onlinePaymentCryptogram"=>"<>",
# "eciIndicator"=>"5"
# }
# }
```
## Testing
```sh
$ python setup.py test
```
## Contributors