Observed since 20 Oct, 22:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0x5e/react-native-alipay
Alipay SDK for React Native. Support RN >= 0.47.
Alipay SDK for React Native. Support mobile webpage url payment. Support RN >= 0.47.
Native AlipaySDK library (download page):
$ yarn add @0x5e/react-native-alipay
infoStr {String} Auth request info in query string format. Must be signed before use. See Auth request params description.Returns object with following fields:
| field | type | description |
|---|---|---|
resultStatus | String | See Response code description |
result | String | Result data in query string format |
memo | String | Reserved field, nothing |
The result data has following fields:
| field | type | description |
|---|---|---|
success | Boolean | true if succeed |
result_code | String | Result code |
auth_code | String | Authorization code |
user_id | String | User id |
The result_code description:
| code | description |
|---|---|
| 200 | 业务处理成功,会返回authCode |
| 202 | 系统异常,请稍后再试或联系支付宝技术支持 |
| 1005 | 账户已冻结,如有疑问,请联系支付宝技术支持 |
Example code:
import QueryString from 'query-string';
import Alipay from '@0x5e/react-native-alipay';
// 快捷登录授权
try {
let infoStr = 'apiname=com.alipay.account.auth&method=alipay.open.auth.sdk.code.get&app_id=xxxx&app_name=mc&biz_type=openservice&pid=xxxx&product_id=APP_FAST_LOGIN&scope=kuaijie&target_id=xxxx&auth_type=AUTHACCOUNT&sign_type=RSA2&sign=xxxx'; // get from server, signed
let response = await Alipay.authWithInfo(infoStr);
console.info(response);
let { resultStatus, result, memo } = response;
let { success, result_code, auth_code, user_id } = QueryString.parse(result);
// TODO: ...
} catch (error) {
console.error(error);
}
isSandbox {boolean} Whether to open sandbox. Must be payed before use. See 使用沙箱环境orderStr {String} Order info in query string format. Must be signed before use. See App payment request params description.Returns object with following fields:
| field | type | description |
|---|---|---|
resultStatus | String | See Response code description |
result | String | Result data in json string format |
memo | String | Reserved field, nothing |
The result data has following fields:
| field | type | description |
|---|---|---|
code | String | 结果码,具体见公共错误码 |
msg | String | 处理结果的描述,信息来自于code返回结果的描述 |
app_id | String | 支付宝分配给开发者的应用Id |
out_trade_no | String | 商户网站唯一订单号 |
trade_no | String | 该交易在支付宝系统中的交易流水号 |
total_amount | String | 该笔订单的资金总额,单位为RMB-Yuan |
seller_id | String | 收款支付宝账号对应的支付宝唯一用户号 |
charset | String | 编码格式 |
timestamp | String | 时间 |
Example code:
import Alipay from '@0x5e/react-native-alipay';
// APP支付
try {
// 打开沙箱
Alipay.setAlipaySandbox(true)
let orderStr = 'app_id=xxxx&method=alipay.trade.app.pay&charset=utf-8×tamp=2014-07-24 03:07:50&version=1.0¬ify_url=https%3A%2F%2Fapi.xxx.com%2Fnotify&biz_content=%7B%22subject%22%3A%22%E5%A4%A7%E4%B9%90%E9%80%8F%22%2C%22out_trade_no%22%3A%22xxxx%22%2C%22total_amount%22%3A%229.00%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&sign_type=RSA2&sign=xxxx'; // get from server, signed
let response = await Alipay.pay(orderStr);
console.info(response);
let { resultStatus, result, memo } = response;
let { code, msg, app_id, out_trade_no, trade_no, total_amount, seller_id, charset, timestamp } = JSON.parse(result);
// TODO: ...
} catch (error) {
console.error(error);
}
h5PayUrl {String} The url string of mobile webpage payment. You may get it from webview. See document for detail.Returns object with following fields:
| field | type | description |
|---|---|---|
resultCode | String | 返回码 |
returnUrl | String | 支付结束后应当跳转的url地址 |
Example code:
import Alipay from '@0x5e/react-native-alipay';
// 手机网站转APP支付
try {
let h5PayUrl = 'https://wappaygw.alipay.com/service/rest.htm?_input_charset=utf-8&format=xml&partner=xxxx&req_data=%3Cauth_and_execute_req%3E%3Crequest_token%3Exxxx%3C%2Frequest_token%3E%3C%2Fauth_and_execute_req%3E&sec_id=MD5&service=alipay.wap.auth.authAndExecute&v=2.0&sign=xxxx'; // get from webview, signed
let { resultCode, returnUrl } = await Alipay.payInterceptorWithUrl(h5PayUrl);
console.info(resultCode, returnUrl);
} catch (error) {
console.error(error);
}
If you want to do client side signature instead of server side (not recommend), you can use this.
object {Object} Object to be signed. The object.sign_type can specify RSA (default) or RSA2.privateKey {String} Private key in PKCS#1 or PKCS#8 format.Note:
PKCS#1 private key should have wrapped with -----BEGIN RSA PRIVATE KEY----- and -----END RSA PRIVATE KEY-----
PKCS#8 private key should have wrapped with -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY-----
Returns The query string with signature. See Process of signature for detail.
Example code:
import Alipay from '@0x5e/react-native-alipay';
// 签名
let params = {
app_id: 2183,
biz_content: '{"scopes":["auth_base"],"state":"init"}',
method: 'alipay.user.info.auth',
timestamp: '2017-10-13 00:00:00',
version: '1.0',
};
let privateKey = '-----BEGIN RSA PRIVATE KEY-----\n' + ... + '\n-----END RSA PRIVATE KEY-----';
let signedQuery = Alipay.sign(params, privateKey);
console.info(signedQuery); // app_id=2183&biz_content=%7B%22scopes%22%3A%5B%22auth_base%22%5D%2C%22state%22%3A%22init%22%7D&method=alipay.user.info.auth&sign_type=RSA×tamp=2017-10-13%2000%3A00%3A00&version=1.0&sign=xxxx
| code | description |
|---|---|
| 9000 | 操作成功 |
| 8000 | 正在处理中 |
| 4000 | 操作失败 |
| 5000 | 重复请求 |
| 6001 | 用户中途取消 |
| 6002 | 网络连接出错 |
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
bufferEnvironment{
"local_name": "buffer",
"alias": false,
"peer_metadata": null
} | ^5.0.8 | runtime |
jsrsasignEnvironment{
"local_name": "jsrsasign",
"alias": false,
"peer_metadata": null
} | ^8.0.4 | runtime |
babel-coreEnvironment{
"local_name": "babel-core",
"alias": false,
"peer_metadata": null
} | ^6.26.0 | development |
babel-jestEnvironment{
"local_name": "babel-jest",
"alias": false,
"peer_metadata": null
} | ^21.2.0 | development |
jestEnvironment{
"local_name": "jest",
"alias": false,
"peer_metadata": null
} | ^21.2.1 | development |
query-stringEnvironment{
"local_name": "query-string",
"alias": false,
"peer_metadata": null
} | ^5.0.0 | development |
react-nativeEnvironment{
"local_name": "react-native",
"alias": false,
"peer_metadata": null
} | ^0.20.0 | development |
react-nativeEnvironment{
"local_name": "react-native",
"alias": false,
"peer_metadata": null
} | >=0.20 | peer |
Source distribution
{
"shasum": "1adb4003427806688b41db9d5db355e866e3d94c",
"tarball": "https://registry.npmjs.org/@0x5e/react-native-alipay/-/react-native-alipay-0.2.7-beta.tgz",
"integrity": "sha512-0LOwtmnTjkAVURLcrvzGWQogwKL3OjZFpColpbxerBobuODC1Qb4axPXUCc/eUYwcxloO4T8w9DYnkv6zVw8og==",
"fileCount": 43,
"unpackedSize": 12418133,
"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetCAFCRA9TVsSAnZWagAA/jgP/2+eZCfj0I9AIHNBrzqZ\n++c5qppoKWtcAkavJJ1yBN79qL0geaNiTIMhiEDxaFCBjL9eM6tJnKa8/pGC\n5OwlplOFSbQ8Sw2u/oTFvA5EI40Hi0qUNRnAE9QCyHtSsj7NxiR4e28ALTSN\nHDf/zBLkiL3tERy6FVnyBMBL9cMH/7kdIw2/W4knVxk+KrgWqUrEsZTk0vcW\nX+1+wfcB1mpTgIlFVz0wVBdzf2AWNUHORmCvID0tySzeVnn4UCZgKG2AfQJS\nMwzP+ie2aFPaBUMNckIX7f4MlM6CoNiOaWWDVeLV05RlIs3Z3kxTPKqCr80B\nvqurdHUY54Jb6SrnmB1/L3olrIUKz4RplMO5xCJdzp6Eo/853kNrUGkng6MQ\nKiz3bzRY1ioriRmJti91hugJRgtU6MDu/TzhCmqvvRngpnzC+yLBZNiQ0wfd\nJuropyUXpKw2vtZZ5W8QwRIp3drV0E80fd3nYv9HHNZFODaw8prHFmA4GbUQ\niuh0v+lVLS4nOI8bHvBXJruD9dn6N5EXdt8AE+TQkVlBVR8NwIOmPqC+mrCb\nze6/4MDkmKQ3vT2lfr/H3TbQwTjPC3wrhPLs013CDNd+p+9Cvyv+uok9b+iL\nC6QifQPKtAOcDG138Y8m3fQcoyLPcTzCtVxNa0KSEz8MCmgoXoxC5l/nfL9Y\nnIpm\r\n=OxHL\r\n-----END PGP SIGNATURE-----\r\n",
"signatures": [
{
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
"sig": "MEUCIQDe5mDXMadUeTN+xYZPvzI9XJkhm84Mt+UphCPpXhUYMQIgTtQrxi/Klog0zL2joXl0qFKMJEEjS8zlTSf1CJCUT3Y="
}
]
}Observed since 20 Oct, 22:38 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:dc773fa63230fdc7240b74e150346be53ca84468eb81a4a55ce319b685b05dba