--- url: >- https://acquirer-api-docs-v4-en.pingpongx.com/en/notes/checkout/api/uniformly/index.md description: >- Direct API (Non-Hosted Mode) is used to implement order creation and payment functions in the checkout module. Suitable for scenarios that require direct integration of payment processes, supporting multiple payment methods. When using this mode, please note that card payments in non-hosted mode must integrate risk control components to ensure transaction security. Main parameters include order information and payment method configuration. --- # Order Creation and Payment ```apidef endpoint: POST /v4/payment/unifiedPay name: Direct API (Non-Hosted Mode) summary: Create a Direct API payment order tags: Checkout, Payment ``` Direct API (Non-Hosted Mode) is used to implement order creation and payment functions in the checkout module. Suitable for scenarios that require direct integration of payment processes, supporting multiple payment methods. When using this mode, please note that card payments in non-hosted mode must integrate risk control components to ensure transaction security. Main parameters include order information and payment method configuration. ## Request Parameters | Parameter | Type | Required | Description | |--------|------|------|------| | accId | string | M | Unique identifier for the store, which will appear in the response message after creation; inputting it means modifying the data | | clientId | string | M | PingPong Merchant ID | | signType | string | M | Supports MD5 , SHA256; for details, see the Signature Specification: /en/notes/guide/sign/ section of this document | | sign | string | M | Signature; for details, see the Signature Specification: /en/notes/guide/sign/ section of this document. All parameters participate in the signature | | version | string | M | Version number, currently fixed at 1.0, may be adjusted with changes to the interface in the future | | bizContent | string | M | Collection of request parameters, with no limit on maximum length. Except for common request parameters, all other request parameters must be passed within this parameter, format: JSON string | | └─ captureDelayHours | integer | M | 0 indicates immediate capture; -1 indicates manual capture, after successfully calling the unified order API, you still need to call Pre-Authorization Capture: /en/notes/checkout/api/modifications/capture/, local payment does not support this; | | └─ timeExpire | string | O | Order closure time. 3 minutes to 10 days (if less than 3 minutes, it defaults to 3 minutes; if more than 10 days, it defaults to 10 days). Timestamp format, unit: seconds, example value: 1683530496 | | └─ amount | string | M | Transaction amount, the precision is related to the currency, please refer to the appendix Transaction Currencies: /en/notes/appendix/transactionCurrency/ | | └─ currency | string | M | Transaction currency, ISO 4217 three-letter code, for specific supported currencies see appendix Transaction Currencies: /en/notes/appendix/transactionCurrency/ | | └─ merchantTransactionId | string | M | Merchant website order serial number, a unique identifier for the order, can be used for subsequent order inquiries and reconciliation | | └─ payResultUrl | string | C | Custom redirect URL set by the merchant; for 3DS verification, bank online transfer, or virtual wallet payments, it finally needs to redirect to the specified page address by the merchant | | └─ merchantRequestBillDescriptor | string | O | Custom dynamic name by the merchant, different channels will make appropriate truncations (only supports English and numbers) | | └─ bizType | string | C | `CardOnFile` transaction mode identifier. Pass the fixed value `CardOnFile` when the first bind-and-pay transaction needs to be processed as `CardOnFile`; if this value was passed when the token was first created, it must also be passed in subsequent repeat purchases using that token. Do not pass this parameter for regular saved-card transactions or when only verifying card details (please contact technical support to use this value) | | └─ merchantUserId | string | C | Required for CardOnFile or CodeGrant mode CardOnFile: Cardholder ID on the merchant's website, globally unique, used to identify the cardholder and associate stored card information; CodeGrant: Member ID, user's member ID on the merchant's website; | | └─ createToken | string | C | Y/N, whether to create a token. This field controls whether a reusable payment credential is generated after the current payment succeeds. In Non-Hosted mode, pass `Y` when the first saved-card payment needs to generate a payment credential. Do not pass this field again when making repeat purchases with an existing token | | └─ token | string | C | Business credential token. Pass the corresponding token value by type CardOnFile: The payment credential returned after successfully saving the card; if the first transaction was processed in `CardOnFile` mode, subsequent repeat purchases using this token must also continue to pass `bizType=CardOnFile`; CodeGrant: The business credential token obtained after signing or authorization is completed; | | └─ notificationUrl | string | O | A custom address set by the merchant for notifying the transaction result, once this parameter is filled, PingPongCheckout will asynchronously push the transaction result to this address via Post method | | └─ closeNotificationUrl | string | O | A custom address set by the merchant for notifying the order closure result, once this parameter is filled, PingPongCheckout will asynchronously push the order closure result to this address via Post method | | └─ requestId | string | M | Unique request number, globally unique | | └─ remark | string | O | Merchant's extended fields, can be used to specify certain parameters, will be returned as is in the response body | | └─ tradeCountry | string | M | Used to specify the country of the PingPong checkout, by default takes the countries supported by PingPong | | └─ merchantSource | string | C | Platform identification for site-building platforms, must be passed when integrating a site-building platform. It serves to identify which site-building platform initiated the transaction ( Note: Non-site-building platforms do not need to submit this parameter, if you need to pass this parameter, please contact PP technical support for confirmation ) | | └─ shopperIP | string | M | User's IP address for placing the order, supports IPv4 format | | └─ language | string | O | Used to specify the language of the PingPong checkout, defaults to en if not provided. See the appendix Checkout Supported Language List: /en/notes/appendix/languageCode/ for details | | └─ threeDSRequestData | string | C | 3DS verification request parameters. See 3DS Integration Guide for details: /en/notes/risk/3ds/ | | └─ └─ executeThreeD | string | C | 3DS verification execution policy:"> Y - Enforce 3DS verification and use PingPongCheckout's 3DS; depends - Whether to perform 3DS verification is decided by PingPongCheckout's risk control decision; external - 3DS verification is required, but 3DS parameters are collected by the merchant and executed by PingPong. Note: This option is not applicable for the checkout; | | └─ └─ authenticationValue | string | C | A unique identifier generated by the issuing bank for Visa, American Express, JCB, Diners Club, and Discover transactions after customer identity verification. The raw data is in base64 units. Needs to convert the value into the format. | | └─ └─ acsTransactionId | string | C | A unique transaction identifier assigned by the ACS to identify an individual transaction. | | └─ └─ veresEnrolled | string | C | The result of the enrollment check. This field can contain one of the following values:"> Y - Card is enrolled or can be enrolled; you must authenticate. Liability shift.; N - Unregistered card; proceed with authorization. No liability shift.; U - Unable to authenticate for any reason. No liability shift; | | └─ └─ specificationVersion | string | C | This field contains the 3D Secure version used to process the transaction. For example, 1.0.2 or 2.0.0. | | └─ └─ directoryServerTransactionId | string | C | The Directory Server Transaction ID is generated by the Mastercard Directory Server during the authentication transaction and is passed back to the merchant along with the authentication result. | | └─ └─ threeDSServerTransactionId | string | C | A unique transaction identifier assigned by the 3DS server to identify an individual transaction. | | └─ └─ paresStatus | string | C | The original result of the authentication check. This field can contain one of the following values:"> A - Proof of an authentication attempt has been generated.; N - Customer authentication failed or was canceled. The transaction was declined.; U - Authentication did not complete for any reason.; Y - The customer was successfully authenticated.; | | └─ └─ eci | string | C | For authentication, only for Visa, American Express, JCB, Diners Club, and Discover transactions, the digital e-commerce indicator (ECI) is returned. The field is missing in case of authentication failure. This field contains one of the following values: 01 - Attempted authentication (Mastercard); 02 - Successful authentication (Mastercard); 05 - Successful authentication (Visa, American Express, JCB, UNION PAY, Diners Club, and Discover); 06 - Attempted authentication (Visa, American Express, JCB, Diners Club, and Discover); | | └─ paymentMethod | object | M | The type and required details of the payment method to be used. | | └─ └─ type | string | M | Payment methods: scheme International credit card payment; Local payment options, optional values: Non-Hosted Supported APMs: /en/notes/paymentMethods/overview/; Fixed input: networkToken, mandatory if using a card group's token; | | └─ └─ scanCodeId | string | C | Payment code generated by the customer's mobile wallet client. Usually displayed in the form of a barcode or QR code. The merchant terminal scans the customer's phone screen to obtain the code | | └─ └─ cardInfo | object | C | Cardholder information, mandatory for credit card payments that do not use card binding | | └─ └─ └─ number | string | M | International credit card number | | └─ └─ └─ pin | string | O | First two digits of the local card password | | └─ └─ └─ holderFirstName | string | M | Cardholder first name, character type, no special symbols | | └─ └─ └─ holderLastName | string | M | Cardholder last name, character type, no special symbols | | └─ └─ └─ expireMonth | string | M | Expiration month, 2 digits | | └─ └─ └─ expireYear | string | M | Expiration year, 4 digits | | └─ └─ └─ cvv | string | M | Credit card CVV, the CVV length for Visa/MasterCard/JCB/Discover/Diners club is 3 characters, while for American Express it may be 4 characters | | └─ └─ └─ schemeTokenValue | string | C | Card group's token, mandatory if using a card group's token | | └─ └─ └─ paymentBrand | string | C | Card brand, mandatory if using a card group's token, selectable values are visa/MasterCard | | └─ └─ └─ tokenCryptogram | string | C | An encrypted numeric string used to verify transaction data between the card and the terminal. Mandatory if using a card group's token | | └─ └─ iban | string | O | Mandatory for specific payment methods, international bank account number for payment | | └─ └─ ovoId | string | O | Wallet ID | | └─ └─ customerKanjiFirstName | string | O | Customer's first name, represented in Chinese characters | | └─ └─ customerKanjiLastName | string | O | Customer's last name, represented in Chinese characters | | └─ └─ customerKatakanaFirstName | string | O | Customer's first name, represented in Katakana | | └─ └─ customerKatakanaLastName | string | O | Customer's last name, represented in Katakana | | └─ └─ companyName | string | O | Company name | | └─ └─ applePay | object | C | Mandatory when the selected payment method type is ApplePay | | └─ └─ └─ applePayTokenData | object | C | Encrypted parameters, the paymentToken returned from the applePay transaction | | └─ └─ └─ └─ version | string | M | Version information, indicating the version of the encryption protocol, e.g., "EC_v1" | | └─ └─ └─ └─ data | string | M | Base64 encoded encrypted data, containing the actual payment information | | └─ └─ └─ └─ signature | string | M | Base64 encoded signature, used to verify the integrity and authenticity of the payment data source | | └─ └─ └─ └─ header | object | M | Contains metadata related to encryption | | └─ └─ └─ └─ └─ ephemeralPublicKey | string | M | Base64 encoded temporary public key, used for encrypting transaction information | | └─ └─ └─ └─ └─ publicKeyHash | string | M | Base64 encoded public key hash, used to verify the merchant's public key | | └─ └─ └─ └─ └─ transactionId | string | M | A unique transaction identifier, used to identify the payment transaction | | └─ └─ └─ applePayTokenDecryptionData | object | C | Decryption parameters, the paymentToken returned from the applePay transaction | | └─ └─ └─ └─ cardToken | string | M | applepay decrypted virtual card number - applicationPrimaryAccountNumber | | └─ └─ └─ └─ expirationDate | string | M | Expiration date YYMMDD - applicationExpirationDate | | └─ └─ └─ └─ cardholderName | string | O | Cardholder name - cardholderName | | └─ └─ └─ └─ paymentDataType | string | M | Enumeration: EMV, 3DSecure | | └─ └─ └─ └─ paymentData | object | M | applePay transaction returned paymentToken | | └─ └─ └─ └─ └─ onlinePaymentCryptogram | string | O | paymentDataType: 3DSecure - paymentData.onlinePaymentCryptogram (mandatory when paymentDataType is 3DSecure) | | └─ └─ └─ └─ └─ eciIndicator | string | O | 3ds eci - paymentDataType: 3DSecure paymentData.eciIndicator (mandatory when paymentDataType is 3DSecure) | | └─ └─ └─ └─ └─ emvData | string | O | paymentDataType: emv - paymentData.emvData (mandatory when paymentDataType is emv) | | └─ └─ └─ └─ └─ encryptedPINData | string | O | paymentDataType: emv - paymentData.encryptedPINData (mandatory when paymentDataType is emv) | | └─ └─ googlePay | object | C | Mandatory when the selected payment method type is GooglePay | | └─ └─ └─ googleEncryptToken | object | C | GooglePay obtained encrypted card information | | └─ └─ └─ googlePayTokenDecryptionData | object | C | GooglePay decrypted card information | | └─ └─ └─ └─ gatewayMerchantId | string | O | gatewayMerchantId in the decrypted message body from google | | └─ └─ └─ └─ messageId | string | O | messageId in the decrypted message body from google | | └─ └─ └─ └─ paymentMethod | string | O | paymentMethod in the decrypted message body from google | | └─ └─ └─ └─ paymentMethodDetails | object | M | paymentMethodDetails in the decrypted message body from google | | └─ └─ └─ └─ └─ authMethod | string | M | authMethod in the decrypted message body from google | | └─ └─ └─ └─ └─ expirationMonth | string | M | expirationMonth in the decrypted message body from google | | └─ └─ └─ └─ └─ expirationYear | string | M | expirationYear in the decrypted message body from google | | └─ └─ └─ └─ └─ pan | string | M | pan in the decrypted message body from google | | └─ └─ └─ └─ └─ assuranceDetails | object | O | assuranceDetails in the decrypted message body from google | | └─ └─ └─ └─ └─ └─ accountVerified | string | M | accountVerified in the decrypted message body from google | | └─ └─ └─ └─ └─ └─ cardHolderAuthenticated | string | M | cardHolderAuthenticated in the decrypted message body from google | | └─ └─ wxOpenId | string | C | Unique identifier in WeChat Open Platform | | └─ └─ wxAppId | string | C | WeChat Mini Program ID | | └─ jsGeneratedData | string | C | Card payments must integrate the risk control component. Card payments need to pass this, if acquisition fails, an empty string can be passed, without blocking the payment process. By embedding the risk control component provided by pingpong, get the browser-related json string and pass it to this parameter. Used by merchants who interface with the risk control plugin, See 3DS Integration Guide for details: /en/notes/risk/3ds/ | | └─ customer | object | C | Customer information. Not required for the virtual entertainment industry | | └─ └─ firstName | string | C | User's first name | | └─ └─ lastName | string | C | User's last name | | └─ └─ email | string | C | User's email | | └─ └─ phone | string | C | User's contact phone | | └─ └─ birthDate | string | C | Date of birth, format YYYY-MM-DD | | └─ └─ identificationType | string | C | User's ID document type (required for specific countries, such as Mexico) | | └─ └─ identificationId | string | C | User's ID document number (required for specific countries, such as Mexico) | | └─ └─ phoneCountryCode | string | C | Country code or international area code of the phone number (no special symbols needed) | | └─ └─ accountNumber | string | C | Bank account number | | └─ └─ domesticCardNumber | string | C | Domestic card number, example value: 9704198526191432198 | | └─ └─ domesticCardIssuingDate | string | C | Domestic card issuing date, example value: 07/15 | | └─ └─ domesticCardExpireMonth | string | C | Domestic card expiration month, example value: 10 | | └─ └─ domesticCardExpireYear | string | C | Domestic card expiration year, example value: 25 | | └─ goods | array | M | Product information | | └─ └─ name | string | M | Product name | | └─ └─ description | string | O | Product description | | └─ └─ sku | string | O | Product number, product SKU | | └─ └─ unitPrice | string | M | Unit price of the product | | └─ └─ unitTaxAmount | string | C | Tax per item, mandatory when the total order amount includes tax | | └─ └─ taxRate | string | O | Tax rate, optional | | └─ └─ totalDiscountAmount | string | C | Total discount amount per item, mandatory when the total order amount involves discounts | | └─ └─ number | string | M | Quantity of the product purchased | | └─ └─ imgUrl | string | M | Main image link of the product | | └─ └─ virtualProduct | string | O | Whether it is a virtual product, virtual goods (Y/N) | | └─ └─ itemType | string | O | Product type, enumerated values: 1/2/3, corresponding meanings as follows: 1, DIGITAL: Digital products; 2, PHYSICAL: Physical products; 3, SERVICE: Services; | | └─ shippingAddress | object | C | Shipping address information, can be omitted for virtual products | | └─ └─ street | string | M | Recipient's street address | | └─ └─ postcode | string | M | Postal code | | └─ └─ city | string | M | Recipient's city | | └─ └─ state | string | M | Recipient's province, for US and Canada regions, use two-character codes, some areas without provinces can be left blank, see Country Codes for details | | └─ └─ country | string | M | Recipient's country, (ISO two-character code) see appendix Country Codes , mandatory for RMB withdrawal merchants | | └─ └─ district | string | C | District/county of the recipient | | └─ └─ shippingFee | string | C | Shipping cost | | └─ billingAddress | object | C | Billing information | | └─ └─ street | string | M | Biller's street address | | └─ └─ postcode | string | M | Postal code | | └─ └─ city | string | M | Biller's city | | └─ └─ state | string | M | Biller's province, for US and Canada regions, use two-character codes, some areas without provinces can be left blank | | └─ └─ district | string | C | District/county of the biller | | └─ └─ country | string | M | Biller's country, (ISO two-character code) see appendix Country Codes: /en/notes/appendix/countryCode/ | | └─ browserInfo | object | C | Browser information | | └─ └─ windowSize | string | C | Window size:">01-250x400 02-390x400 03-500x600 04-600x400 05 - Full screen | | └─ └─ acceptHeader | string | C | HTTP response header information, example value: text/html, application/xhtml+xml, application/xml; q=0.9, image/webp, image/apng, *; q=0.8 | | └─ └─ colorDepth | string | C | Window color, get browser screen.colorDepth, example value: 32 | | └─ └─ screenHeight | integer | C | Window height | | └─ └─ jetLag | string | C | Time difference in minutes between UTC and the cardholder's browser local time. | | └─ └─ userAgent | string | C | Browser user agent information, example value: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36 | | └─ └─ screenWidth | integer | C | Screen width (unit: pixels) | | └─ └─ javaEnabled | boolean | C | Whether the cardholder's device can execute Java. | | └─ └─ javaScriptEnabled | boolean | C | Indicates whether the shopper's browser can execute JavaScript. If the field is absent, it is assumed to have the default value of true. | | └─ device | object | M | Device information, accessModel values, can be omitted | | └─ └─ orderTerminal | string | M | 01 - Mobile browser (app); 02 - PC browser (pc); 04 - SDK (ios); 05 - SDK (Android); 06 - WeChat Mini Program; 09 - QR Code; | | └─ recurringInfo | object | C | Subscription information, currently applicable for Apple Pay subscription payments | | └─ └─ recurringPaymentStartDate | string | M | The date of the first recurring payment, which maps to Apple Pay's first payment date | | └─ └─ recurringPaymentIntervalUnit | string | M | The billing interval unit that maps to Apple Pay's calendar unit, such as day, month, or year | | └─ └─ recurringPaymentIntervalCount | string | M | The number of interval units that make up one full billing cycle | | └─ └─ recurringPaymentEndDate | string | M | The date of the final recurring payment, which maps to Apple Pay's final payment date | | └─ merchantRiskIndicator | object | O | Merchant risk supplemental information object, used to provide pre-order or future-fulfillment transaction details | | └─ └─ preOrderPurchase | boolean | C | Whether this is a pre-order or future-fulfillment transaction. Example value: true | | └─ └─ preOrderType | string | C | Pre-order or future-fulfillment type. Required when preOrderPurchase=true . Example value: futureServiceBooking . Supported values: presaleBeforeRelease : Pre-sale before the official release; madeToOrder : Production or stocking starts after the order is placed; backorderRestock : Orders are accepted while out of stock and fulfilled after restocking; crowdfundingFulfillment : Fulfillment happens after crowdfunding succeeds; digitalDelayedDelivery : Digital goods or digital entitlements delivered in the future; futureServiceBooking : Service booking to be fulfilled at a future date or time; | | └─ └─ preOrderEstimatedDeliveryDate | string | C | Merchant-promised estimated delivery date. Required when preOrderPurchase=true . Timestamp format, in seconds. Example value: 1683530496 | ### Request Example ```json { "accId": "2018092714313010016291", "clientId": "2018092714313010016", "signType": "SHA256", "sign": "898A3CBE981B3E2BF4E2B8D1A817D7E23EF93BC4293993EE545E36F4C87F2E79", "version": "1.0", "bizContent": "{\"timeExpire\":\"\",\"paymentMethod\":{\"type\":\"scheme\"},\"tradeCountry\":\"\",\"threeDSRequestData\":{\"executeThreeD\":\"\",\"authenticationValue\":\"\",\"acsTransactionId\":\"\",\"veresEnrolled\":\"\",\"specificationVersion\":\"\",\"directoryServerTransactionId\":\"\",\"threeDSServerTransactionId\":\"\",\"paresStatus\":\"\",\"eci\":\"\"},\"browserInfo\":{\"acceptHeader\":\"content-type=application/x-www-form-urlencoded;accept=*/*;cache-control=no-cache;postman-token=cf489264-5378-4d5d-a86c-72c86a408c03;accept-encoding=gzip, deflate;content-length=588;connection=keep-alive;\",\"colorDepth\":\"32\",\"jetLag\":\"480\",\"screenHeight\":\"1980\",\"screenWidth\":\"1080\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 Chrome/72.0.3626.121 Safari/537.36\",\"windowSize\":\"05\",\"javaEnabled\":\"true\",\"javaScriptEnabled\":\"true\"},\"device\":{\"fingerprintId\":\"\",\"orderTerminal\":\"01\"},\"jsGeneratedData\":{\"fingerprintId\":\"2018092714313010016549_PP20210608151727OB\",\"forterSiteId\":\"e088dda90c4e\",\"forterTokenCookie\":\"c3402ed6f84d4c50add3458a1ce51d60_1623137756842_87_UDF43_11ck\",\"orderTerminal\":\"03\",\"threeDSServerTransID\":\"\"},\"shopperIP\":\"222.126.52.24\",\"captureDelayHours\":0,\"language\":\"en\",\"airline\":{\"adultsNumber\":\"1\",\"aircraftCabinType\":\"FIRST CLASS\",\"airlineCompanyID\":\"CA006\",\"airlinePnr\":\"{dhsalh}\",\"arrivalCity\":\"Adm\",\"arrivalCountry\":\"DK\",\"arrivalTime\":\"201912012010\",\"arrivalTimezone\":\"UTC+8\",\"babyNumber\":\"0\",\"bestFare\":\"Y\",\"bookChannel\":\"Y\",\"changedTakeoffTime\":\"\",\"childrenNumber\":\"0\",\"connectingCity\":\"\",\"connectionTicket\":\"N\",\"contactEmail\":\"123456@gmail.com\",\"contactName\":\"James LeBron\",\"contactPhone\":\"3055787342\",\"flightNumber\":\"CA006122\",\"freeChange\":\"Y\",\"frequentFlyerNumber\":\"CA00612254651B\",\"haveChanged\":\"N\",\"hotel\":{\"bookNumber\":\"1\",\"bookRange\":\"2\",\"checkInDate\":\"201912010020\",\"city\":\"Adm\",\"country\":\"DK\",\"customerName\":\"James LeBron\",\"name\":\"AdmHotel\",\"refundPolicy\":\"FREE CANCELLATION\",\"star\":\"5\"},\"ifConnectingFlight\":\"N\",\"ifRoundtripFlight\":\"Y\",\"insurance\":\"Y\",\"leaveRange\":\"Y\",\"passengers\":[{\"birthday\":\"1991120\",\"firstName\":\"James\",\"identificationId\":\"331081199112012361\",\"identificationType\":\"ID\",\"lastName\":\"LeBron\",\"nationality\":\"US\",\"phone\":\"3055787342\"}],\"productType\":\"TICKET\",\"routeType\":\"SINGLE\",\"takeoffCity\":\"Birmingham\",\"takeoffCountry\":\"US\",\"takeoffTime\":\"201912012010\",\"takeoffTimezone\":\"UTC+8\",\"thirdPartyBook\":\"N\",\"tripType\":\"SINGLE\",\"valueAdded\":\"N\"},\"amount\":\"100\",\"billingAddress\":{\"city\":\"Birmingham\",\"country\":\"US\",\"postcode\":\"35222\",\"state\":\"AL\",\"street\":\"1986 Broad Street\"},\"carRental\":{\"childrenNumber\":\"1\",\"discountAmount\":\"120\",\"discountType\":\"15%\",\"email\":\"t_email\",\"firstName\":\"James\",\"identificationId\":\"331081199112012361\",\"identificationType\":\"ID\",\"insuranceLimit\":\"8000\",\"insuranceType\":\"RS\",\"lastName\":\"Lebron\",\"model\":\"SUV\",\"nationality\":\"US\",\"personNumber\":\"3\",\"phone\":\"3055787342\",\"purchasedInsurance\":\"Y\",\"rentCity\":\"Birmingham\",\"rentCountry\":\"US\",\"rentTime\":\"201912200320\",\"rentalCompany\":\"US\",\"returnCity\":\"Birmingham\",\"returnCountry\":\"US\",\"returnTime\":\"201201200320\"},\"currency\":\"USD\",\"customer\":{\"email\":\"t_email\",\"firstName\":\"James\",\"lastName\":\"LeBron\",\"identificationId\":\"\",\"identificationType\":\"ID\",\"phone\":\"3055787343\",\"birthDate\":\"\"},\"eCommerce\":{\"freeShipping\":\"N\",\"shippingMethod\":\"SEA\",\"shippingFee\":\"\"},\"goods\":[{\"description\":\"short legs\",\"imgUrl\":\"http://pic.bizhi360.com/bpic/30/5230.jpg\",\"name\":\"corgi\",\"number\":\"1\",\"sku\":\"20230524001\",\"unitPrice\":\"22\",\"virtualProduct\":\"N\"},{\"description\":\"stupid nerd\",\"imgUrl\":\"http://d.paper.i4.cn/max/2016/12/08/11/1481166973148_375716.jpg\",\"name\":\"husky\",\"number\":\"1\",\"sku\":\"20230524002\",\"unitPrice\":\"22\",\"virtualProduct\":\"N\"}],\"merchantTransactionId\":\"t_merchantno\",\"merchantUserId\":\"12604896051315\",\"merchantRiskIndicator\":{\"preOrderPurchase\":true,\"preOrderType\":\"futureServiceBooking\",\"preOrderEstimatedDeliveryDate\":\"1683530496\"},\"notificationUrl\":\"https://test-acquirer-payment.pingpongx.com/qa/notify\",\"payCancelUrl\":\"https://test-acquirerpay.pingpongx.com/qa/cancel.html\",\"payResultUrl\":\"https://test-acquirerpay.pingpongx.com/qa/result.html\",\"reCharge\":{\"accountId\":\"775330\",\"accountName\":\"von\",\"gameCategory\":\"OTHERS\",\"gameName\":\"Over Watched\",\"gameTerminal\":\"PC\",\"platformCategory\":\"N\",\"serverCountry\":\"US\",\"type\":\"GAME RECHARGE\"},\"remark\":\"Remark customer defined txt\",\"requestId\":\"t_merchantno\",\"shippingAddress\":{\"city\":\"Miami\",\"country\":\"US\",\"postcode\":\"33131\",\"state\":\"FL\",\"street\":\"701 Brickell Avenue, Suite 2700\"}}" } ``` ## Response Parameters | Parameter | Type | Description | |--------|------|------| | accId | string | Unique store identifier, which will appear in the response message after being added; inputting it means modifying the data | | clientId | string | PingPong merchant number | | signType | string | Supports MD5 , SHA256; for details, see the Signature Specification: /en/notes/guide/sign/ section of this document | | sign | string | Signature; for details, see the Signature Specification: /en/notes/guide/sign/ section of this document. All parameters participate in the signature | | code | string | Result status code, see the appendix Status Code Table: /en/notes/appendix/successCodeList/ | | description | string | Result description | | bizContent | string | Business response parameters | | └─ transactionId | string | PingPong transaction ID | | └─ merchantTransactionId | string | Website transaction ID | | └─ amount | string | Transaction amount, the precision and currency depend on the specific currency. Please refer to the appendix Trading Currencies: /en/notes/appendix/transactionCurrency/ | | └─ transactionTime | string | Time of transaction initiation, timestamp | | └─ transactionEndingTime | string | Time when the transaction reaches its final state, timestamp | | └─ currency | string | Transaction currency, ISO 4217 three-letter code. For supported currencies, see the attachment Trading Currencies: /en/notes/appendix/transactionCurrency/ | | └─ status | string | Transaction status: Idempotent Status: /en/notes/guide/paystatus/ SUCCESS - Success; FAILED - Failure; PROCESSING - In progress; | | └─ remark | string | Merchant extended field, can be used to specify certain parameters, will be returned as is in the response body | | └─ requestId | string | Unique request number, globally unique | | └─ issuerInfo | object | Bank return information | | └─ └─ issuerResultCode | string | Bank return code | | └─ └─ issuerResultMsg | string | Bank return message description | | └─ exchangedAmount | string | Currency exchange amount | | └─ exchangedCurrency | string | Currency for exchange | | └─ token | string | The payment credential returned after successfully saving the card, which can be used for subsequent token-based payment scenarios. If the first transaction was processed in `CardOnFile` mode, subsequent payments using this token must also continue to pass `bizType=CardOnFile`. See Saved Cards and CardOnFile Overview: /en/notes/onlinePayment/features/tokenization/cardOnFileOverview/ | | └─ captureDelayHours | integer | 0 indicates immediate capture; -1 indicates manual capture. After successfully calling the unified order API, you also need to call Pre-Authorization Capture: /en/notes/checkout/api/modifications/capture/. Local payments do not support this.; | | └─ payResultUrl | string | Merchant-defined URL for receiving redirected result; for 3DS verification, bank online transfer, or virtual wallet payment methods, it finally needs to redirect to the merchant-specified page address | | └─ threeDContinue | string | Whether 3DS (verification processing using risk control plugin) is required: true: Yes; false: No; | | └─ threeDUnionParams | object | 3DS verification parameter set, when the transaction requires 3DS verification processing, pass the return value of this parameter into the specified function of the js plugin provided by PingPong (used by merchants connected via a risk control plugin) | | └─ paymentMethod | object | Type and required details of the payment method to be used. | | └─ └─ type | string | Payment method: scheme International credit card payment; Local payment options: Non-Hosted supported APMs: /en/notes/paymentMethods/overview/; | | └─ action | object | Type and required details of the payment method to be used. | | └─ └─ type | string | Local payment method · Result type: QR_CODE - QR code string, needs to be manually converted to a QR code; QR_URL - Image HTTP protocol URL or base64 image; PAYMENT_REDIRECT_URL - Redirect link; | | └─ └─ qrCode | string | Local payment method · QR code string, needs to be manually converted to a QR code | | └─ └─ qrUrl | string | Local payment method · May be an image HTTP protocol URL or a base64 image | | └─ └─ paymentRedirectUrl | string | Local payment method · Payment transaction redirect link | | └─ cardInfo | object | Payment credit card information | | └─ └─ cardLevel | string | Card transaction · Card level | | └─ └─ cardType | string | Card transaction · Card type, enumeration values: DEBIT; CREDIT; CHARGE; CARD; | | └─ └─ firstName | string | Cardholder name, character type, no special symbols | | └─ └─ lastName | string | Cardholder surname, character type, no special symbols | | └─ └─ firstSixDigits | string | First 6 digits of the card number | | └─ └─ lastFourDigits | string | Last 4 digits of the card number | | └─ └─ ipCountry | string | User's transaction country | | └─ └─ isoCountry | string | Issuing bank country | | └─ └─ issuringBank | string | Issuing bank | | └─ └─ isoCountryA2 | string | Two-letter country code, compliant with ISO 3166 standard | | └─ └─ paymentBrand | string | Card transaction - Card brand: VISA / Mastercard / American Express / JCB / Discover | | └─ extraParam | object | Extended parameter object containing payment method specific parameters | | └─ └─ wxTimeStamp | string | Timestamp in seconds since 1970-01-01 00:00:00, representing the current time 📱 WeChat Mini Program: Only returned when device.orderTerminal=06 and WeChat Mini Program payment is used | | └─ └─ wxNonceStr | string | Random string, length should be 32 characters or less 📱 WeChat Mini Program: Only returned when device.orderTerminal=06 and WeChat Mini Program payment is used | | └─ └─ wxPackage | string | The prepay_id parameter returned by the unified order interface, format: prepay_id=*** 📱 WeChat Mini Program: Only returned when device.orderTerminal=06 and WeChat Mini Program payment is used | | └─ └─ wxSignType | string | Signature algorithm, default is RSA 📱 WeChat Mini Program: Only returned when device.orderTerminal=06 and WeChat Mini Program payment is used | | └─ └─ wxPaySign | string | Signature, refer to WeChat Pay documentation for details 📱 WeChat Mini Program: Only returned when device.orderTerminal=06 and WeChat Mini Program payment is used | ### Response Example ```json { "accId": "2023082916070710253541", "bizContent": "{\"issuerInfo\":{\"issuerResultMsg\":\"Approved or completed successfully\",\"issuerResultCode\":\"00\"},\"remark\":\"Remark customer defined txt\",\"transactionTime\":\"1714978654000\",\"requestId\":\"PMT-LUC4VOQM381714978651450\",\"merchantTransactionId\":\"PMT-LUC4VOQM381714978651450\",\"currency\":\"USD\",\"exchangedAmount\":\"100\",\"exchangedCurrency\":\"USD\",\"amount\":\"100.000000\",\"authenticationInfo\":{\"avsResult\":\"Unknown\",\"cvvResult\":\"Y\",\"threeDSecure\":\"N\"},\"cardInfo\":{\"firstName\":\"James\",\"isoCountryA2\":\"BE\",\"lastName\":\"LeBron\",\"lastFourDigits\":\"1002\",\"cardLevel\":\"\",\"paymentBrand\":\"MASTERCARD\",\"cardType\":\"CREDIT\",\"issuringBank\":\"\",\"firstSixDigits\":\"520474\",\"isoCountry\":\"BELGIUM\"},\"transactionEndingTime\":\"1714978655669\",\"threeDUnionParams\":{\"threeDContinue\":\"false\"},\"transactionId\":\"2024050650046394\",\"threeDContinue\":\"false\",\"paymentMethod\":{\"type\":\"scheme\"},\"captureDelayHours\":0,\"status\":\"SUCCESS\",\"extraParam\":{\"wxTimeStamp\":\"1695182276\",\"wxNonceStr\":\"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6\",\"wxPackage\":\"prepay_id=wx20230920123456789012345\",\"wxSignType\":\"RSA\",\"wxPaySign\":\"ABC123DEF456GHI789JKL012MNO345PQR\"}}", "clientId": "2023082916070710253", "code": "000000", "description": "Transaction succeeded", "sign": "EFDF7C80DAD9EBB13C29E38D7A5BD57899E7C0B7C7414A45F718240381299B56", "signType": "SHA256" } ```