Я интегрирую платеж PayPal в разрабатываемое веб-приложение.Мне нужно создать авторизацию для транзакции, в которой я блокирую определенную сумму (скажем, 20 €), затем в конце транзакции я завершаю транзакцию и беру только те деньги, которые мне нужны (поэтому, если транзакцияокончательная стоимость составляет 15 €, я возвращаю 5 € пользователю.)
Этот рабочий процесс в настоящее время работает с учетной записью песочницы, но теперь я хотел протестировать некоторые ошибки, которые могут возникнуть при запуске новой транзакции, напримернапример, когда у пользователя нет достаточной суммы денег (20 €), которую мне нужно заблокировать, чтобы начать новую транзакцию.
Я нашел эту документацию (https://developer.paypal.com/docs/api/test-values/#invoke-negative-testing), где онауказано To trigger the SENDER_EMAIL_UNCONFIRMED simulation response, set the items[0]/note value to ERRPYO002 in the POST v1/payments/payouts call.
со следующим кодом:
curl -X POST https://api.sandbox.paypal.com/v1/payments/payouts \
-H "content-type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
"sender_batch_header": {
"sender_batch_id": "1524086406556",
"email_subject": "This email is related to simulation"
},
"items": [
{
"recipient_type": "EMAIL",
"receiver": "payouts-simulator-receiver@paypal.com",
"note": "ERRPYO002",
"sender_item_id": "15240864065560",
"amount": {
"currency": "USD",
"value": "1.00"
}
}]
}'
Поэтому я предполагаю, что мне нужно передать код ошибки (например, ERRPYO002
) в поле note
в моем теле запроса.
Я использую checkout sdk, и мой js-код в настоящее время выглядит следующим образом:
const buttonOpts = {
env: 'sandbox',
client: { production: $scope.key, sandbox: $scope.key },
style: {
label: 'paypal',
size: 'medium',
shape: 'rect',
color: 'blue',
tagline: false,
},
validate: actions => {
// stuff
},
payment: (data, actions) => {
return actions.payment.create({
intent: 'authorize',
payer: { payment_method: 'paypal' },
transactions: [
{
amount: {
total: '20.00',
currency: 'EUR',
},
description: 'My description',
},
],
});
},
onAuthorize: data => {
// Sending data.paymentID and data.payerID to my backend to confirm the new transaction
},
onCancel: () => {
// stuff
},
onError: err => {
console.log(err);
// stuff
},
};
Paypal.Button.render(buttonOpts, '#paypal-button');
Я предполагаю, что мне нужно передать код, необходимый для имитации ошибки, моему actions.payment.create
параметру объекта, но я не нашел, где именно, поскольку мой рабочий процесс отличается от того, что в документах.
Это коды, которые PayPal позволяет вам использовать для тестирования ошибок: https://developer.paypal.com/docs/payouts/integrate/test-payouts/#test-values
Любая помощь приветствуется.Большое спасибо.