stripe支付

 使用第一个示例

1、示例中的PRICE_ID需要去Stripe控制台->产品目录创建产品

1、 添加产品

2、点击查看创建的产品详情

 4、这个API ID就是demo中的PRICE_ID

注意:需要注意的是,测试模式和生产模式中的 $stripeSecretKey 需要对应上。简而言之就是不能生产模式的产品API ID 对应测试模式的密钥

 5、示例中的密钥从,Stripe控制台->开发人员->API密钥->密钥  获取

 2、下载示例:

 1、打开项目查看README.md

2、替换public下checkout.php中的配置

复制代码

 1 $checkout_session = \Stripe\Checkout\Session::create([
 2   'line_items' => [[
 3     # Provide the exact Price ID (e.g. pr_1234) of the product you want to sell
 4     'price' => '对应产品目录的API ID',
 5     'quantity' => 10, // 数量默认为1,我这边产品单价是1,
 6   ]],
 7   'mode' => 'payment',  // 结账模式 付款
 8   'success_url' => $YOUR_DOMAIN . '/success.html', // 支付成功跳转的页面
 9   'cancel_url' => $YOUR_DOMAIN . '/cancel.html',     // 取消支付跳转的页面
10   'automatic_tax' => [
11     'enabled' => true,
12   ],
13 ]);

复制代码

3、如果要传递自己的自定义参数metadata传递

复制代码

 1 $checkout_session = \Stripe\Checkout\Session::create([
 2   'line_items' => [[
 3     # Provide the exact Price ID (e.g. pr_1234) of the product you want to sell
 4     'price' => '对应产品目录的API ID',
 5     'quantity' => 10, // 数量默认为1,我这边产品单价是1,
 6   ]],
 7   'mode' => 'payment',  // 结账模式 付款
 8   'success_url' => $YOUR_DOMAIN . '/success.html', // 支付成功跳转的页面
 9   'cancel_url' => $YOUR_DOMAIN . '/cancel.html',     // 取消支付跳转的页面
10   'automatic_tax' => [
11     'enabled' => true,
12   ],
13   // 元数据
14    'metadata' => [
15         'order_id' => 'you order id',
16          'product_name' => 'prodct name'
17     ]
18 ]);

复制代码

 5、浏览器访问 http://127.0.0.1:4242/checkout.html

6、$20是页面展示的静态金额这边不做详解

 7、拉取支付,测试模式下,可以用Stripe提供的测试卡号

8、支付成功之后,需要Stripe设置WebHook端点来监听事件,

3、Stripe->开发人员->WebHook

1、创建成功之后,点击进去获取密钥签名(用来验证接收的事件的合法性)

复制代码

 1         // 回调端点密钥,从webhook获取
 2         $endpointSecret = '端点密钥';
 3         // 获取参数
 4         $payload = @file_get_contents('php://input');
 5         $sigHeader = $_SERVER['HTTP_STRIPE_SIGNATURE'];
 6         // 签名验证
 7         try {
 8             $event = Webhook::constructEvent(
 9                 $payload,
10                 $sigHeader,
11                 $endpointSecret
12             );
13         } catch (SignatureVerificationException $e) {
14             // 签名验证失败
15             log_message('签名验证失败', 'log', 'pay');
16             http_response_code(400);
17             exit();
18         }
19         // 订单处理
20         if ($event->type != 'checkout.session.completed') {
21             log_message('返回的type是:' . $event->type, 'log', 'pay');
22             http_response_code(400);
23             exit();
24         }
25   
26         // todo 此处处理成功之后的业务逻辑
27         
28         // 处理成功返回200状态码
29         http_response_code(200);
30         

复制代码

3、WebHook 端点返回数据示例:

事件数据中,返回的金额是x100的如果要对订单做比对,记得除于100

复制代码

{
  "id": "evt_你看不见",
  "object": "event",
  "api_version": "2023-10-16",
  "created": 1709170566,
  "data": {
    "object": {
      "id": "cs_test_你看不见",
      "object": "checkout.session",
      "after_expiration": null,
      "allow_promotion_codes": null,
      "amount_subtotal": 1000,
      "amount_total": 1000,
      "automatic_tax": {
        "enabled": true,
        "liability": {
          "type": "self"
        },
        "status": "complete"
      },
      "billing_address_collection": null,
      "cancel_url": "http://localhost:4242/cancel.html",
      "client_reference_id": null,
      "client_secret": null,
      "consent": null,
      "consent_collection": null,
      "created": 1709170549,
      "currency": "cny",
      "currency_conversion": null,
      "custom_fields": [
      ],
      "custom_text": {
        "after_submit": null,
        "shipping_address": null,
        "submit": null,
        "terms_of_service_acceptance": null
      },
      "customer": null,
      "customer_creation": "if_required",
      "customer_details": {
        "address": {
          "city": null,
          "country": "CN",
          "line1": null,
          "line2": null,
          "postal_code": null,
          "state": null
        },
        "email": "你看不见",
        "name": "你看不见",
        "phone": null,
        "tax_exempt": "none",
        "tax_ids": [
        ]
      },
      "customer_email": null,
      "expires_at": 1709256949,
      "invoice": null,
      "invoice_creation": {
        "enabled": false,
        "invoice_data": {
          "account_tax_ids": null,
          "custom_fields": null,
          "description": null,
          "footer": null,
          "issuer": null,
          "metadata": {
          },
          "rendering_options": null
        }
      },
      "livemode": false,
      "locale": null,
      "metadata": {
        "order_id": "you order id",
        "product_name": "prodct name"
      },
      "mode": "payment",
      "payment_intent": "pi_你看不见",
      "payment_link": null,
      "payment_method_collection": "if_required",
      "payment_method_configuration_details": {
        "id": "pmc_你看不见",
        "parent": null
      },
      "payment_method_options": {
      },
      "payment_method_types": [
        "card",
        "alipay",
        "wechat_pay",
        "link"
      ],
      "payment_status": "paid",
      "phone_number_collection": {
        "enabled": false
      },
      "recovered_from": null,
      "setup_intent": null,
      "shipping_address_collection": null,
      "shipping_cost": null,
      "shipping_details": null,
      "shipping_options": [
      ],
      "status": "complete",
      "submit_type": null,
      "subscription": null,
      "success_url": "http://localhost:4242/success.html",
      "total_details": {
        "amount_discount": 0,
        "amount_shipping": 0,
        "amount_tax": 0
      },
      "ui_mode": "hosted",
      "url": null
    }
  },
  "livemode": false,
  "pending_webhooks": 1,
  "request": {
    "id": null,
    "idempotency_key": null
  },
  "type": "checkout.session.completed"
}

复制代码

注意:如果使用Custom payment flow这个示例的话,webhook需要侦听的是 payment_intent.succeeded 事件端点,Custom payment flow示例可以直接定义,不需要创建产品API ID

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Stripe支付的Java开发可以通过Stripe提供的Java库来实现。使用Stripe Java库,可以使用Stripe的API进行支付操作。以下是Stripe支付的Java开发步骤: 1. 引入Stripe Java库:首先需要在Java项目中引入Stripe的Java库。可以通过在项目中添加Stripe依赖项来实现。具体的引入方法可以参考Stripe官方文档。 2. 设置API密钥:在进行Stripe支付之前,需要设置API密钥。可以使用Stripe.apiKey = "YOUR_API_KEY"来设置API密钥。YOUR_API_KEY是从Stripe平台获取的密钥。 3. 创建产品:使用Stripe的Product.create()方法可以创建产品。可以使用Map<String, Object>对象来设置产品的属性,例如名称和图片等。 4. 创建支付:使用Stripe的PaymentIntent.create()方法可以创建支付意图。可以使用Map<String, Object>对象来设置支付意图的属性,例如支付金额、货币、支付方式等。还可以设置自定义参数和回调地址等。 5. 处理支付结果:根据Stripe的返回结果,可以处理支付的成功或失败情况。可以使用回调函数或跳转页面来处理支付结果。 需要注意的是,以上步骤是针对Stripe Checkout支付方式的Java开发。对于其他Stripe支付方式,例如Charges API和Payment Intents API,可以根据具体的API文档进行相应的开发。 请注意,在实际开发中,还需要处理异常情况、进行错误处理和安全性控制等方面的考虑。可以参考Stripe官方文档和示例代码来进行更详细的开发实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *3* *4* [Stripe API支付(java)多方支付](https://blog.csdn.net/YoungHK/article/details/127488551)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值