整合結帳
整合我們的無縫結帳解決方案,為您的玩家提供日本本地支付方式。
必要條件
請確保您已從 Tokenz 獲取 API 憑證(金鑰)。您可以在 Tokenz Dashboard 的 Developers → API keys 找到您的憑證。
如果您想了解 Tokenz Checkout 的工作原理,請參閱 Checkout 了解更多詳細資訊。
設定伺服器
import os
from flask import Flask, request, redirect
from flask_cors import CORS
import requests
# Replace the keys with yours
SECRET_KEY = os.environ.get("SECRET_KEY", "secret_test_YOUR_KEY_HERE")
app = Flask(__name__, static_url_path="")
CORS(app)
root = "../client/build"
@app.route("/", methods=["GET"])
def index():
return redirect("http://localhost:3080")
創建結帳工作階段
在您的伺服器上添加一個端點來創建結帳工作階段。結帳工作階段控制您的客戶在 Tokenz 託管的支付頁面上看到的內容,例如項目、訂單金額、貨幣和可用的支付方式。
定義項目(line item)
總是將您的產品庫存的敏感資訊(如價格和可用性)保存在您的伺服器上,以防止客戶從客戶端進行操作。在創建結帳工作階段時定義產品資訊。
稅金。 本快速入門(及其範例載荷)基於 Merchant of Record(MoR)模式——即 Tokenz 帳戶的預設模式:Tokenz 會自動計算並代收稅金,您只需為每個商品設定 taxCategory。如果您的帳戶被特別設定為 Payment Gateway 模式,則每個 Checkout Session 都必須額外包含頂層 tax 物件(以最小貨幣單位表示,例如 "tax": { "amount": 0, "currency": "USD" });缺少該欄位的請求會被拒絕並回傳 order.tax-required。如果不確定您的帳戶使用哪種模式,請與您的 Tokenz 聯絡人確認。
提供成功和取消的 URL
指定成功和取消頁面的 URL,確保它們是可公開訪問的,以便 Tokenz 可以將客戶轉址過去。您也可以使用相同的 URL 來處理成功和取消狀態。
[非必要] 定義可用的支付方式
指定為此結帳向您的客戶提供的支付方式列表。如果未提供支付方式或提供了空列表,則所有可用的支付方式都將顯示給客戶。
將客戶轉址到 Tokenz 結帳頁面
創建工作階段後,將您的客戶轉址到回應中返回的結帳頁面的 URL。
@app.route("/create-tokenz-checkout", methods=['POST'])
def create_tokenz_checkout():
CALLBACK_URL_PREFIX = request.headers['referer']
headers = {"Authorization": f'Bearer {SECRET_KEY}'}
print(headers)
payload = {
"amount": {
"currency": "JPY",
"amount": 5200
},
"itemDetails": [
{
"product": {
"label": "ひとにぎりのエメラルド",
"description": "80+8",
"images": [
"https://images.ctfassets.net/z82qbo7cv7ia/1dWPbk5Qx2M1Qikj6Knyuc/e37b2c26829c0d30793a348ae3adb3b0/fake-pass.webp"
],
"quantity": 3,
"price": {
"currency": "JPY",
"amount": 1200
},
"taxCategory": "DIGITAL_GOODS_AND_SERVICES"
}
},
{
"product": {
"label": "エメラルドの荷車",
"description": "100+10",
"images": [],
"quantity": 1,
"price": {
"currency": "JPY",
"amount": 1600
},
"taxCategory": "DIGITAL_GOODS_AND_SERVICES"
}
}
],
"customerInfo": {},
"successUrl": "http://localhost:9000/success",
"pendingUrl": "http://localhost:9000/pending",
"cancelUrl": "http://localhost:9000/cancel"
}
res = requests.post(
"https://api.tokenz.one/v1/checkoutsession", json=payload, headers=headers
)
session = res.json()
return redirect(session["url"], 303)
建立您的結帳頁面
添加成功頁面
為您提供的結帳工作階段 successUrl 創建一個成功頁面,向您的客戶顯示訂單確認資訊或訂單詳細資訊。客戶成功完成結帳後,Tokenz 將轉址到此頁面。
<!DOCTYPE html>
<html>
<head>
<title>Thanks for your order!</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<section>
<p>
感謝您的惠顧!如果您有任何問題,請發送電子郵件至
<a href="mailto:orders@example.com">orders@example.com</a>。
</p>
</section>
</body>
</html>
添加待處理付款頁面
對於非同步支付方式(如便利店支付或銀行轉賬),支付可能會處於待處理狀態,時間從幾分鐘到幾天不等。為 pendingUrl 添加一個頁面。當客戶關閉異步支付的說明頁面後,Tokenz 會轉址到此頁面。
<!DOCTYPE html>
<html>
<head>
<title>感謝您的訂購!</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<section>
<p>
您的支付正在處理中!我們會在完成後第一時間通知您。
如果您有任何問題,請發送電子郵件至
<a href="mailto:orders@example.com">orders@example.com</a>.
</p>
</section>
</body>
</html>
添加取消頁面
為 cancelUrl 添加另一個頁面。當客戶在結帳中點擊返回按鈕時,Tokenz 會轉址到此頁面。
<!DOCTYPE html>
<html>
<head>
<title>結帳已取消</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<section>
<p>忘記添加商品到購物車了?繼續購物,然後回來支付!</p>
</section>
</body>
</html>
添加結帳按鈕
最後,添加一個頁面來顯示客戶訂單的預覽。允許他們審核或修改訂單—當他們被轉址到結帳頁面後,訂單內容即為確定狀態,除非創建新的結帳工作階段,否則無法修改訂單。
在您的訂單預覽頁面中添加一個按鈕。當您的客戶點擊此按鈕時,他們會被轉址到 Tokenz 託管的支付頁面。
<!DOCTYPE html>
<html>
<head>
<title>購買新產品</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<section>
<div class="product">
<img src="https://images.ctfassets.net/z82qbo7cv7ia/1dWPbk5Qx2M1Qikj6Knyuc/e37b2c26829c0d30793a348ae3adb3b0/fake-pass.webp" alt="Treasure chest" />
<div class="description">
<h3>寶箱</h3>
<h5>$1,000</h5>
</div>
</div>
<form action="/create-tokenz-checkout" method="POST">
<button type="submit" id="checkout-button">結帳</button>
</form>
</section>
</body>
</html>