regular-payment
POST /api/{team}/gateway/regular-payment
3D Secure adımı olmadan karttan çekim yapar. Yanıt ödemenin sonucudur: result.successful: true ödemenin başarıyla tamamlandığını gösterir. Ödeme hesabının sağlayıcısının bu ödeme türünü desteklemesi gerekir. Akış: Regular Ödeme rehberi.
Kimlik doğrulama
X-Api-Key, X-Signature, Content-Type: application/json. Ayrıntılar: Kimlik Doğrulama ve İmza.
İstek
secure-payment ile aynıdır; tek fark transaction.callback_url alanının olmamasıdır.
{
"transaction": {
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10231",
"amount": "450.00",
"installment_number": 1,
"ip": "85.105.10.20"
},
"customer": {
"channel_reference": "musteri-88",
"firstname": "Ahmet",
"lastname": "Yılmaz",
"phone": "05551112233",
"address": "Kızılırmak Mah. Dumlupınar Blv. No:3",
"district": "Çankaya",
"province": "Ankara",
"country": "Türkiye"
},
"card": {
"holder_name": "AHMET YILMAZ",
"number": "5400360000000003",
"security_code": "000",
"expiry_month": "12",
"expiry_year": "2030"
}
}
Alan tabloları: transaction, customer, card.
SDK örnekleri
- PHP
- Node.js
- Python
- Java
- cURL
use Gurmehub\Odemehub\Request\{Card, Customer, RegularPayment};
$payment = $client->regularPayment(new RegularPayment(
channelReference: 'SIP-10231',
amount: '450.00',
installmentNumber: 1,
ip: $_SERVER['REMOTE_ADDR'],
customer: $customer, // Customer nesnesi, bkz. secure-payment
card: new Card(
holderName: 'AHMET YILMAZ',
number: '5400360000000003',
securityCode: '000',
expiryMonth: '12',
expiryYear: '2030',
),
));
if ($payment->result->successful) {
// $payment->transactionToken
} else {
// $payment->result->message
}
const payment = await client.regularPayment({
channelReference: 'SIP-10231',
amount: '450.00',
installmentNumber: 1,
ip: req.ip,
customer, // bkz. secure-payment
card: {
holderName: 'AHMET YILMAZ',
number: '5400360000000003',
securityCode: '000',
expiryMonth: '12',
expiryYear: '2030',
},
});
if (payment.result.successful) {
// payment.transactionToken
} else {
// payment.result.message
}
from odemehub.request import Card, RegularPayment
payment = client.regular_payment(RegularPayment(
channel_reference="SIP-10231",
amount="450.00",
installment_number=1,
ip=request.remote_addr,
customer=customer, # Customer nesnesi, bkz. secure-payment
card=Card(
holder_name="AHMET YILMAZ",
number="5400360000000003",
security_code="000",
expiry_month="12",
expiry_year="2030",
),
))
if payment.result.successful:
... # payment.transaction_token
else:
... # payment.result.message
import com.odemehub.request.Card;
import com.odemehub.request.RegularPayment;
var payment = client.regularPayment(RegularPayment.builder()
.channelReference("SIP-10231")
.amount("450.00")
.installmentNumber(1)
.ip(request.getRemoteAddr())
.customer(customer) // Customer nesnesi, bkz. secure-payment
.card(Card.builder()
.holderName("AHMET YILMAZ")
.number("5400360000000003")
.securityCode("000")
.expiryMonth("12")
.expiryYear("2030")
.build())
.build());
if (payment.getResult().isSuccessful()) {
// payment.getTransactionToken()
} else {
// payment.getResult().getMessage()
}
BODY='{"transaction":{"channel_token":"6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14","channel_reference":"SIP-10231","amount":"450.00","installment_number":1,"ip":"85.105.10.20"},"customer":{"channel_reference":"musteri-88","firstname":"Ahmet","lastname":"Yılmaz","email":"[email protected]","phone":"05551112233","address":"Kızılırmak Mah. Dumlupınar Blv. No:3","district":"Çankaya","province":"Ankara","country":"Türkiye"},"card":{"holder_name":"AHMET YILMAZ","number":"5400360000000003","security_code":"000","expiry_month":"12","expiry_year":"2030"}}'
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$ODEMEHUB_API_SECRET" | sed 's/^.* //')
curl -X POST "https://odeme.gurmehub.com/api/$ODEMEHUB_TEAM/gateway/regular-payment" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Api-Key: $ODEMEHUB_API_KEY" \
-H "X-Signature: $SIGNATURE" \
--data-raw "$BODY"
Yanıt
{
"result": {
"successful": true,
"message": null
},
"transaction": {
"token": "0b8f6c2d-3e41-4a7b-9c5d-1e2f3a4b5c6d",
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "SIP-10231"
},
"customer": {
"channel_reference": "musteri-88"
},
"conversion": null
}
| Alan | Tip | Açıklama |
|---|---|---|
result.successful | boolean | true: ödeme başarıyla tamamlandı. false: ödeme alınamadı. |
result.message | string | null | successful false ise nedeni. |
transaction.token | string | Ödemenin token'ı. İade, iptal ve sorguda kullanılır. |
transaction.channel_token | string | Ödemenin kanalı. |
transaction.channel_reference | string | Gönderdiğiniz channel_reference. |
customer.channel_reference | string | Müşterinin channel_reference değeri. |
conversion | object | null | Kur çevirisi uygulandıysa {amount, currency, rate}; değilse null. |
saved_card | object | null | Yalnızca card.should_save: true gönderildiyse bulunur. Ödeme başarılı ve kart saklandıysa kart nesnesi, değilse null. |
HTTP durum kodları
| Kod | Durum |
|---|---|
200 | İstek işlendi; sonuç result.successful içinde. |
401 | API anahtarı ya da imza geçersiz. |
403 | Çalışma alanı işlem yapamıyor. |
422 | Doğrulama hatası. |
Hatalar
secure-payment hataları geçerlidir. transaction.payment_provider_token alanındaki destek mesajı bu uç için Bu ödeme hesabı Güvenlik Doğrulamasız ödeme desteklemiyor. şeklindedir.