【问题标题】:Easypaisa integration in react-native在 react-native 中集成 Easypaisa
【发布时间】:2020-10-30 06:53:23
【问题描述】:

我正在尝试将 Easypaisa 支付集成到我的应用中。我有一个商家帐户。

这是我的代码

 const requestBody = 'storeId=xxxx&amount=xx&postBackURL=xxx&orderRefNum=xx';

 const requestHeader = {
 'Accept': 'application/json',
 'Content-Type': 'application/x-www-form-urlencoded',
 };

这里是 react-native-webview

 <WebView
    source={{
      uri: 'https://easypay.easypaisa.com.pk/easypay/Index.jsf',
      headers: requestHeader,
      body: requestBody,
      method: 'POST',
    }}
  />

这是我面临的一个错误

我尝试了许多没有成功的解决方案,也没有找到任何与 Easypaisa 相关的解决方案或适当的文档。

【问题讨论】:

    标签: api payment-gateway payment payment-processing


    【解决方案1】:

    我为此使用了 3 个包。

    import AesJs from 'aes-js';
    
    import { Buffer } from 'buffer';
    
    import queryString, { stringify } from 'query-string';
    

    解决了这个问题

    // 使用easypaisa HashKey在AES,ECB模式下生成字节加密

    第 1 步

    const aes = new AesJs.ModeOfOperation.ecb(AesJs.utils.utf8.toBytes(HASH_KEY));
    

    您可以从商家帐户生成哈希密钥。

    第 2 步

    pkcs5Pad

       function pkcs5Pad(text: string, blockSize: number): string {
       const pad = blockSize - (text.length % blockSize);
       return text + String.fromCharCode(pad).repeat(pad);
       }
    

    convertObjectToString

        function convertObjectToString(obj: any): string {
        let data = '';
        Object.keys(obj)
        .sort()
        .forEach((key) => {
        data += `${key}=${obj[key]}` + '&';
        });
        return data.slice(0, data.length - 1);
        }
    

    第 3 步

    // 生成HashMapReq

      const hasMapReq = Buffer.from(aes.encrypt(Buffer.from(
      pkcs5Pad(convertObjectToString(requestBody), 16))))
      .toString(
      'base64',
    );
    

    将您的 hashReq 附加到 request-body 并享受。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2019-06-16
      • 2021-11-03
      • 2019-12-25
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多