API Only (Non-Hosted Mode)
Request Body Parameters
application/jsonCommon Request Parameters
bizContent
threeDSRequestDataStringConditionalpaymentMethodObjectRequiredcustomerObjectConditionalgoodsArrayRequiredshippingAddressObjectConditionalbillingAddressObjectConditionalbrowserInfoObjectConditionaldeviceObjectRequiredrecurringInfoObjectConditionalmerchantRiskIndicatorObjectOptionalcaptureDelayHoursintRequired- 0 indicates immediate capture
- -1 indicates manual capture, after successfully calling the unified order API, you still need to call Pre-Authorization Capture, local payment does not support this
timeExpireString(10)OptionalOrder 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: 1683530496amountString(12)RequiredTransaction amount, the precision is related to the currency, please refer to the appendix Transaction CurrenciescurrencyString(3)RequiredTransaction currency, ISO 4217 three-letter code, for specific supported currencies see appendix Transaction CurrenciesmerchantTransactionIdString(64)RequiredMerchant website order serial number, a unique identifier for the order, can be used for subsequent order inquiries and reconciliationpayResultUrlString(255)ConditionalCustom 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 merchantmerchantRequestBillDescriptorString(22)OptionalMerchant-defined dynamic billing descriptor, up to 22 characters. Only English letters, digits, whitespace, and these ASCII punctuation marks are allowed:, . ( ) - / :. Chinese characters and other special characters are not allowed. Different channels may apply appropriate truncation.bizTypeString(12)Conditional`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)merchantUserIdString(256)ConditionalRequired 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
createTokenString(1)ConditionalY/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 tokentokenString(255)ConditionalBusiness 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
notificationUrlString(255)OptionalA 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.
URL recommendation: use a complete URL with a publicly reachable domain name. Standard web ports are recommended (HTTPS defaults to 443 and HTTP defaults to 80). Ensure the URL can reliably receive PingPongCheckout asynchronous notifications.closeNotificationUrlString(255)OptionalA 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.
URL recommendation: use a complete URL with a publicly reachable domain name. Standard web ports are recommended (HTTPS defaults to 443 and HTTP defaults to 80). Ensure the URL can reliably receive PingPongCheckout asynchronous notifications.requestIdString(64)RequiredUnique request number, globally uniqueremarkString(255)OptionalMerchant's extended fields, can be used to specify certain parameters, will be returned as is in the response bodytradeCountryString(2)RequiredUsed to specify the country of the PingPong checkout, by default takes the countries supported by PingPongmerchantSourceString(64)ConditionalPlatform 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)shopperIPString(64)RequiredUser's IP address for placing the order, supports IPv4 formatlanguageString(12)OptionalUsed to specify the language of the PingPong checkout, defaults to en if not provided. See the appendix Checkout Supported Language List for detailsjsGeneratedDataString(256)ConditionalCard 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
Other Parameters
Request Body Example
{
"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"
}
}
}Responses Body Parameters
application/jsonCommon Response Parameters
bizContent
issuerInfoObjectOptionalpaymentMethodObjectRequiredactionObjectRequiredcardInfoObjectOptionalextraParamObjectConditionaltransactionIdStringRequiredPingPong transaction IDmerchantTransactionIdString(64)RequiredWebsite transaction IDamountString(12)RequiredTransaction amount, the precision and currency depend on the specific currency. Please refer to the appendix Trading CurrenciestransactionTimeString(64)RequiredTime of transaction initiation, timestamptransactionEndingTimeString(64)RequiredTime when the transaction reaches its final state, timestampcurrencyString(3)RequiredTransaction currency, ISO 4217 three-letter code. For supported currencies, see the attachment Trading CurrenciesstatusString(32)RequiredTransaction status: Idempotent Status- SUCCESS - Success
- FAILED - Failure
- PROCESSING - In progress
remarkString(255)OptionalMerchant extended field, can be used to specify certain parameters, will be returned as is in the response bodyrequestIdString(64)RequiredUnique request number, globally uniqueexchangedAmountStringOptionalCurrency exchange amountexchangedCurrencyStringOptionalCurrency for exchangetokenString(64)ConditionalThe 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 OverviewcaptureDelayHoursintConditional- 0 indicates immediate capture
- -1 indicates manual capture. After successfully calling the unified order API, you also need to call Pre-Authorization Capture. Local payments do not support this.
payResultUrlString(255)ConditionalMerchant-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 addressthreeDContinueString(32)ConditionalWhether 3DS (verification processing using risk control plugin) is required:- true: Yes
- false: No
threeDUnionParamsObjectConditional3DS 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)
Request Body Example
{
"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"
}