Hi! I have a few questions agree with the payment API. The first one is it allowed just to check a credit card(if it is valid or not) with rapyd API if I have an amount 0? For sure, our service will have a period without charge, but we’ll need to validate credit cards, for future subscriptions. Is rapyd allow this?
And The second question is, if I’ll didn’t receive a webhook(for any reason problem with my server, the signature was generated but it’s invalid, etc ), how can I get payment(I’m using the checkout page and when I create a checkout page payment ID is null)? Please, help me
Hi @Anastasiya_Sevastian. Yes you can set the amount to 0 to verify a card as stated in the description for amount in the Payment Object Fields Table.
The amount received by the recipient, in units of the currency defined in
currency
. Decimal, including the correct number of decimal places for the currency exponent, as defined in ISO 2417:2015. To verify a card, set to 0 .
For the second question, could you give a little more clarification? Are you getting errors showing that your signature was invalid and your request didn’t go through? If so, once you fix the request signature, then the webhook you set up should trigger.
Or would this be more related to your server/webhook setup?
Thank you, Kyle. Agree with webhook I mean let’s imagine that I didn’t receive a webhook I set up it properly already, but If I didn’t receive a webhook(for any reason doesn’t matter), and my user already paid… I know, that agree with your API I can get all payments, and I can get payment details by payment id, but the problem is that I don’t have any paymentId when I receive a checkout link. And I couldn’t find any payment details by checkout_Id.
Sure @Anastasiya_Sevastian. Just an FYI if this is an active case, you can open a ticket at https://support.rapyd.net/ and designate a priority.
It does sound hypothetical, but each checkout page should have a checkout ID and payment have a payment ID as shown in the Payment Object and Checkout Page Object.
Also, you will be able to track all incoming and outgoing funds through account reconciliation.
Of course you stated you can List Payments to match the data and find the payment ID.
Below is a request for a Checkout page and then Retrieve Checkout page after a user completes the payment so it includes the payment ID. You can also do List Payments.
Create Checkout Page Request
{
"amount": 123.45,
"complete_payment_url": "http://example.com/complete",
"country": "SG",
"currency": "SGD",
"error_payment_url": "http://example.com/error",
"complete_checkout_url":"http://docs.rapyd.net",
"merchant_reference_id": "950ae8c6-78",
"cardholder_preferred_currency": true,
"language": "en",
"metadata": {
"merchant_defined": true
},
"payment_method_types_include": [
],
"expiration": 0,
"payment_method_types_exclude": []
}
Create Checkout Page Response
- Note: Payment ID is null
{
"status": {
"error_code": "",
"status": "SUCCESS",
"message": "",
"response_code": "",
"operation_id": "855e1d41-47f1-4438-8b7f-a7c8f6c84e66"
},
"data": {
"id": "checkout_28ef852acd264c94742291cbd3551716",
"status": "NEW",
"language": "en",
"merchant_color": "323fff",
"merchant_logo": null,
"merchant_website": "http://rapyd.net",
"merchant_customer_support": {
"url": "http://support.rapyd.net",
"email": "support@rapyd.net",
"phone_number": "555-555-5555"
},
"merchant_alias": "Test Business",
"merchant_terms": null,
"merchant_privacy_policy": null,
"page_expiration": 1639767591,
"redirect_url": "https://sandboxcheckout.rapyd.net?token=checkout_28ef852acd264c94742291cbd3551716",
"merchant_main_button": "place_your_order",
"cancel_checkout_url": "http://rapyd.net",
"complete_checkout_url": "http://docs.rapyd.net",
"country": "SG",
"currency": "SGD",
"amount": 123.45,
"payment": {
"id": null,
"amount": 123.45,
"original_amount": 0,
"is_partial": false,
"currency_code": "SGD",
"country_code": "SG",
"status": null,
"description": "Payment via Checkout",
"merchant_reference_id": "950ae8c6-78",
"customer_token": null,
"payment_method_data": {},
"expiration": 0,
"captured": false,
"refunded": false,
"refunded_amount": 0,
"receipt_email": null,
"redirect_url": null,
"complete_payment_url": "http://example.com/complete",
"error_payment_url": "http://example.com/error",
"receipt_number": null,
"flow_type": null,
"address": null,
"statement_descriptor": null,
"transaction_id": null,
"created_at": 0,
"updated_at": 0,
"metadata": {
"merchant_defined": true
},
"failure_code": null,
"failure_message": null,
"paid": false,
"paid_at": 0,
"dispute": null,
"refunds": null,
"order": null,
"outcome": null,
"visual_codes": {},
"textual_codes": {},
"instructions": {},
"ewallet_id": null,
"ewallets": [],
"payment_method_options": {},
"payment_method_type": null,
"payment_method_type_category": null,
"fx_rate": null,
"merchant_requested_currency": null,
"merchant_requested_amount": null,
"fixed_side": null,
"payment_fees": null,
"invoice": null,
"escrow": null,
"group_payment": null,
"cancel_reason": null,
"initiation_type": "customer_present",
"mid": null,
"next_action": "not_applicable"
},
"payment_method_type": null,
"payment_method_type_categories": null,
"payment_method_types_include": [],
"payment_method_types_exclude": [],
"customer": null,
"custom_elements": {
"save_card_default": false,
"display_description": false,
"payment_fees_display": true,
"merchant_currency_only": false,
"billing_address_collect": false,
"dynamic_currency_conversion": false
},
"timestamp": 1638557991,
"payment_expiration": null,
"cart_items": [],
"escrow": null,
"escrow_release_days": null
}
}
The user will complete the payment then if I retrieve the checkout ID again, the payment is there. checkout_28ef852acd264c94742291cbd3551716
now returns payment_9b09a71b4e1fc3aa7f808e8ace43a3c9
Retrieve Checkout Page Response
{
"status": {
"error_code": "",
"status": "SUCCESS",
"message": "",
"response_code": "",
"operation_id": "0196a281-57d0-484c-bda9-a44b1b91ce79"
},
"data": {
"id": "checkout_28ef852acd264c94742291cbd3551716",
"status": "ACT",
"language": "en",
"merchant_color": "323fff",
"merchant_logo": null,
"merchant_website": "http://rapyd.net",
"merchant_customer_support": {
"url": "http://support.rapyd.net",
"email": "support@rapyd.net",
"phone_number": "555-555-5555"
},
"merchant_alias": "Test Business",
"merchant_terms": null,
"merchant_privacy_policy": null,
"page_expiration": 1639767626,
"redirect_url": "https://sandboxcheckout.rapyd.net?token=checkout_28ef852acd264c94742291cbd3551716",
"merchant_main_button": "place_your_order",
"cancel_checkout_url": "http://rapyd.net",
"complete_checkout_url": "http://docs.rapyd.net",
"country": "SG",
"currency": "SGD",
"amount": 123.45,
"payment": {
"id": "payment_9b09a71b4e1fc3aa7f808e8ace43a3c9",
"amount": 123.45,
"original_amount": 123.45,
"is_partial": false,
"currency_code": "SGD",
"country_code": "SG",
"status": "CLO",
"description": "Payment via Checkout",
"merchant_reference_id": "950ae8c6-78",
"customer_token": null,
"payment_method": "other_e5f5237559e1b4e29b4b906699d5ede6",
"payment_method_data": {},
"expiration": 1639767626,
"captured": false,
"refunded": false,
"refunded_amount": 0,
"receipt_email": null,
"redirect_url": "https://sandboxcheckout.rapyd.net/complete-bank-payment?token=payment_9b09a71b4e1fc3aa7f808e8ace43a3c9&complete_payment_url=http%3A%2F%2Fexample.com%2Fcomplete&error_payment_url=http%3A%2F%2Fexample.com%2Ferror",
"complete_payment_url": "http://example.com/complete",
"error_payment_url": "http://example.com/error",
"receipt_number": null,
"flow_type": null,
"address": null,
"statement_descriptor": "Test Business",
"transaction_id": null,
"created_at": 1638558026,
"updated_at": 1638558031,
"metadata": {
"merchant_defined": true
},
"failure_code": null,
"failure_message": null,
"paid": false,
"paid_at": 1638558031,
"dispute": null,
"refunds": null,
"order": null,
"outcome": null,
"visual_codes": {},
"textual_codes": {},
"instructions": [],
"ewallets": [
{
"ewallet": "ewallet_db4ad4a76278f94c4a83dd9b28b483ed",
"amount": 123.45,
"percent": 100
}
],
"payment_method_options": {},
"payment_method_type": "sg_grabpay_ewallet",
"payment_method_type_category": "ewallet",
"fx_rate": 1,
"merchant_requested_currency": null,
"merchant_requested_amount": null,
"fixed_side": null,
"payment_fees": null,
"invoice": null,
"escrow": null,
"group_payment": null,
"cancel_reason": null,
"initiation_type": "customer_present",
"mid": null,
"next_action": "not_applicable"
},
"payment_method_type": null,
"payment_method_type_categories": null,
"payment_method_types_include": [],
"payment_method_types_exclude": [],
"customer": null,
"custom_elements": {
"save_card_default": false,
"display_description": false,
"payment_fees_display": true,
"merchant_currency_only": false,
"billing_address_collect": false,
"dynamic_currency_conversion": false
},
"timestamp": 1638557991,
"payment_expiration": null,
"cart_items": [],
"escrow": null,
"escrow_release_days": null,
"payment_method_types": [
{
"category": "ewallet",
"order": 0,
"types": [
{
"type": "sg_grabpay_ewallet",
"mapping": null,
"order": 0,
"image": "https://iconslib.rapyd.net/checkout/sg_grabpay_ewallet.png",
"instructions": [],
"name": "GrabPay eWallet",
"fields": [],
"supported_currencies": [
"SGD"
],
"payment_method_options": [],
"supported_digital_wallet_providers": [],
"min_amount": null,
"max_amount": null,
"is_redirect": false
},
{
"type": "sg_wechat_ewallet",
"mapping": null,
"order": 1,
"image": "https://iconslib.rapyd.net/checkout/sg_wechat_ewallet.png",
"instructions": [
{
"name": "instructions",
"steps": [
{
"step1": "Scan the QR Image using Wechat App",
"step2": "Enter the authorization PIN in the Wechat App",
"step3": "Complete the payment"
}
]
}
],
"name": "eWallet WeChat Pay",
"fields": [],
"supported_currencies": [
"SGD"
],
"payment_method_options": [],
"supported_digital_wallet_providers": [],
"min_amount": null,
"max_amount": null,
"is_redirect": false
},
{
"type": "sg_grabpayrecurring_ewallet",
"mapping": null,
"order": 2,
"image": "https://iconslib.rapyd.net/checkout/sg_grabpayrecurring_ewallet.png",
"instructions": [
{
"name": "instructions",
"steps": [
{
"step1": "Complete one time authorization with OTP."
}
]
}
],
"name": "GrabPay eWallet (Recurring)",
"fields": [],
"supported_currencies": [
"SGD"
],
"payment_method_options": [],
"supported_digital_wallet_providers": [],
"min_amount": null,
"max_amount": null,
"is_redirect": false
}
]
.....
]
}
]
}
}