在 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插件