# AppSumo Partner Settings — বাংলা গাইড

এই গাইড শুধু **আপনার লাইসেন্সিং / পার্টনার সাইটের** জন্য (যেমন `atomicaddons.com`)। কাস্টমারের WordPress সাইটে Partner settings চালু করবেন না।

---

## Partner Settings কী?

AppSumo যখন কেউ প্রোডাক্ট কেনে, তখন দুটি জিনিস ঘটে:

1. **Webhook** — AppSumo আপনার সাইটে POST পাঠায় (লাইসেন্স ইভেন্ট)।
2. **OAuth** — কাস্টমার আপনার Redirect URL-এ এসে অ্যাকাউন্ট কানেক্ট করে।

**Partner settings** দিয়ে আপনি সেই webhook/OAuth চালু করেন, API কী রাখেন, এবং Portal-এ যে URL দিতে হবে সেগুলো দেখতে পান।

গুরুত্বপূর্ণ নিয়ম (AppSumo): সব `license_key` AppSumo জেনারেট করে। আপনাকে কীগুলো DB-তে রাখতে হবে এবং সাপোর্ট টিম যেন `license_key` দিয়ে সার্চ করতে পারে — AppSumo কাস্টমার ইমেইল রাখে না।

---

## কোথায় পাবেন?

**আগে** আপনার পার্টনার সাইটের `wp-config.php`-এ ( `"That's all, stop editing!"`-এর আগে ) যোগ করুন:

```php
define( 'ATOMEL_APPSUMO_PARTNER', true );
```

এই কনস্ট্যান্ট **না থাকলে** Partner settings ও AppSumo Licenses মেনু কাস্টমারদের কাছে লুকানো থাকে। শুধু **Activate your license** দেখা যায়।

তারপর: WordPress Admin → **Atomic Addons → License**

(Elementor না থাকলে মেনু হতে পারে: **Atomic License**)

পেজের নিচে **Partner settings** সেকশন (শুধু `ATOMEL_APPSUMO_PARTNER` চালু থাকলে)।

---

## প্রতিটি ফিল্ডের বিস্তারিত

### 1. Partner mode

| | |
|--|--|
| **কী** | চেকবক্স — এই সাইটকে AppSumo পার্টনার সার্ভার বানায় |
| **চালু করলে** | Webhook গ্রহণ, OAuth, লাইসেন্স টেবিল, কাস্টমার activate/deactivate API |
| **কোথায়** | শুধু আপনার অফিশিয়াল লাইসেন্সিং সাইটে |
| **কোথায় নয়** | কাস্টমারের সাইটে কখনো অন করবেন না |

---

### 2. API key

| | |
|--|--|
| **কোথায় পাবেন** | [AppSumo Partner Portal](https://www.appsumo.com/partners/products/) → প্রোডাক্ট API settings → eye আইকন |
| **কাজ** | Webhook HMAC সিগনেচার ভেরিফাই (`X-Appsumo-Signature`); Licensing API কল |
| **সেভ** | সেভের পর ফিল্ড খালি/`••••` দেখায়। নতুন কী দিলেই আপডেট; খালি রাখলে পুরনো কী থাকে |

---

### 3. OAuth client ID

| | |
|--|--|
| **কখন পাবেন** | Webhook + OAuth URL দুটোই Portal-এ সফলভাবে ভ্যালিড হলে AppSumo অটো জেনারেট করে |
| **কাজ** | OAuth `code` এক্সচেঞ্জে AppSumo-কে চিনতে |

---

### 4. OAuth client secret

| | |
|--|--|
| **কাজ** | `client_id`-এর সাথে টোকেন এক্সচেঞ্জ |
| **সেভ** | API key-এর মতো — খালি রাখলে পুরনো secret থাকে; নতুন দিলে আপডেট |

---

### 5. Partner base URL

| | |
|--|--|
| **কী** | কাস্টমার সাইট লাইসেন্স অ্যাকটিভেট করতে যে বেস URL-এ হিট করবে |
| **খালি রাখলে** | ডিফল্ট: `https://atomicaddons.com` |
| **কখন বদলাবেন** | লোকাল/স্টেজিং টেস্ট (ngrok ইত্যাদি), বা আলাদা প্রোডাকশন ডোমেইন |

উদাহরণ (লোকাল টেস্ট):
`https://abcd1234.ngrok-free.app`

---

### 6. Webhook URL (শুধু কপি — এডিট নয়)

ফরম্যাট:

```text
https://YOUR-SITE/wp-json/atomic-elements/v1/appsumo/webhook
```

এটা Portal-এর **Webhook URL** ফিল্ডে পেস্ট করুন।

AppSumo সেভ/ভ্যালিড করার সময় টেস্ট POST পাঠায় (`"test": true`)। আপনার এন্ডপয়েন্ট অবশ্যই:

- HTTP **200**
- JSON: `{"event":"<যে ইভেন্ট এসেছে>","success":true}`

টেস্ট ইভেন্টে আসল লাইসেন্স DB-তে লেখা হয় না।

---

### 7. OAuth redirect URL (শুধু কপি — এডিট নয়)

ফরম্যাট:

```text
https://YOUR-SITE/wp-json/atomic-elements/v1/appsumo/oauth
```

Portal-এর **OAuth Redirect URL**-এ **অক্ষরে অক্ষরে একই** দিন।

মিসম্যাচ হলে সাধারণত **403 Forbidden** হয়। চেক করুন:

- শেষে `/` আছে কি নেই
- `http` না `https`
- ডোমেইন সঠিক কি না

Portal ভ্যালিডেশন: শুধু GET → **200 OK** (বডি লাগবে না)।

---

## Freemius auto-issue (আপডেটের জন্য)

AppSumo OAuth শেষ হলে সিস্টেম Freemius-এ **lifetime license** তৈরি করে (`source = AppSumo`)। কাস্টমার সেই Freemius key দিয়ে Account অ্যাকটিভ করলে **WP Admin থেকে অটো আপডেট** পায়।

Partner settings → **Freemius auto-issue** সেকশনে দিন:

1. Freemius Dashboard → Product → API → **Bearer token**
2. **Product ID** (Atomic Addons = `26978`)
3. **Plan ID** ও **Pricing ID** (Dashboard → Plans)
4. Save — স্ট্যাটাস “Configured” দেখানো উচিত

AppSumo `deactivate` (রিফান্ড ইত্যাদি) এলে লিংক করা Freemius license **cancel** হয়।

---

## ধাপে ধাপে সেটআপ (চেকলিস্ট)

1. লাইসেন্সিং সাইটে Atomic Addons ইনস্টল ও অ্যাকটিভ করুন।
2. `wp-config.php`-এ যোগ করুন: `define( 'ATOMEL_APPSUMO_PARTNER', true );`
3. **Atomic Addons → License → Partner settings**-এ যান।
4. **Partner mode** চেক করে সেভ করুন।
5. সাইট ইন্টারনেট থেকে পাবলিকলি ওপেন করুন (লাইভ ডোমেইন বা টানেল, যেমন `ngrok http 80`)।
6. পেজ থেকে **Webhook URL** ও **OAuth redirect URL** কপি করুন।
7. [Partner Portal](https://www.appsumo.com/partners/products/) → আপনার প্রোডাক্ট → API settings-এ দুটো URL সেভ/ভ্যালিড করুন।
8. ভ্যালিড হলে Portal থেকে নিন:
   - `client_id`
   - `client_secret`
   - API key
9. সেগুলো Partner settings-এ পেস্ট করে **Save partner settings** চাপুন।
10. AppSumo developer credit দিয়ে টেস্ট কিনুন।
11. অ্যাডমিনে **AppSumo Licenses** মেনুতে `license_key` দেখা যাচ্ছে কি না চেক করুন।
12. OAuth ফ্লোতে অ্যাকাউন্ট বানিয়ে/লগইন করে license key পান।
13. আলাদা টেস্ট সাইটে **License**-এ সেই কী দিয়ে **Activate** করে Pro আনলক যাচাই করুন।

---

## সেভের পর কী কী মেনু আসে?

Partner mode চালু থাকলে:

- **License** — অ্যাকটিভেশন + Partner settings
- **AppSumo Licenses** — সব লাইসেন্স লিস্ট; `license_key`, status, tier, user, bound site, last event দিয়ে সার্চ (সাপোর্টের জন্য)

---

## কাস্টমার সাইডে কী হয়? (তারা Partner settings ব্যবহার করে না)

1. AppSumo-তে কিনে → OAuth দিয়ে আপনার সাইটে অ্যাকাউন্ট কানেক্ট করে।
2. যে **license key** দেখায় সেটা কপি করে।
3. নিজের WP সাইটে **Atomic Addons → License**-এ পেস্ট করে **Activate** চাপে।
4. তাদের সাইট আপনার **Partner base URL**-এ validate করে; সফল হলে Pro আনলক।

---

## Webhook ইভেন্ট (সংক্ষেপে)

| Event | মানে |
|-------|------|
| `purchase` | কিনেছে — সাধারণত inactive রেকর্ড |
| `activate` | অ্যাকটিভেশন শুরু — পেলোডে status `inactive` থাকতে পারে; আপনি 200 দিলে AppSumo active করে |
| `upgrade` / `downgrade` | নতুন `license_key`; পুরনো খুঁজতে `prev_license_key` |
| `deactivate` | রিফান্ড/ক্যান্সেল — সাইট বাইন্ডিং ক্লিয়ার |
| `migrate` | অ্যাড-অন; `parent_license_key` আপডেট |

সব সফল রেসপন্স: HTTP **200** + `{"event":"...","success":true}`।

---

## সমস্যা ও সমাধান

| সমস্যা | সম্ভাব্য কারণ | কী করবেন |
|--------|----------------|----------|
| Webhook Portal-এ সেভ হয় না | URL পাবলিক নয় / 200+JSON না | টানেল/লাইভ চেক; টেস্ট POST ম্যানুয়ালি হিট করুন |
| OAuth 403 | `redirect_uri` মিলে না / code একবারই | URL exact মিলান; AppSumo থেকে আবার অ্যাকটিভেট |
| Activate ফেল | Partner mode অফ / license active নয় / অন্য সাইটে বাঁধা | AppSumo Licenses দেখুন; আগে Deactivate |
| কাস্টমার সাইটে partner mode | ভুল কনফিগ | কাস্টমার সাইটে Partner mode অফ রাখুন |
| লাইসেন্স খুঁজে পাচ্ছেন না | webhook আসেনি | Portal License History + আপনার AppSumo Licenses টেবিল |

---

## লাইভ হওয়ার পর URL বদলানো

লাইভ প্রোডাক্টে Webhook/OAuth URL বদলালে কানেকশন ভেঙে যেতে পারে। AppSumo Launch Operations / সাপোর্টের সাথে কথা বলে invalidate/reopen করুন — নিজে ইচ্ছামতো বদলাবেন না।

---

## দ্রুত রেফারেন্স — Portal-এ যে দুটো URL

```text
Webhook:  https://YOUR-DOMAIN/wp-json/atomic-elements/v1/appsumo/webhook
OAuth:    https://YOUR-DOMAIN/wp-json/atomic-elements/v1/appsumo/oauth
```

`YOUR-DOMAIN` = যে সাইটে Partner mode চালু আছে।
