Overview
Server-to-Server (S2S) Integration
Also known as Direct API, this integration allows your server to communicate directly with Oceanpayment's API. It is best suited for scenarios that require fully customized payment flows.
- 🔒️ PCI DSS Compliance
- ⚡ Seamless, Fast Payment Integration
- 🎉 Responsive Design Across All Devices



Credit Card Integration
With this integration mode, your server will directly handle, transmit, or process Cardholder Data (CHD). As a result, your system falls under the scope of PCI DSS compliance.
- Your Server:Collect payment information (card number, expiry date, CVV, etc.) from the customer and securely transmit it to Oceanpayment.
- Oceanpayment:Receive payment information, process transactions, return results, and handle settlement with banks and card networks.
Core Compliance Requirements
Choosing this integration means the merchant agrees to fulfill the relevant PCI DSS obligations. Oceanpayment is certified PCI DSS LEVEL 1, but merchants are still responsible for their own compliance.
| Party | Responsibility |
|---|---|
| Oceanpayment | Ensure platform and infrastructure security; maintain PCI DSS-compliant gateway interfaces |
| Merchant | Secure their systems, networks, applications, and handling of CHD; ensure compliance with PCI DSS |
Mandatory Integration Requirements
To ensure a secure and compliant payment environment, merchants using S2S must meet the following requirements:
- No storage of sensitive authentication data
- Complete magnetic stripe data, card verification codes (CAV2/CVC2/CVV2/CID), or PIN blocks must not be stored in databases, logs, or monitoring systems.
- Encrypted Transmission
- All communications between the merchant server and Oceanpayment API endpoints must use strong encryption protocols.
- Minimum: TLS 1.2 or higher. SSL and older TLS versions must be disabled.
- Secure cipher suites must be configured, and weak algorithms disabled.
- Merchants must renew their PCI certificate annually and provide an Attestation of Compliance (AOC).
- External vulnerability scans of all internet-facing systems (web servers, API endpoints, firewalls, etc.)
- must be performed at least quarterly (Q1, Q2, Q3, Q4). A valid report is also required before first go-live.
Compliance Process
- Pre-Assessment:Review this document and evaluate if requirements can be met before integration.
- Technical Integration:Develop integration using Oceanpayment API documentation, following all security requirements.
- Submission & Review:Submit “qualified” ASV reports and signed PCI DSS Level 1 certificates via email for Oceanpayment review.。
Important Notes
- Failure to submit ASV reports or PCI certificates on time may result in service suspension or a requirement to switch integration methods to ensure overall payment environment security.
- This document provides a summary of PCI DSS requirements; official documentation from the PCI Security Standards Council takes precedence.
Next Steps
If you accept these requirements and plan to proceed, contact us via email. Our Technical Account Manager will provide full API documentation and test credentials. For questions regarding compliance or integration, reach us at: techservice@oceanpayment.com.cn
Local Payment Integration
How It Works
Local payments (excluding credit cards) do not collect card information and are not subject to PCI DSS. Supported direct integrations include Apple Pay, Google Pay, WeChat Pay, and Alipay.
- ApplePay&GooglePay
- WeChatPay&Alipay&FPS
Flow Diagram
- Submits the required parameters using the direct API (S2S) mode. The
pay_accountNumberparameter should contain the card information token returned by Apple Pay or Google Pay.methodsenum: ApplePay, GooglePay.
cURL -X POST 'https://test-secure.oceanpayment.com/gateway/direct/pay'
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'account=995149' \
-d 'terminal=99514901' \
-d 'signValue=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b' \
-d 'backUrl=https://www.abc.com/back.php' \
-d 'noticeUrl=https://www.abc.com/notice.php' \
-d 'order_number=NO12345678' \
-d 'order_currency=USD' \
-d 'order_amount=0.01' \
-d 'methods={methods}' \
-d 'order_notes=' \
-d 'pay_accountNumber={"paymentData":{"data":"P/Qqc9AoboM0V9smWAWuYJO2hA5eOEQMkeuLAP/n6UkOobJHMGlDYNYRJOVTZKjQXvkjBuppGVppuM5kOYBrjJx3eKqhecZrNykGlooocdHKkp6BdRsjNH7rDOwht9IurY0dcP/ZIXycjujtH+l0c+Ez/+bEnvKMuU/0P83pz8OL5NEiXt0OJAux7M1ek1hw6+9cUZAdH6OW0Jlpxc08cZFqIdm4ETmaPoAm8Vf1+PDUb7qYCvlRCr0S09oEkX0MlrtgNBcbiIIAQijM9c16uwg/jL6HT7DXcVhOQEx7PLbshl4mnWE8m3ezpUgzB5q/2lOcVqE0W2VggrW/P3xdabnIsGUPc9trqDn5lVM02XUBfA3AHvc49DJKoNxn2X4m0wlha95CUayQImZxRQ==","signature":"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","header":{"publicKeyHash":"LfT8NhajbyOZdSZ5fWF9tJjQk9ZUoy+CnI5PZsD/e7M=","ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExekguuW80+zLuywKufjWwQpasFSw11HrGbjBqZx7PXI0wpY2JOWRZ26OMSUvyBJKP43gqJZny7+dw1xDxq2bBw==","transactionId":"8d31b7aef561befa41d5a881918983a6fbecb0f399a490ef15bc1dc50fe2c890"},"version":"EC_v1"},"paymentMethod":{"displayName":"MasterCard 0049","network":"MasterCard","type":"credit"},"transactionIdentifier":"8d31b7aef561befa41d5a881918983a6fbecb0f399a490ef15bc1dc50fe2c890"}' \
-d 'billing_firstName=test' \
-d 'billing_lastName=test' \
-d 'billing_email=test@gmail.com' \
-d 'billing_phone=13800138000' \
-d 'billing_country=US' \
-d 'billing_state=AL' \
-d 'billing_city=Washington D.C.' \
-d 'billing_address=705A big Road' \
-d 'billing_zip=529012' \
-d 'billing_ip=127.0.0.1' \
-d 'productNum=1' \
-d 'productName=Red Dress' \
-d 'productSku=#001' \
-d 'productPrice=0.01' \
- Check the
pay_urlfield in the payment response to determine if 3D Secure is required:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<notice_type>transaction</notice_type>
<push_dateTime>2025-12-19 09:52:47</push_dateTime>
<account>995149</account>
<terminal>99514901</terminal>
<signValue>D6315600AE0002C1468DC9B943E17E90B314E73581393ABC332B92985E41B100</signValue>
<methods>GooglePay</methods>
<order_number>NO12345678</order_number>
<card_country>PL</card_country>
<order_currency>USD</order_currency>
<order_amount>0.01</order_amount>
<order_notes></order_notes>
<card_number>411111***1111</card_number>
<card_type>Visa</card_type>
<payment_country></payment_country>
<payment_id>231219095247018026021</payment_id>
<payment_authType>3</payment_authType>
<payment_status>-1</payment_status>
<payment_details>80093:3D Authorized Service not completed</payment_details>
<payment_solutions></payment_solutions>
<payment_risk></payment_risk>
<payment_amount></payment_amount>
<payment_exchangeRate></payment_exchangeRate>
<auth_reason></auth_reason>
<auth_code></auth_code>
<pay_userId></pay_userId>
<pay_url>https://test-secure.oceanpayment.com:443/gateway/direct/redirect?pay_id=2dfb964bb67134ba6ed72183a4eecfc5f35f4364745f75e12f50f33b6ac74ef8</pay_url>
</response>
- If pay_url is empty, no 3D verification is required; the response is the final payment result. This will trigger noticeUrl asynchronous notification.
- If pay_url is not empty, redirect the customer to the pay_url to complete 3D verification. The payment result will be sent again to backUrl (default via POST), and noticeUrl asynchronous notification is triggered.
- Merchants redirect users to
pay_url:
- Merchants redirect users to
HTTP/1.2 301 Moved Permanently
Location: {pay_url}
When using server-to-server integration:
- WeChatPay supports the following scenarios: Payment methods include mobile app, official account, mini-program, and PC QR code payment.
- Alipay supports the following scenarios: APP, mini-program, PC QR code payment (HK Wallet).
- FPS supports the following scenarios: PC QR code payment.
Flow Chart
- Merchant server calls direct connection mode submit required parameters:
cURL -X POST 'https://test-secure.oceanpayment.com/gateway/directservice/pay'
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'account=995149' \
-d 'terminal=99514901' \
-d 'signValue=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b' \
-d 'backUrl=https://www.abc.com/back.php' \
-d 'noticeUrl=https://www.abc.com/notice.php' \
-d 'order_number=NO12345678' \
-d 'order_currency=USD' \
-d 'order_amount=0.01' \
-d 'methods={methods}' \
-d 'order_notes=' \
-d 'billing_firstName=test' \
-d 'billing_lastName=test' \
-d 'billing_email=test@gmail.com' \
-d 'billing_phone=13800138000' \
-d 'billing_country=US' \
-d 'billing_state=AL' \
-d 'billing_city=Washington D.C.' \
-d 'billing_address=705A big Road' \
-d 'billing_zip=529012' \
-d 'billing_ip=127.0.0.1' \
-d 'productNum=1' \
-d 'productName=Red Dress' \
-d 'productSku=#001' \
-d 'productPrice=0.01' \
- Processing return
Depending on different payment method scenarios, the corresponding payment response parameters need to be handled.
| Payment Method | Scenario | Description | Payment Method (methods value) | Payment Response Handling |
|---|---|---|---|---|
| WeChat Pay | PC Website QR Code Payment (Direct) | The merchant generates a QR code for the user to scan and complete the payment | WeChatPay_Web | Returns QR code parameters
|
| WeChat Pay | Mini Program | Used within a WeChat Mini Program to complete the payment | WeChatPay_MPro | Returns parameters to invoke WeChat Pay in Mini Program
|
| WeChat Pay | APP | Used within a mobile app to complete the payment | WeChatPay_APP | Returns parameters to invoke WeChat Pay in APP
|
| Alipay | PC Website QR Code Payment (Direct) | The merchant generates a QR code for the user to scan and complete the payment | Alipay_Web | Returns QR code parameters
|
| Alipay | Mini Program | Used within a Mini Program to complete the payment | WeChatPay_MPro | Returns parameters to invoke Alipay in Mini Program
|
| Alipay | APP | Used within a mobile app to complete the payment | WeChatPay_APP | Returns parameters to invoke the Alipay SDK in APP
|
| FPS | PC Website QR Code Payment (Direct) | The merchant generates a QR code for the user to scan and complete the payment | FPS | Returns QR code parameters
|
<?xml version="1.0" encoding="UTF-8"?>
<response>
<notice_type>transaction</notice_type>
<push_dateTime>2023-12-19 13:50:57</push_dateTime>
<account>995149</account>
<terminal>99514901</terminal>
<signValue>82345083A54CB4DFB62A0A7B95B0DECCB02986DA1B55B1DFA90DD27E8368E706</signValue>
<methods>WeChatPay_Web</methods>
<order_number>NO12345678</order_number>
<card_country></card_country>
<order_currency>USD</order_currency>
<order_amount>0.01</order_amount>
<order_notes></order_notes>
<card_number></card_number>
<card_type></card_type>
<payment_country></payment_country>
<payment_id>231219135057495010596</payment_id>
<payment_authType>0</payment_authType>
<payment_status>-1</payment_status>
<payment_details>80700:Transaction was not finished</payment_details>
<payment_solutions></payment_solutions>
<payment_risk></payment_risk>
<payment_amount></payment_amount>
<payment_exchangeRate></payment_exchangeRate>
<pay_barCode>weixin://wxpay/bizpayurl?pr=v3WOyi0zz</pay_barCode>
<payment_bankInfo></payment_bankInfo>
<pay_userId></pay_userId>
</response>
- Check the payment status via
noticeUrlto confirm the final transaction result.
Signature
Detailed signature and verification information is available in the Signature & Verification section.