我想使用我自己的付款表单来使用 flutter 前端和 php 后端处理付款。将使用以下字段创建表单:金额、持卡人姓名、卡号、到期日、CVV 和 flutter 中的提交按钮。我不想使用 stripe 的付款方式。
我已经创建了一个带有 stripe 的帐户,并且拥有可发布的密钥和秘密密钥。 (测试帐户)
现在,当我在填写表单后单击提交按钮时,我想创建一个条带令牌(使用可发布密钥)并将令牌详细信息发送到我的 php 后端,然后该后端将处理付款并返回/成功/错误代码。 php后端将使用stripe提供的密钥。
可以这样做吗?我在我们的 Web 应用程序中使用 stripe 的 javascript 和 php 库来实现这一点。
如果您能指导我如何做到这一点,那将会有很大帮助。这是使用自己的 flutter / php 付款表单的正确方法吗
是的,使用 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。