如何将stripe与flutter前端和php后端集成?

问题描述 投票:0回答:1

我想使用我自己的付款表单来使用 flutter 前端和 php 后端处理付款。将使用以下字段创建表单:金额、持卡人姓名、卡号、到期日、CVV 和 flutter 中的提交按钮。我不想使用 stripe 的付款方式。

我已经创建了一个带有 stripe 的帐户,并且拥有可发布的密钥和秘密密钥。 (测试帐户)

现在,当我在填写表单后单击提交按钮时,我想创建一个条带令牌(使用可发布密钥)并将令牌详细信息发送到我的 php 后端,然后该后端将处理付款并返回/成功/错误代码。 php后端将使用stripe提供的密钥。

可以这样做吗?我在我们的 Web 应用程序中使用 stripe 的 javascript 和 php 库来实现这一点。

如果您能指导我如何做到这一点,那将会有很大帮助。这是使用自己的 flutter / php 付款表单的正确方法吗

php flutter stripe-payments token
1个回答
0
投票

是的,使用 stripe_ payment 包或类似的包。 例如:

import 'package:flutter/material.dart';
import 'package:stripe_payment/stripe_payment.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentPage(),
    );
  }
}

class PaymentPage extends StatefulWidget {
  @override
  _PaymentPageState createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> {
  @override
  void initState() {
    super.initState();
    // Stripe setup
    StripePayment.setOptions(
      StripeOptions(
        publishableKey: "your_publishable_key", // Publishable key
        androidPayMode: 'test', // For the test environment
      ),
    );
  }

  void processPayment(String amount) async {
    // Create a payment token
    StripePayment.paymentRequestWithCardForm(
      CardFormPaymentRequest(),
    ).then((paymentMethod) {
      // Send token to server
      sendTokenToServer(paymentMethod.id, amount);
    }).catchError((e) {
      print("Error: $e");
    });
  }

  void sendTokenToServer(String token, String amount) async {
    final response = await http.post(
      Uri.parse('https://your-backend-url.com/process_payment.php'),
      body: {
        'token': token,
        'amount': amount,
      },
    );
    if (response.statusCode == 200) {
      print("Payment Successful!");
    } else {
      print("Payment Failed!");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Payment")),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            processPayment("5000"); // Payment amount
          },
          child: Text("Pay Now"),
        ),
      ),
    );
  }
}

在 PHP 和 process_ payment.php 中的代码:

<?php
require 'vendor/autoload.php';

\Stripe\Stripe::setApiKey('your_secret_key'); // secret key

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $token = $_POST['token'];
    $amount = $_POST['amount']; // Amount in cents (eg $50 -> 5000)

    try {
        // Create payment
        $charge = \Stripe\Charge::create([
            'amount' => $amount,
            'currency' => 'usd',
            'description' => 'Test Payment',
            'source' => $token,
        ]);

        echo json_encode(['status' => 'success', 'charge' => $charge]);
    } catch (\Stripe\Exception\ApiErrorException $e) {
        echo json_encode(['status' => 'error', 'message' => $e-            
>getMessage()]);
    }
}
?>

使用官方的 Stripe SDK for PHP。

© www.soinside.com 2019 - 2024. All rights reserved.