---
# System prepended metadata

title: InitVNPay
tags: [Documentation, agentportal]

---

---
title: 'InitVNPay'
disqus: hackmd
---

InitVNPay API
===
Description: SAG call middle to init url payment for sdk

## Flow
```plantuml
@startuml
Group Proccess 1
User -> SagAPP: Request init
SagAPP-> Middleware: pass INIT Request
SagAPP <-- Middleware: return INIT Response
end
SagAPP -> VNPayAPP: redirect VNPay APP bill page
User -> VNPayAPP: pay the bill
VNPayAPP -> VNPayServer: pass billInfo
VNPayServer -> VNPayServer: do payment
Middleware <--VNPayServer  : VNPayCallbackURL(Return URL for mobile APP)
Middleware -> VNPayAPP: redirect VNPayApp and get status
VNPayAPP -> SagAPP: show status of transaction
SagAPP -> SagAPP: show PaymentDetail Page
User <-- SagAPP: got result
Group Proccess 2

Middleware <-- VNPayServer: VNPayPaymentNotify(IPN URL Update status payment in core and middleware)
Middleware -> Core: Send payment result when success
Middleware <-- Core: return OK or Error
Middleware -> VNPayServer: Return OK or Error
end


@enduml
```

## Proccess 1 Flow
```plantuml
@startuml
User -> SagAPP: Request init
SagAPP-> MiddlewareinitVNPay: pass INIT Request
MiddlewareinitVNPay -> MiddlewareinitVNPay: Hash request params(JSON,output)
MiddlewareinitVNPay -> MiddlewareDB: Save data to core
SagAPP <-- MiddlewareinitVNPay:將output return JSON Response
SagAPP -> SagAPP: Get url
SagAPP -> VNPayAPP: redirect to VNPay APP bill page(url)
@enduml
```
1. [VNPayPay SampleCode](https://sandbox.vnpayment.vn/apis/docs/thanh-toan-pay/pay.html)
2. [VNPayPay Response code](https://sandbox.vnpayment.vn/apis/docs/bang-ma-loi/)

## API
1. Name：**InitVNPay**
2. URL

| Env | URL | 
| -------- | -------- |
| Test API  | https://api-sit.cathay-ins.com.vn:9527/utility/api/Payment/InitVNPay |
| Test Gateway| https://api-sit.cathay-ins.com.vn:9527/utility/api/Payment/InitVNPay |
| UAT API  | https://api-uat.cathay-ins.com.vn:9527/utility/api/Payment/InitVNPay |

### Header request

|                    |                                  |
| ----------------------- | --------------------------------- |
| Method               | POST                                |
| Required Request Header | Content-Type : application/json; charset=UTF-8 |
| Required Request Header | x-api-version=1 |
| Bearer Token | 登入時取得access_token |


## InitVNPay
### Request

```json=
{
  "loginId": "0300000739",
  "reference1": "202000000021", 
  "reference2": "0300000739", 
  "client": "ios_app",
  "callbackUrl": "smartagentgo://payment/pay-detail", 
  "totalAmount": 10000000, 
  "checksumKey": "ChecksumKey", 
  "accountInfo": {
    "name": "What Your Name"
  },
  "billList": [
    {
      "billId": "202000000021", 
      "totalAmount": 10000000,
      "description": "0300000739" 
    }
  ]
}
```
### Response

```json=
{
    "status": 200,
    "message": "成功",
    "success": true,
    "total": 1,
    "data": "https://sandbox.vnpayment.vn/paymentv2/vpcpay.html?vnp_Amount=1000000000&vnp_Command=pay&vnp_CreateDate=20230227102552&vnp_CurrCode=VND&vnp_ExpireDate=20230227104052&vnp_IpAddr=0%3A0%3A0%3A0%3A0%3A0%3A0%3A1&vnp_Locale=vn&vnp_OrderInfo=202000000021&vnp_OrderType=25000&vnp_ReturnUrl=https%3A%2F%2Fapi-sit.cathay-ins.com.vn%3A9527%2Futility%2Fapi%2FPayment%2FVNPayCallbackURL&vnp_TmnCode=CATHAYAP&vnp_TxnRef=55719318-5f04-4ecc-9144-c4bed27e4837&vnp_Version=2.1.0&vnp_SecureHash=819f02b5aeae29b1891a62d6110a339725f054eab3cc478d2a0ba4ea315cc26f7463d334b98b7d45e152df634bd46f30a72be4031ae5fe4fbc566f96d1c7f91e"
}
```

```

## VNPayPay Response
### HTTP Status Codes

| Status Code | Status Code |
| -------- | -------- | 
| 200 | Success |
| 400 | Malformed request |
| 401 | Unauthorized |
| 404 | Not found |
| 500 | Server error |

```


### Table vn_pay_record
1. Database for saving log record


   DB Field | Params | Type | Nullable 
   ---- | --- | --- | --- 
   seq_no |-| int | Y 
   pd_no | request/reference1 | String | Y 
   agnt_empno | request/reference2 | String | Y 
   agnt_name | request/accountInfo.name | String | Y 
   client_app | request/client | String | Y 
   total_amount | request/totalAmount | Number | Y 
   pay_status |  | String | Y 
   result_code | resultCode | String | Y 
   result_message | resultMessage | String | Y 
   payment_id | paymentId | String | Y 
   payment_date | paymentDate | DateTime | Y 
   create_date | - | String | Y 
   update_date |  | String | Y 
   updated_core | - | String | Y 
  




###### tags: `agentportal` `Documentation`
