阿里支付
微信支付
银联支付
Installation
npm install china-pay
阿里支付
app支付
回调处理
提现
Prepare
Importing
const privatePem = fs;//该私钥为无密码的私钥const publicPem = fs;const alipayJson = app_id: '' //应用ID notify_url: ''//通知地址;const key = privateKey: privatePem//私钥,格式为buffer publicKey: publicPem//公钥, 格式为bufferconst pay = 'alipay';//alipayJson, key 必传const alipay = alipayJson key
Usage
app支付(getAppParam)
- app端获取支付需要的参数
let biz_content = out_trade_no: '订单号' total_amount: '金额' subject: '订单标题' body: "商品描述"try //result为移动端需要给支付宝的数据 let result = await alipaycatcherr //err
回调处理(verifySign)
try //obj 为支付宝返回的body对象里面的内容 let result = await alipay //res.send("success");如果成功catcherr //认证失败
提现(refundTransfer)
try await alipay;catcherr //失败
微信支付
app统一下单接口
扫码支付
回调处理
提现
Importing
const wxpayJson = appid: '' //邮箱里 mch_id: ''//邮箱里 notify_url: //邮箱里;const key = key:''//邮箱里 pfxPath:''//微信证书提现时使用const pay = 'wxpay';//alipayJson, key 必传const wxpay = wxpayJson key
Usage
app统一下单接口(appUnifiedorder)
let obj = attach: '12313231'//附加数据(有时候必填) body: '测试' out_trade_no: '12312324143' total_fee: "1"//(支付费用(分)) try //前端需要的数据 let result = await wxpay; catcherr console
扫码支付(webUnifiedorder)
let obj = attach: '12313231'//附加数据(有时候必填) body: '测试' out_trade_no: '12312324143' total_fee: "1"//(支付费用(分)) try //支付的url码, 该码可以转为二维码 let result = await wxpay; catcherr console
回调处理(notify)
注: 微信返回的格式是xml格式, 因此先对其进行转换, express可以使用express-xml-bodyparser
中间件处理
//obj 里面的 key 可以是数组或者字符串let obj = appid: 'wx7c73ca24*******' attach: '1231323123' ......//失败则抛出异常, try let result = await wxpay catcherr // //之后需要给wx返回, 返回的参数为“SUCCESS”// res.set('Content-Type', 'text/xml');// res.send("SUCCESS")
提现(transfers)
obj = {} objopenid = '' objpartner_trade_no = '23234234234' objdesc='test' objamount = 100; try await wxpay catcherr //失败抛出异常
银联支付
获取tn
回调处理
Prepare
- 获取私钥
获取银联以
priv.pfx
结尾的证书后
const pem = ;const fs = ;const pfx = fs;pem;
- 获取certId
wopenssl = ;var p12 = wopensslpkcs12;var certs = wopensslx509;//certs里面的Serial就是certId, 但是是16进制的, 然后使用python int("1149699808", 16)将其转换为10进制
x509常用命令
openssl pkcs12 -in input.pfx -out mycerts.crt -nokeys -clcerts 将pfx或p12 生成证书。
openssl pkcs12 -in x.pfx -nocerts -nodes -passin pass:123456 | openssl rsa -out privkey.pem pfx生成rsa 私钥
openssl x509 -inform der -in certificate.cer -pubkey -noout > certificate_publickey.pem cer生成公钥(证书有两种格式, 一种是der, 一种是pem。 der是二进制, 而pem是字符串, 可以使用文本编辑器打开看)
Importing
const key = {
privateKey:fs.readFileSync('/home/dj/privkey.pem'),
publicKey:fs.readFileSync('/home/dj/pub.pem')
}
const unionpayJson = {
merId: "8986101739906**",
frontUrl: "http://papanda.tk:3100",
certId: "742461010**"
};
const pay = require('china-pay')('unionpay');
//unionpayJson key 必传
const unionpay = new pay(unionpayJson, key)
Usage
获取tn(getTn)
let obj = orderId :'211323213241234321412' txnAmt :'1'//(分) orderDesc :'这是一个测试'try //result 为tn 前端用来跟银联交互的数据 let result = await unionpay;catcherr console
回调处理(notify)
try //有result则成功 let result = await unionPay;catcherr //给银联的返回//res.send('success')