能否使用CFHTTP获取Stripe的Session信息?求解析示例
解析Stripe返回内容的快速方法(CFHTTP示例)
核心思路
Stripe返回的内容通常是JSON格式,关键步骤就是:用CFHTTP获取响应 → 把JSON字符串转成ColdFusion可直接操作的结构体/数组。
示例1:通过Session ID获取并解析Stripe会话详情
针对你URL里带的session_id,可以直接调用Stripe API获取会话数据,完整代码如下:
<!--- 从URL提取session_id ---> <cfset sessionId = url.session_id> <!--- 替换成你的Stripe测试密钥 ---> <cfset stripeSecretKey = "sk_test_你的测试密钥"> <!--- 用CFHTTP请求Stripe会话详情API ---> <cfhttp method="GET" url="https://api.stripe.com/v1/checkout/sessions/#sessionId#" result="stripeResponse" throwonerror="false" > <cfhttpparam type="header" name="Authorization" value="Bearer #stripeSecretKey#"> </cfhttp> <!--- 处理请求结果 ---> <cfif stripeResponse.statusCode eq "200 OK"> <!--- 将JSON响应转为ColdFusion结构体 ---> <cfset sessionData = deserializeJSON(stripeResponse.fileContent)> <!--- 示例:输出关键数据 ---> <h3>会话核心信息</h3> <ul> <li>会话ID: #sessionData.id#</li> <li>客户邮箱: #sessionData.customer_details.email#</li> <li>支付状态: #sessionData.payment_status#</li> <li>总金额: #sessionData.amount_total# (单位:分,需除以100转换为实际币种单位)</li> </ul> <cfelse> <!--- 请求失败时解析错误信息 ---> <cfset errorData = deserializeJSON(stripeResponse.fileContent)> <p>请求出错: #errorData.error.message#</p> </cfif>
示例2:直接解析已获取的Stripe返回内容
如果你已经拿到了本地测试时Stripe返回的JSON文本,可直接用deserializeJSON解析:
<!--- 假设这是你本地测试拿到的Stripe返回JSON内容 ---> <cfset stripeJson = '{ "id": "cs_test_xxx", "object": "checkout.session", "customer_details": {"email": "test@example.com"}, "payment_status": "paid", "amount_total": 1000 }'> <!--- 转为ColdFusion结构体 ---> <cfset sessionData = deserializeJSON(stripeJson)> <!--- 直接访问数据 ---> <p>当前支付状态: #sessionData.payment_status#</p> <p>客户邮箱: #sessionData.customer_details.email#</p>
注意事项
- 密钥安全: 测试密钥和生产密钥要分开存放,绝对不能把密钥暴露在前端或公开代码中。
- 金额转换: Stripe返回的金额单位是分,需要除以100得到实际支付的元(或对应币种的单位)。
- 异常处理: 务必检查HTTP状态码,Stripe会在请求失败时返回包含错误信息的JSON。
内容的提问来源于stack exchange,提问作者Thomas Nichols
相关产品推荐
相关产品推荐

