Metadata-Version: 2.1
Name: pretix-gpwebpay
Version: 7.0.4
Summary: GPWebPay payment provider for Pretix
Home-page: https://github.com/yourusername/pretix-gpwebpay
Author: Your Name
Author-email: your.email@example.com
License: Apache Software License
License-File: LICENSE
Requires-Dist: cryptography >=3.0.0
Requires-Dist: pretix >=4.0.0

# GPWebPay Payment Provider for Pretix

A fully functional payment gateway plugin for Pretix that integrates with GPWebPay payment system.

## Features

- Full GPWebPay integration with PKI-based message signing
- Secure payment processing with RSA-SHA256 signatures
- Support for multiple currencies (CZK, EUR, USD, GBP, PLN, HUF)
- Server-to-server notifications (IPN)
- User redirect handling
- Test mode support
- Proper error handling and logging

## Installation

1. Install the plugin in your Pretix environment:

```bash
pip install -e /path/to/pretix-gpwebpay
```

2. Add the plugin to your Pretix configuration (`pretix.cfg`):

```ini
[pretix]
plugins = pretix_gpwebpay
```

3. Restart your Pretix instance.

## Configuration

1. Go to your event's payment settings in the Pretix control panel.
2. Enable the GPWebPay payment provider.
3. Configure the following settings:

   - **Merchant Number**: Your GPWebPay merchant number
   - **Private Key File**: Upload your GPWebPay private key file (.key or .pem format)
   - **Private Key Password**: Password for your private key (if required)
   - **GPWebPay Public Key File**: Upload GPWebPay's public key for signature verification
   - **Gateway URL**: GPWebPay gateway URL
     - Production: `https://3dsecure.gpwebpay.com/pgw/order.do`
     - Test: Use the test gateway URL provided by GPWebPay
   - **Test Mode**: Enable for testing

## Requirements

- Pretix >= 4.0.0
- Python >= 3.8
- cryptography >= 3.0.0

## Security

This plugin implements GPWebPay's security requirements:

- All payment requests are signed using RSA-SHA256 with your private key
- All payment responses are verified using GPWebPay's public key
- Private keys are stored securely in Pretix's configuration
- Message integrity is verified for all transactions

## How It Works

1. **Payment Initiation**: When a customer selects GPWebPay, they are redirected to the GPWebPay gateway with a signed payment request.

2. **Payment Processing**: The customer completes payment on GPWebPay's secure gateway.

3. **Return Handling**: After payment, the customer is redirected back to your Pretix instance, where the payment status is verified using GPWebPay's signature.

4. **Server Notification**: GPWebPay also sends a server-to-server notification to confirm the payment status.

## Supported Currencies

- CZK (Czech Koruna) - Code: 203
- EUR (Euro) - Code: 978
- USD (US Dollar) - Code: 840
- GBP (British Pound) - Code: 826
- PLN (Polish Zloty) - Code: 985
- HUF (Hungarian Forint) - Code: 348

## Development

### Project Structure

```
pretix_gpwebpay/
├── __init__.py          # Plugin metadata
├── apps.py              # Django app configuration
├── signals.py           # Plugin registration
├── payment.py           # Payment provider implementation
├── views.py             # Return and notification handlers
├── urls.py              # URL routing
└── locale/              # Translations
```

### Testing

1. Configure test mode in the plugin settings
2. Use GPWebPay test credentials
3. Test payment flow end-to-end
4. Verify signature generation and verification

## Troubleshooting

### Payment Not Processing

- Verify your merchant number is correct
- Check that private and public keys are properly uploaded
- Ensure the gateway URL is correct for your environment (test/production)
- Check Pretix logs for detailed error messages

### Signature Verification Failures

- Verify you're using the correct public key from GPWebPay
- Ensure private key password is correct (if required)
- Check that key files are in the correct format (PEM)

### Currency Issues

- Verify your currency is supported
- Check that currency codes match GPWebPay's requirements

## License

Apache Software License 2.0

## Support

For issues related to:
- **Plugin functionality**: Check the Pretix documentation and plugin development guide
- **GPWebPay integration**: Refer to GPWebPay's integration documentation
- **Payment processing**: Contact GPWebPay support

## References

- [Pretix Plugin Development Guide](https://docs.pretix.eu/dev/development/api/index.html)
- [GPWebPay HTTP API Documentation](GP_webpay_HTTP_API_v1.19_EN.pdf)
- [GPWebPay Private Key Management](GP_webpay_Private_key_management_EN.pdf)

