You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django服务器调用Google Pay API实现自动退款:找不到可用开放API

在Django中实现Google Pay自动退款的方案

1. 对应API说明

你要找的是Google Pay REST API的退款接口,这个完全支持服务器端(包括Django)调用,专门处理已完成支付的自动退款。前提是你的支付流程是通过Google Pay完成的,且已经在Google商家后台完成了商家认证和API权限配置。

2. 先搞定身份验证

Django服务器需要通过OAuth2服务账号完成API身份验证,步骤如下:

  • 去Google Cloud Console创建服务账号,下载JSON格式的密钥文件
  • 给该服务账号分配payments.refunds.create等相关退款权限
  • 在Django项目里用google-auth和google-auth-oauthlib库生成认证令牌

Django视图中的示例代码:

from google.oauth2 import service_account
import requests
from django.http import JsonResponse

# 加载服务账号密钥
SCOPES = ['https://www.googleapis.com/auth/payments_refund']
SERVICE_ACCOUNT_FILE = '/path/to/your/service-account-key.json'

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
auth_token = credentials.token

3. 调用退款API实现自动退款

在Django视图中构建退款请求,发送POST请求到Google Pay的API端点:

def process_google_pay_refund(request):
    # 从请求获取必要参数(根据你的业务逻辑调整来源,比如订单模型)
    payment_order_id = request.POST.get('payment_order_id')
    refund_amount = request.POST.get('refund_amount')  # 注意:单位是最小货币单位,比如人民币分、美元分
    currency_code = 'CNY'  # 替换成你实际使用的货币代码

    # 构建退款请求体
    refund_payload = {
        "paymentOrderId": payment_order_id,
        "amount": {
            "value": refund_amount,
            "currencyCode": currency_code
        },
        "reason": "Customer initiated refund request"
    }

    # Google Pay退款API端点
    api_url = 'https://payments.googleapis.com/v1/refunds'

    headers = {
        'Authorization': f'Bearer {auth_token}',
        'Content-Type': 'application/json'
    }

    response = requests.post(api_url, json=refund_payload, headers=headers)
    
    if response.status_code == 200:
        # 退款成功,更新本地订单状态等逻辑
        return JsonResponse({'status': 'success', 'refund_details': response.json()})
    else:
        # 处理错误,比如记录日志、返回错误信息
        return JsonResponse({'status': 'failed', 'error_msg': response.text}, status=response.status_code)

4. 重要注意事项

  • 只有原支付订单的归属商家才能发起退款请求,权限不足会返回403错误
  • 退款金额不能超过原支付金额,且货币代码必须与原支付一致
  • 建议用Celery等异步任务框架处理退款请求,避免阻塞HTTP响应
  • 务必处理API返回的各种错误码,比如404表示订单不存在,400表示请求参数错误

内容的提问来源于stack exchange,提问作者SevanDY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:10:31