정기결제는 카드정보를 미리 등록해두고 원하는 때에 고객의 별도 인증 없이 결제를 요청하는 방식으로 구독결제를 구현할 수 있습니다.
ㆍ빌링키 발급 : 빌링키를 발급받기 위해서는 최초결제를 필요로 하며 이 때에는 3DS인증을 진행하게 됩니다.
ㆍ비인증 결제 : 발급받은 빌링키로 결제를 할 때에는 비인증으로 API전송을 통해 결제가 진행됩니다.

카드정보 입력창을 호출하여 빌링키발급

crul --request POST \
     --url https://api.portone.cloud/api/subscription/createSubscription \
	 --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....MiwiZXhwIjoxNjczMzM5MDMy' \
	 --header 'X-Portone-Client-Key: pptafmcddmszvgXl'  \
	 --header 'content-type: application/json'  \
	 --data '
		{
			"portone_key": "pptafmcddmszvgXl",
			"signature_hash": "10b664f803035a2146b26949041c2ce8c8693512e4b85159d3c43b001a714af0",
			"merchant_order_ref": "MERCHANT1617366877789",
			"plan_order_ref": "2io9YeRpABYEusCaoFT4h8Tn312",
			"currency": "USD",
			"initial_amount": 1.00,
			"subscription_type": "ONDEMAND",
			"environment": "sandbox",
			"source": "api",
			"first_txn_auto_refund": false,
			"success_url": "https://mydomain/success.html",
			"failure_url": "https://mydomain/failure.html"
		}
	'
plan_order_ref는 플랜생성 API의 응답값의 order_ref(콘솔 Subscriptions 메뉴의 Plan ID)를 설정합니다.
subscription_type과 currency는 플랜의 속성과 동일하게 설정합니다.
API응답값의 subscription_link를 획득하여 빌링키 발급 및 첫결제를 위한 결제창을 호출합니다.
빌링키발급 시, 첫결제가 발생합니다. 이 때 결제될 금액을 initial_amount에 설정합니다.
첫결제에 대해 환불이 가능한 PSP에 한해 first_txn_auto_refund를 true로 설정하면 결제 후 자동취소가 진행됩니다.
빌링키조회는 Get Subscription API를 통하여, 첫결제에 대한 결제상세정보는 Get Subscription Link Transaction Details API를 통하여 조회할 수 있습니다.