Голомт Банк
  • E-Commerce
  • WC Payment Plugin
  • IPPOS
  • Instore
  • Card Gateway
  • Instore v2
  • Tokenization
  • Socialpay

›API

SocialPay

  • Танилцуулга
  • Үйл ажиллагааны диаграм
  • API

    • Mini App - Web token
    • SocialPay E-Commerce Deeplink

SocialPay English

  • Introduction
  • Workflow
  • API

    • Mini App - Web token
    • SocialPay E-Commerce Deeplink

Mini App - Web token

Баримтын зориулалт

Энэхүү баримт бичиг нь Голомт банкны зүгээс шинээр хөгжүүлэлт хийгдэж буй Socialpay 3.0 системийн өгөгдөл солилцох дүрмийг тодорхойлно.

Хүсэлтийн ерөнхий мэдээлэл

Өгөгдөл илгээхдээ HTTP протоколоор, POST функцээр REST ашиглан Request Body хэсэгт уг SPEC-ийн дагуу хүсэлтийн JSON-ийг бэлдэж илгээх шаардлагатай.

ProtocolHTTP
MethodPOST
URL (үндсэн орчин)https://sp-api.golomtbank.com/api
Request Headers
Content-TypeApplication/json
X-Golomt-Cert-IdThere is a fixed value given in the tertiary system
X-Golomt-SignatureBase64.decode the request (JSON request) and send it secretly using RSA encrypt
Response Headers
Content-TypeApplication/json

Системийн аюулгүй байдал

Гуравдагч системд ашиглах key

    X-Golomt-Cert-Id:   test_cert_id
    Public key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ7rnZH30unXZbTNHNX7wjfECxWyaABX88F5cjSqnA5Soo6Uwu72ufzjEzAtoPk8sE9tnfi/74dyZa0PEK4mT7KK+Yy73acKNv0zKVYnFZMBWxH75ezEv6+4YllUHZ+AIjUN6d2Si/AJrvYmeFayykbXpFEN5+GycBp35cGxGYyQIDAQAB

Signature (X-Golomt-Signature) үүсгэх аргачлал.

Зааварын дагуу бэлдсэн хүсэлт буюу JSON хүсэлтийг SHA256 алгоритм ашиглаж HASH үүсгэнэ. Үүсгэсэн текстийн урт нь 64 Byte байна.

Тухайн үүсгэсэн 64 урттай текст өгөгдлийг өгөгдсөн түлхүүрүүдийн тусламжтай RSA (Mode = ECB; Padding = PKCS1Padding; Output text format = Base64) нууцлалын төрөл ашиглаж encrypt хийнэ. Гаралт нь http header –ийн X-Golomt-Signature утга болно.

Нэмэлт токен шалгах сервис

Байгууллагын вебийг хэрэглэгчийн нэмэлт токентой дуудах

Хэрэглэгч апп дээрээс цэсийг сонгоход нэг удаагийн нэмэлт токен үүснэ. Тухайн токенийг агуулсан байдлаар байгууллагын вебийг дуудна. ЖИШЭЭ

Үйлчилгээ үзүүлэгч байгуулга нь нэмэлт токеноор хэрэглэгчийн мэдээллийг банкнаас татан авч үйлчилгээ үзүүлнэ.

Нэмэлт токеноор хэрэглэчийн мэдээллийг татах

    URI: /utility/miniapp/token/check?language=mn
    Тайлбар: Retrieving user data with additional tokens.
    Хүсэлтийн төрөл: POST
    HEADER:
Field nameValue
X-Golomt-Cert-Id<<CERT_ID>>
X-Golomt-Signature<<ENCRYPTED_REQUEST>>

Description of the Request

Field nameValueExplanationMandatory
token123456789abcdefgНэмэлт токенТийм

Description of the Response

Field nameValueExplanation
individualId12121212Хэрэглэгчийн дугаар
registerNumberБӨ95020321Регистрийн дугаар
lastNameБатОвог
firstNameДоржНэр
account2015115673Дансны дугаар
mobileNumber99999999Утасны дугаар
emailbat@gmail.comИмэйл
imgUrlhttps://sp-uat.golomtbank.com:8443/api/utility/image/100603-093882492803.jpgSocialPay дахь хэрэглэгчийн профайл зураг

ЖАВА програмчлалын хэл дээрх жишээ код:

package mn.golomt.payment.util;

import org.apache.commons.codec.digest.DigestUtils;

import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

import static java.nio.charset.StandardCharsets.UTF_8;

public class RSAEncrypt {

    public static String encrypt(String data, String publicKey) {
        try {
            //get public key
            X509EncodedKeySpec keySpecPublic = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey pubKey = keyFactory.generatePublic(keySpecPublic);

            //encrypt
            byte[] hex = getHex(data).getBytes(UTF_8);

            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.ENCRYPT_MODE, pubKey);
            byte[] encryptedBytes = cipher.doFinal(hex);
            return Base64.getEncoder().encodeToString(encryptedBytes);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }

    public static String decrypt(String cipherText, String privateKey) {
        try {
            //get private key
            PKCS8EncodedKeySpec keySpecPrivate = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey pKey = keyFactory.generatePrivate(keySpecPrivate);

            byte[] encryptedBytes = Base64.getDecoder().decode(cipherText);

            //decrypt
            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.DECRYPT_MODE, pKey);
            byte[] decryptedMessage = cipher.doFinal(encryptedBytes);
            return new String(decryptedMessage, UTF_8);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public static String getHex(String data) {
        return DigestUtils.sha256Hex(data);
    }
}

← Үйл ажиллагааны диаграмSocialPay E-Commerce Deeplink →
  • Баримтын зориулалт
  • Хүсэлтийн ерөнхий мэдээлэл
    • Системийн аюулгүй байдал
    • Signature (X-Golomt-Signature) үүсгэх аргачлал.
    • Нэмэлт токен шалгах сервис
  • Байгууллагын вебийг хэрэглэгчийн нэмэлт токентой дуудах
    • Нэмэлт токеноор хэрэглэчийн мэдээллийг татах
    • Description of the Request
    • Description of the Response
    • ЖАВА програмчлалын хэл дээрх жишээ код:
Facebook Open Source
Copyright © 2024 Golomt Bank