认证方式

请注意,不建议使用Chargify Direct, Chargify.js.

Chargify.js是一种PCI兼容的方式,可在您的网站上嵌入付款表格,同时仍充分利用我们强大的功能 API.

尽管Chargify Direct仍然可以运行并受支持,但不会添加任何新的增强功能或功能。

交互的第二种方法是使用Chargify Direct。 Chargify Direct有 两种连接方法:

  1. 通过提交的表单值
  2. 通过常规的REST调用

通过安全参数直接充电

Secure parameters are used when using the transparent redirect (posting values directly) to Chargify using a <form method='POST' \>. This is done when 创建新的订阅更新付款资料 information.

每个Chargify Direct帖子必须包含一组加密签名的安全参数。安全参数对于以下目的是必需的:

  • 对请求进行身份验证,以便Chargify可以验证它来自受信任的来源(因为Internet上的任何人都可以发布到Chargify Direct端点)
  • 允许您与请求一起发送防篡改数据
  • 指定重定向URI(或覆盖默认值)

以下是身份验证所需的安全参数输入的列表:

范围 描述 需要
api_id Chargify分配的您的API密钥/ ID(请参阅 “获取凭证”)。 是的
timestamp 请求时间,以自1970年1月1日00:00:00 UTC(即Unix时间)以来经过的整数秒数表示。如果提供时间戳,它将在响应参数中反映给您,并且如果该请求早于某个特定阈值,则可以用于使该请求无效。 不包括毫秒。 (看到 时间戳请求)  
nonce 一个字符串(最多40个字符),用于唯一标识请求。当由时间戳记和您的API ID限定范围时,随机数必须唯一。提供随机数后,它会在响应参数中反映给您,并且如果该请求与先前在同一时间戳中使用的值匹配,则可以用于使请求无效(查看现时值) 是的
data URL查询字符串格式的字符串,可用于通过表单将防篡改数据传输到Chargify(请参阅安全数据)。请注意,在将其嵌入表单之前,您将需要转义该字符串中的所有HTML字符。  
签名 A verification signature based on the other 4 secure inputs and the shared api_secret for the API User (见签名计算) 是的

这些安全输入应通过嵌套在secure参数内的Direct端点发送到Chargify。例如,以下表单演示了如何使用隐藏的表单输入来提交所有5个安全输入:

<form method="post" action="//api.ikvrej.icu/api/v2/signups">
  <input type="hidden" name="secure[api_id]"    value="1234" />
  <input type="hidden" name="secure[timestamp]" value="1301148971" />
  <input type="hidden" name="secure[nonce]"     value="5b2763d0-39e1-012e-858d-64b9e8d3946e" />
  <input type="hidden" name="secure[data]"      value="one=uno&amp;two=dos" />
  <input type="hidden" name="secure[signature]" value="412951d095ebbb3800dfb2126fe5073d2ab6c260" />
</form>

签名计算

此方法中的身份验证值为 签名. The signature is the hexadecimal representation of a computed Hash-based Message Authentication Code, using SHA-1 as the cryptographic function (HMAC-SHA1). The secret for the function is the API shared secret (api_secret) issued to the API user by Chargify. The message for the function is the concatenation of the api_id, timestamp, nonce, and data parameters. Any optional parameter that is not given is converted to an empty string.

HMAC-SHA1(api_secret, api_id+timestamp+nonce+data)

有关更多信息,请参见 直接充电.

重复预防

To avoid double charges, we strongly recommend that you supply a uniqueness_token in your request. (The value can be the same as the nonce; it has a similar function.) This will allow the system to fail fast if a second request arrives before the first has completed. Without the uniqueness_token, even if you supply a timestamp and nonce, you 可能 根据请求的时间,偶尔会看到重复的内容。

<form method="post" action="//api.ikvrej.icu/api/v2/signups">
  <input type="hidden" name="uniqueness_token"    value="5b2763d0-39e1-012e-858d-64b9e8d3946e" />
  ...

您可以在 重复预防 documentation.

通过REST充电

您需要拨打的最常见的电话之一是找回先前的Chargify Direct电话以确定它是否成功。对于此调用的基本http身份验证,您可以使用API​​密钥/ ID作为 用户名 和API密码作为 密码 ,如下所示:

curl -u <API_ID>:<API_PASSWORD> -H Accept:application/json -X GET //api.ikvrej.icu/api/v2/calls/<CALL_ID>.json

取得凭证

For both API and Chargify Direct credentials, your API key can be generated from the “Integrations” tab of your site dashboard.

For API, your basic http authentication username is your API key while the password is always “X”.

对于Chargify Direct凭据,将为您提供三个值:

  1. API密钥/ ID
  2. API密码
  3. API秘密

对于透明重定向(将值直接发布到Chargify),您将使用API​​密钥/ ID和API机密。该API密码保留供在Chargify Direct调用中使用(类似于“ call”端点以验证上一次提交是否成功)。

注意:共享的机密和密码只能通过管理界面共享一次,因此将其复制下来以备将来使用非常重要,因为创建凭据后将无法检索它们。

故障排除:无法连接

如果无法连接,则问题通常出在您使用的是旧版/不受支持的SSL或TLS版本。在这种情况下,Chargify会简单地断开连接,并且您收到的错误消息可能是不明确的。

以下是一些已报告的常见错误消息:

  • 基础连接已关闭:发送时发生意外错误。
  • 认证方式 failed because the remote party has closed the transport stream.

请查看有关 升级通知 为了纠正问题。

Troubleshooting: Request blocked with 422 response code

Chargify will block requests and return a 422 response code and body with errors if your account is in one of a few certain scenarios. You can read more about this in our API文档