В моем приложении реализована экспресс-проверка PayPal, и все работало без сбоев, пока мне не пришлось менять свои учетные данные сегодня.Для тестирования я использовал свою учетную запись PayPal, но теперь она должна быть переключена на учетную запись компании, поэтому я создал приложение REST и поменял местами ключи отладки и производства.Внезапно, когда я пытаюсь заплатить, я получаю ppxo_no_token_passed_to_payment
, если я переключаюсь на свой старый открытый ключ, он все еще работает.Я подозреваю, что это проблема в PayPal, где мне нужно авторизовать или включить приложение или что-то, но, к сожалению, я не могу вспомнить ...
Вот код, о котором идет речь, но я действительно считаю, что нет ничего плохогос этим, как я уже сказал, если я добавлю свой старый открытый ключ, он все равно будет работать нормально.
getPaypalButton(container: any, paypal: any) {
return paypal.Button.render({
env: __DEV__ ? "sandbox" : "production",
style: this.style(),
// Pass the client ids to use to create your transaction on sandbox and production environments
client: {
// from https://developer.paypal.com/developer/applications/
sandbox: env.payments.paypal.sandbox,
production: env.payments.paypal.production
},
// Pass the payment details for your transaction
// See https://developer.paypal.com/docs/api/payments/#payment_create for the expected json parameters
payment: this.payment.bind(this),
// Display a "Pay Now" button rather than a "Continue" button
commit: true,
// Pass a function to be called when the customer completes the payment
onAuthorize: this.authorize.bind(this),
// Pass a function to be called when the customer cancels the payment
onCancel: this.cancel.bind(this)
}, container)
style() {
return {
label: 'paypal',
size: 'responsive', // small | medium | large | responsive
shape: 'rect', // pill | rect
color: 'blue', // gold | blue | silver | black
tagline: false
};
}
payment(data: any, actions: any) {
return actions.payment.create({
transactions: [
{
amount: {
total: i18n.currencies.toHumanReadable(this.moneyControl.internalInput.value, "EUR").toFixed(2),
currency: "EUR"
}
}
]
}).catch((error: any) => {
if (!this.moneyControl.internalInput.value) {
this.moneyControl.displayError("validation.required");
} else {
this.moneyControl.displayError("deposit.paypalerror");
}
});
}
authorize(data: any, actions: any) {
return web.request("/paypal", {
method: "POST",
data: {
token: data.paymentToken,
payment_id: data.paymentID,
payer_id: data.payerID
}
}).then((response: any) => {
console.log('The payment was completed!', response);
this.completed();
}).catch(function (error) {
console.log(error);
});
}
cancel(data: any) {
this.moneyControl.displayError("deposit.paypalcancel");
}
Следует отметить, что сгенерированная ошибка говорит env: "production"
, однако __DEV__
равно true
.
country: "US"
env: "production"
host: "192.168.0.100:8080"
lang: "en"
pageID: ...
path: "/"
prev_corr_ids: ""
referer: "192.168.0.100:8080"
timestamp: 1528128652378
uid: ...
ver: "4.0.199"
windowID: ...