# 付款被拒

当支付系统拒绝交易时，艾克索拉会将交易详情通过ps_declined类型的Webhook发送至您配置的Webhook 
URL。该Webhook在授权或支付处理阶段发送。此情况下，不会发送payment\ 
order_paid Webhook。

支付系统拒绝的常见原因：

* 卡片授权失败（例如，支付系统因技术错误或银行无响应而无法完成授权流程）或被拒（例如，银行已响应但因资金不足或卡片信息无效而拒绝交易）。
* 3-D Secure验证失败、未完成或用户确认超时。
* 处理方或收单银行暂时不可用，或因不可逆转的错误（如账户已关闭或卡号无效）而强制拒绝。在不解决根本问题的情况下重试将无法成功完成交易。

不应与以下情况混淆：

* 反欺诈拒绝，这类情况通过afs_reject Webhook报告。
* 成功支付后的退款和部分退款，这类情况通过refund和partial_refund webhook报告。


注意
如需接收ps_declined Webhook，请联系您的客户成功经理或发送邮件至csm@xsolla.com。

Endpoint: POST payment-declined
Version: 1.0

## Request fields (application/json):

  - `notification_type` (string, required)
    通知类型。

  - `refund_details` (object)
    退款详情（对象）。

  - `refund_details.author` (string)
    退款发起人。根据下表传入字段值：


    
    
        退款发起人
        字段值
    
    
    
    
        游戏（通过API）。
        API
    
    
        发布商帐户用户（自动退款）。
        用户邮箱
    
    
        发布商帐户用户（通过艾克索拉客户支持的帮助）。
        support@xsolla.com
    
    
        艾克索拉（通过艾克索拉客户支持的帮助）。
        support@xsolla.com

  - `refund_details.code` (integer)
    代码ID。


    
    
        代码
        退款理由
        描述
    
    
    
    
        1
        Cancellation by the user request / the game request
        用于在发布商帐户中发起取消的情况。
    
    
        2
        Chargeback
        交易存在退单的情况。
    
    
        3
        Integration error
        用于艾克索拉与游戏之间存在集成问题的情况。这种情况下，我们不建议将用户列入黑名单。
    
    
        4
        Potential fraud – AFS reject
        交易被拒绝，因为艾克索拉反欺诈系统检测到潜在欺诈行为。
    
    
        5
        Test payment
        用于测试交易然后取消的情况。这种情况下，我们不建议将用户列入黑名单。
    
    
        6
        User invoice expired
        用于通过用后付费模式的支付系统进行交易的情况。
    
    
        7
        Fraud notification from PS
        支付被拒绝，因为支付系统检测到潜在欺诈行为。建议：将该用户添加到拦截列表。
    
    
        8
        Cancellation by the PS request
        用于支付系统请求取消的情况。这种情况下，我们不建议将用户列入黑名单。
    
    
        9
        Cancellation by the user request
        用于用户请求取消的情况。可能出于某些原因导致用户对游戏或购买产生不满的情况下发生。这种情况下，我们不建议将用户列入黑名单。
    
    
        10
        Cancellation by the game request
        用于游戏请求取消的情况。这种情况下，我们不建议将用户列入黑名单。
    
    
        11
        Account holder called to report fraud
        帐户所有者声明其并未进行该交易。建议：将该用户添加到拦截列表。
    
    
        12
        Potential fraud – friendly fraud
        合法持卡人对其交易提出争议。
    
    
        13
        Duplicate
        有同一张发票的重复交易。
    
    
        21
        Potential fraud – BIN attack
        一批银行卡被盗用，这些银行卡的BIN号段集中在一个或多个范围内。主要特征是在短时间内大量出现使用同一BIN号段的尝试，并且通常伴随枚举生成的卡号。
    
    
        22
        Potential fraud – monetization fraud
        使用被盗银行卡购买可交易商品，以便转售。
    
    
        23
        Potential fraud – low-scale card fraud
        银行卡被盗用，涉及一个或多个BIN号段。其规模和组织性不如BIN攻击（退款代码21）。
    
    
        24
        Potential fraud – regional price abuse
        滥用区域价格或游戏Key转售机制。用户通常通过虚假申报所在位置或支付方式来利用区域价格区别，以低价获取商品后在价格较高的市场转售。
    
    
        25
        Potential fraud – partner or PS exploit
        凭证被盗和帐户接管⸺欺诈方利用合作伙伴侧或支付系统侧的帐户或集成实施攻击，而不是直接盗刷银行卡。
    
    
        26
        Potential fraud – not definable
        确认存在欺诈行为，但证据不足以确定具体的攻击类型。
    
    
        27
        Fraud notification from PS – linked transactions
        该交易未被支付系统的欺诈报告直接标记，但与其他因欺诈相关原因退款的交易存在关联，例如使用了相同的银行卡或设备。

  - `refund_details.reason` (string)
    退款原因。

  - `settings` (object)
    带有自定义项目设置的对象。

  - `settings.merchant_id` (integer)
    商户ID。

  - `settings.project_id` (integer)
    项目编号。您可以在您的[发布商帐户](https://publisher.xsolla.com/)项目名称旁边。

  - `transaction` (object, required)
    交易ID。

  - `transaction.dry_run` (integer)
    测试交易。如为测试交易，该参数的值为1；如为真实交易，则不会发送该参数。

  - `transaction.external_id` (string)
    交易外部ID。

  - `transaction.id` (integer)
    交易ID。

  - `transaction.payment_method` (integer)
    付款方式ID。

  - `user` (object)
    用户详情（对象）。

  - `user.country` (string)
    用户所在国家/地区。使用[ISO 3166-1 alpha-2 标准](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)规定的2字母组合表示国家/地区。

  - `user.email` (string)
    用户电子邮件。

  - `user.id` (string, required)
    用户ID。

  - `user.ip` (string)
    用户 IP 地址。

  - `user.name` (string)
    用户名。

## Response 400 fields (application/json):

  - `error` (object)

  - `error.code` (string)

  - `error.message` (string)


## Response 204 fields

## Response 500 fields
