2025-5-13 coinbase.com完全可以用在跨境支付,Nice

主页:

https://beta.commerce.coinbase.com/

API及webhook

https://beta.commerce.coinbase.com/settings/security

https://beta.commerce.coinbase.com/settings/notifications


当然!以下是如何使用 **Coinbase Commerce API** 在 Flask 应用中完成支付的示例代码:


### 1. **安装必要的库**

使用 `pip` 安装 `Flask` 和 `requests`:

```bash

pip install Flask requests

```


### 2. **配置 Flask 应用**

创建一个简单的 Flask 服务器,与 Coinbase Commerce API 交互:


```python

import requests

from flask import Flask, request, jsonify


app = Flask(__name__)


# Coinbase Commerce API 相关配置

COINBASE_API_KEY = "your_api_key"

COINBASE_API_URL = "https://api.commerce.coinbase.com/charges"


@app.route("/create_payment", methods=["POST"])

def create_payment():

    data = request.json

    amount = data.get("amount")

    currency = data.get("currency", "USD")

    description = data.get("description", "Payment via Flask")


    headers = {

        "Content-Type": "application/json",

        "X-CC-Api-Key": COINBASE_API_KEY

    }


    payment_data = {

        "name": "Product Name",

        "description": description,

        "pricing_type": "fixed_price",

        "local_price": {"amount": amount, "currency": currency},

        "metadata": {"customer_id": "12345"}

    }


    response = requests.post(COINBASE_API_URL, json=payment_data, headers=headers)


    return jsonify(response.json())


if __name__ == "__main__":

    app.run(debug=True)

```


### 3. **测试支付功能**

可以使用 `Postman` 或 `curl` 发送 POST 请求:

```json

{

  "amount": "10",

  "currency": "USD",

  "description": "Test Payment"

}

```


如果 Coinbase 返回支付链接,你可以在前端展示给用户,让他们使用加密货币完成付款。


### 4. **监听支付状态**

你可以使用 **Coinbase Commerce Webhooks** 来监听支付状态:

- 支付成功时,Coinbase 会发送 Webhook 事件到你的服务器。

- 你需要在 Coinbase Commerce 控制台中配置 Webhook URL,并在 Flask 应用中处理请求。


示例 Webhook 监听:

```python

@app.route("/webhook", methods=["POST"])

def webhook():

    event = request.json

    if event["event"]["type"] == "charge:confirmed":

        print("Payment Successful!")

    return jsonify({"status": "ok"})

```


### 5. **优化建议**

- **环境变量**:不要将 API 密钥硬编码在代码中,使用 `.env` 文件或 `config` 变量管理。

- **日志记录**:记录支付请求和响应,方便调试。

- **安全性**:确保 Webhook 事件数据来源可信。


你可以在 [Coinbase Commerce API 文档](https://commerce.coinbase.com/docs/api/) 查看更多详细信息。希望这能帮助你完成支付集成! 🚀


import hmac

import hashlib

import json

from flask import Flask, request, jsonify


COINBASE_SHARED_SECRET = "your_webhook_secret"


app = Flask(__name__)


def verify_signature(payload, signature):

    computed_signature = hmac.new(COINBASE_SHARED_SECRET.encode(), payload, hashlib.sha256).hexdigest()

    return hmac.compare_digest(computed_signature, signature)


@app.route("/webhook", methods=["POST"])

def webhook():

    payload = request.data

    signature = request.headers.get("X-CC-Webhook-Signature")


    if verify_signature(payload, signature):

        event = json.loads(payload)

        print("Webhook received:", event)

        return jsonify({"status": "success"}), 200

    else:

        return jsonify({"status": "invalid signature"}), 400


if __name__ == "__main__":

    app.run(debug=True)



Coinbase Commerce 的 Webhook 事件数据通常包含支付相关的信息,具体格式如下:

### **示例 Webhook 事件数据**
```json
{
  "event": {
    "type": "charge:confirmed",
    "id": "event_123456789",
    "resource": "charge",
    "created_at": "2025-05-13T10:15:30Z",
    "data": {
      "id": "charge_abc123",
      "name": "Product Name",
      "description": "Payment for order #123",
      "pricing_type": "fixed_price",
      "local_price": {
        "amount": "10.00",
        "currency": "USD"
      },
      "payments": [
        {
          "status": "CONFIRMED",
          "value": {
            "amount": "10.00",
            "currency": "BTC"
          }
        }
      ],
      "timeline": [
        {
          "status": "NEW",
          "time": "2025-05-13T10:12:00Z"
        },
        {
          "status": "PENDING",
          "time": "2025-05-13T10:13:00Z"
        },
        {
          "status": "CONFIRMED",
          "time": "2025-05-13T10:15:00Z"
        }
      ]
    }
  }
}
```

### **主要字段解析**
- `"event.type"`: 事件类型,例如 `charge:confirmed`(支付成功)。
- `"event.data.id"`: 唯一的支付 ID,可用于查询订单详情。
- `"event.data.local_price"`: 订单金额及货币。
- `"event.data.payments"`: 支付详情,包括支付状态、金额及币种。
- `"event.data.timeline"`: 支付流程,包括 `NEW`(创建)、`PENDING`(等待支付)、`CONFIRMED`(支付完成)。

### **Webhook 事件类型**
Coinbase Commerce 可能会触发以下 Webhook 事件:
- `charge:created` – 订单已创建
- `charge:pending` – 订单待处理
- `charge:confirmed` – 订单支付成功
- `charge:failed` – 订单支付失败
- `charge:resolved` – 订单已关闭

你可以在 Webhook 监听代码中提取 `event["type"]` 进行不同的支付处理。如果你需要进一步优化 Webhook 处理逻辑,我可以帮你完善代码!🚀


最后,在首页,设置,

Webhook 订阅,可以添加webhook





评论

  1. https://www.youtube.com/watch?v=CkglLSopBu0&ab_channel=%E5%A4%96%E8%B4%B8%E9%BA%A6%E5%85%8B

    其实也可以是著名书籍吐槽,用另外一个角度去批判。

    回复删除

发表评论

此博客中的热门博文

2025-5-29 部署一个跨境站

2025-07-01 视频经验总结

Wan2.2-Animate安装时候遇到的坑