Форма оплаты и вебхук платежной системы paypal для проектов L2
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
if ( !( $char = $db->fetch( "SELECT obj_Id FROM characters WHERE char_name = ?", [ $invoice[1] ] ) ) )
die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
$count = $response['amount']['value'] / ITEM_PRICE;
$sql = "INSERT INTO `usersettings` ( `payment_id`, `owner_id`, `item_id`, `count`, `payment_status`, `description` ) VALUES ( ?, ?, ?, ?, '0', 'Paypal payments' )";
$db->prepareAndExecute( $sql, [ $invoice[2], $char['obj_Id'], ITEM_ID, $count ] );
Есть таблица там username и idlxtopxm, примерно так
PHP:if ( $user = $db->fetch( "SELECT userid FROM users WHERE useraccount = ?", [ $invoice[1] ] ) ) { $db->prepareAndExecute( "UPDATE usersettings SET balance = balance + ? WHERE userid = ?", [ $response['amount']['value'], $user['userid'] ] ); }
if ( $isPaymentCaptureCompleted && isset( $response['status'] ) && $response['status'] == 'COMPLETED' )
{
require 'db.class.php';
$invoice = explode( '|', $response['invoice_id'] );
$db = new DB( $config[ $invoice[0] ] );
if ( $user = $db->fetch( "SELECT id FROM account WHERE username = ?", [ $invoice[1] ] ) )
die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
$count = $response['amount']['value'] / ITEM_PRICE;
$db->prepareAndExecute( "UPDATE usersettings SET balance = balance + ? WHERE userid = ?", [ $response['amount']['value'], $user['id'] ] );
$db->prepareAndExecute( $sql, [ $invoice[2], $char['obj_Id'], ITEM_ID, $count ] );
}
if ( !$db->fetch( "SELECT id FROM account WHERE username = ?", [ $char_name ] ) )
die( json_encode( [ 'error' => [ 'code' => 403, 'message' => 'Нет аккаунта с ником: ' . $char_name ] ] ) );
$amount = $count * ITEM_PRICE;
$baseUrl = API_MODE == 'LIVE'
? 'https://api-m.paypal.com'
: 'https://api-m.sandbox.paypal.com';
$fields = [
'intent' => 'CAPTURE',
'purchase_units' => [
[
'invoice_id' => $server_id . '|' . $char_name . '|' . time(),
'amount' => [
'value' => $amount,
'currency_code' => CURRENCY,
/*'breakdown' => [
'item_total' => [
'currency_code' => CURRENCY,
'value' => $amount
]
]*/
],
'payment_instruction' => [
'disbursement_mode' => 'INSTANT'
]
]
],
на условие внимание обратить) если запись в таблице найдена то die (остановка выполнения скрипта)if ( $user = $db->fetch( "SELECT id FROM account WHERE username = ?", [ $invoice[1] ] ) ) die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
После оплаты , не изменяет баланс который я купил. (ща в бд 0 монет, куплю 1000 шт но в бд не изменило(на условие внимание обратить) если запись в таблице найдена то die (остановка выполнения скрипта)
ну ебатькапать, как еще объяснить тоПосле оплаты , не изменяет баланс который я купил. (ща в бд 0 монет, куплю 1000 шт но в бд не изменило(
if ( $user = $db->fetch( "SELECT id FROM account WHERE username = ?", [ $invoice[1] ] ) )
die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
if ( $user = $db->fetch( "SELECT id FROM account WHERE username = ?", [ $invoice[1] ] ) )
{
$db->prepareAndExecute( "UPDATE usersettings SET balance = balance + ? WHERE userid = ?", [ $response['amount']['value'], $user['id'] ] );
}
else
{
die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
}
if ( !( $user = $db->fetch( "SELECT id FROM account WHERE username = ?", [ $invoice[1] ] ) ) )
{
die( json_encode( [ 'error' => 'Character name ' . $invoice[1] . ' not found!' ] ) );
}
$db->prepareAndExecute( "UPDATE usersettings SET balance = balance + ? WHERE userid = ?", [ $response['amount']['value'], $user['id'] ] );
статус транзакции какой? посмотреть можно тутне так и не так баланс не изменило
статус транзакции какой? посмотреть можно тутВы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Status | Event type | Event ID | Date | Summary | |
---|---|---|---|---|---|
Payment capture completed | WH-3XU21542U1346204U-04S704975H726032N | 05 Sep 2022 12:22:23 | Payment completed for $ 1.0 USD |
сомневаюсь, по скольку в настройках дашборда палки нужно указать урл вебхука. По завершению платежа апи палки должно отправить данные платежа на этот самый вебхук.а вообще тест через локалхост можна ?
logging( "request:\n" . print_r( $request, true ) );
logging( "response:\n" . print_r( $response, true ) );
а где в моих примерах SQL-запрос обновления записи таблицы usersetting по username?таблица account по username делаем покупку но в usersetting таблицы уже идет не username а UserId(account таблицы id)
тогда почему не добавляет?а где в моих примерах SQL-запрос обновления записи таблицы usersetting по username?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?