Gumroad로 Laravel 앱에 대한 결제 액세스
먼저 create a Gumroad account이 필요합니다. 그런 다음 새 제품을 생성하고 모든 필수 필드를 작성합니다. 콘텐츠 섹션에서
Generate a unique license key per sale
라는 확인란이 선택되어 있는지 확인해야 합니다. 또한 콘텐츠를 파일 대신 URL로 설정해야 합니다. 제 경우에는 이 URL이 등록 페이지가 됩니다.이제 Laravel 쪽으로 넘어가 봅시다. 가장 먼저 필요한 것은 Gumroad와 연결하는 방법입니다. 패키지를 다운로드하는 대신 Laravel 7.x에서 새로운
Http
클라이언트를 사용하여 Gumroad API와 상호 작용할 수 있습니다. 여기 우리의 삶을 더 쉽게 만들어 줄 간단한 수업이 있습니다.<?php
namespace App\Utils;
use Illuminate\Http\Client\PendingRequest;
class Gumroad
{
protected PendingRequest $client;
public function __construct(PendingRequest $client)
{
$this->client = $client->baseUrl('https://api.gumroad.com/v2/')->withToken(config('services.gumroad.token'));
}
public function getSale(string $id) : array
{
return $this->client->get("/sales/{$id}")->throw()->json();
}
public function verifyLicense(string $license) : array
{
return $this->client->post('/licenses/verify', [
'product_permalink' => config('services.microlink.product'),
'license_key' => $license,
])->throw()->json();
}
}
이를 통해 이제 등록 시 라이선스 키의 유효성을 검사하는 작업을 시작할 수 있습니다. 이를 위해
RegisterController
(또는 Fortify를 사용하는 경우 CreateNewUser
)의 유효성 검사 배열에 추가할 수 있는 사용자 지정 유효성 검사 규칙을 만들었습니다. 이 규칙은 라이센스 키가 존재하는지 확인할 뿐만 아니라 이전에 사용된 적이 없고 어떤 식으로든 환불 또는 취소되지 않았는지 확인합니다.<?php
namespace App\Rules;
use Facades\App\Utils\Gumroad;
use Illuminate\Contracts\Validation\Rule;
class GumroadLicense implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$license = Gumroad::verifyLicense($value);
return
$license['success'] &&
$license['uses'] == 1 &&
!$license['purchase']['refunded'] &&
!$license['purchase']['disputed'] &&
!$license['purchase']['chargebacked'];
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The provided license is invalid or has expired.';
}
}
여기서 멈출 수도 있지만 여전히 사용자 경험을 조금 더 개선할 수 있습니다. 누군가 구매를 완료하면
sale_id
라는 특수 쿼리 매개변수를 사용하여 이전에 지정한 URL로 리디렉션됩니다. 이 매개변수를 사용하여 라이선스 키를 검색하고 입력을 미리 채울 수 있습니다. 이렇게 하면 Gumroad가 자신의 키와 복사로 보낸 이메일을 검색하는 사용자가 줄어들어 더 나은 경험을 얻을 수 있습니다. 이를 구현하려면 등록 보기를 반환하기 전에 이 코드를 실행하십시오.if (request()->query('sale_id')) {
$sale = Gumroad::getSale($request->query('sale_id'))['sale'];
request()->session()->flashInput(['email' => $sale['email'], 'license_key' => $sale['license_key']]);
}
이것이 Gumroad로 Laravel 앱에 액세스하기 위해 청구를 시작하는 데 필요한 모든 것입니다!
Reference
이 문제에 관하여(Gumroad로 Laravel 앱에 대한 결제 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/m1guelpf/billing-access-to-your-laravel-apps-with-gumroad-5d4k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)