Я тестирую обработку платежей с помощью Google Pay , и использую для этого пакет pay.
Я сделал простое приложение и установил его для тестовой среды, теперь у меня есть работающая кнопка Google Pay, которая показывает лист для заполнения информацией о карте.
Я использую этот код кнопки:
GooglePayButton(
paymentConfigurationAsset:
'default_payment_profile_google_pay.json',
paymentItems: _paymentItems,
type: GooglePayButtonType.buy,
margin: const EdgeInsets.only(top: 15.0),
onPaymentResult: (Map<String, dynamic> paymentResult) {
print(paymentResult); // The question starts here
},
loadingIndicator: const Center(
child: CircularProgressIndicator(),
),
),
и default_payment_profile_google_pay.json
содержит это:
{
"provider": "google_pay",
"data": {
"environment": "TEST",
"apiVersion": 2,
"apiVersionMinor": 0,
"allowedPaymentMethods": [
{
"type": "CARD",
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "example",
"gatewayMerchantId": "gatewayMerchantId"
}
},
"parameters": {
"allowedCardNetworks": ["VISA", "MASTERCARD"],
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"billingAddressRequired": true,
"billingAddressParameters": {
"format": "FULL",
"phoneNumberRequired": true
}
}
}
],
"merchantInfo": {
"merchantId": "01234567890123456789",
"merchantName": "Example Merchant Name"
},
"transactionInfo": {
"countryCode": "US",
"currencyCode": "USD"
}
}
}
метод onPaymentResult
напечатает ответ, вызванный после оплаты, это Map<String, dynamic>
.
Я использую тестовый набор, предоставленный Google Pay, после успешной оплаты ответ такой:
{
"apiVersionMinor": "0",
"apiVersion": "2",
"paymentMethodData": {
"description": "Mastercard •••• 4444",
"tokenizationData": {
"type": "PAYMENT_GATEWAY",
"token": "examplePaymentMethodToken"
},
"type": "CARD",
"info": {
"cardNetwork": "MASTERCARD",
"cardDetails": "4444",
"billingAddress": {
"phoneNumber": "+1 650-555-5555",
"address3": "",
"sortingCode": "",
"address2": "",
"countryCode": "US",
"address1": "1600 Amphitheatre Parkway",
"postalCode": "94043",
"name": "Card Holder Name",
"locality": "Mountain View",
"administrativeArea": "CA"
}
}
}
}
Мой вопрос:
Что мне теперь делать, чтобы завершить процесс оплаты, где я должен видеть платежи или управлять ими?
У меня нет опыта работы с платежами, поэтому любая информация или способы того, что я должен делать с этого момента, действительно приветствуются.
Оттуда вы должны использовать платежный процессор для обработки вашего платежа. Хорошим примером является Stripe. Вы можете сделать это с помощью этого плагина flutter_stripe, а затем использовать что-то вроде этого (из описания плагина)
Future<void> onGooglePayResult(paymentResult) async {
final response = await fetchPaymentIntentClientSecret();
final clientSecret = response['clientSecret'];
final token = paymentResult['paymentMethodData']['tokenizationData']['token'];
final tokenJson = Map.castFrom(json.decode(token));
final params = PaymentMethodParams.cardFromToken(
token: tokenJson['id'],
);
// Confirm Google pay payment method
await Stripe.instance.confirmPayment(
clientSecret,
params,
);
}
Конечно, вы должны получить учетную запись Stripe и так далее.