在 react-native 中集成 Easypaisa

Posted

技术标签:

【中文标题】在 react-native 中集成 Easypaisa【英文标题】:Easypaisa integration in react-native 【发布时间】: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 相关的解决方案或适当的文档。

【问题讨论】:

【参考方案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 并享受。

【讨论】:

以上是关于在 react-native 中集成 Easypaisa的主要内容,如果未能解决你的问题,请参考以下文章

react-native项目中集成react-native-camera插件

此商家未启用 Google Pay。 [Android,React-Native]

React-native集成到原生项目

React-native集成到原生项目

React-native集成到原生项目

React-native 无法打开 ios 模拟器调试菜单