1.0.56 • Published 4 days ago

payshift v1.0.56

Weekly downloads
-
License
ISC
Repository
-
Last release
4 days ago

Payshift

unified payment api for multiple payment processors

Installation

npm install payshift

Supported Payment Processors

  • Alipay
  • Wechat Pay
  • Stripe
  • Paypal
  • EPay
  • Multiple EPay instances with round robin algorithm to split your cashflow and risk
  • CCBill

Usage

import {
  Payshift,
  AlipayProvider,
  StripeProvider,
  WechatPayProvider,
  EPayProvider,
  EPayClusterProvider
} from "payshift"
import { privateKeyPath, alipayPublicKeyPath, appId } from "your alipay config"
import { testKey, endpointSecret } from "your stripe config"
import { apiKey, mcid, publicKeyPath } from "your wechatpay config"
import { pid, key, endpoint } from "your epay config"

const alipay = new AlipayProvider({ 
  appId,
  privateKey: fs.readFileSync(path.join(__filename, privateKeyPath))
  alipayPublicKey: fs.readFileSync(path.join(__filename, alipayPublicKeyPath))
})
const stripe = new StripeProvider(testKey)
const wechat = new WechatPayProvider(appId, mcid, publicKeyPath, privateKeyPath, apiKey)
const epay = new EPayProvider(endpoint, pid, key)
const anotherEPay = new EPayProvider(anotherEndpoint, anotherPid, anotherKey)
const epayCluster = new EPayClusterProvder([epay, anotherEPay])

const payshift = new Payshift([alipay, stripe, wechat, epay, epayCluster], {
  stripeEndpointSecret: endpointSecret
})
// webhooks server, used for notify_url for some payments
payshift.startWebServer('http://localhost:3000', 3000)

// optionally, you can use mongodb to save your txns in "payshift" database
payshit.usedb()

// handle webhooks using the internal webhook server
payshift.on('charge.succeeded', async event => {
  // handle event, eg. update the status of your order
  // throwing any error will fail the webhook to the payment processor as well
})

Where event is a PayshiftEvent

type PayshiftEvent = {
  amount?: number, // in cents
  title?: string,
  outTradeNo?: string,
  tradeNo?: string,
  provider: PayshiftProviderName,
  name: PayshiftEventName,
  currency?: CurrencyCode,
  accountId?: string,
}

Then

// depending on your channel, res varys
const res = await payshift.createCharge({
  outTradeNo: '123123123',
  title: 'item',
  amount: 1,
  channel: 'alipay_mobile_web',
  currency: CurrencyCode.CNY,
  returnUrl: 'http://taobao.com',
  clientIp: '127.0.0.1',
})

// in this case for alipay_mobile_web, res.data is a string of url
return res.data

Supported Payment Channels

type PayshiftChannel = 'stripe_web' | 'alipay_web' | 'wechat_qrcode' |
'wechat_mobile_web' | 'alipay_mobile_web' | 'epay_alipay' | 'epay_wechat_pay' |
'epay_cluster_alipay' | 'epay_cluster_wechat_pay' | 'order2faka' | 'paypal' | 'ccbill_web'

Using Provider Alone

Of course you can use provider independently

const provider = new StripeProvider(testKey)
const accountId = await provider.createAccount({
  country: 'JP',
  type: 'express',
  business_type: 'individual',
  capabilities: { transfers: { requested: true }},
  tos_acceptance: { service_agreement: 'recipient' },
})
const url = await provider.createAccountLink(accountId, 'http://taobao.com', 'http://taobao.com')
console.log(url)
1.0.56

4 days ago

1.0.55

21 days ago

1.0.51

1 month ago

1.0.54

1 month ago

1.0.53

1 month ago

1.0.52

1 month ago

1.0.50

1 month ago

1.0.49

1 month ago

1.0.37

2 months ago

1.0.36

2 months ago

1.0.35

2 months ago

1.0.39

2 months ago

1.0.38

2 months ago

1.0.40

2 months ago

1.0.44

2 months ago

1.0.43

2 months ago

1.0.42

2 months ago

1.0.41

2 months ago

1.0.48

2 months ago

1.0.47

2 months ago

1.0.46

2 months ago

1.0.45

2 months ago

1.0.34

2 months ago

1.0.33

3 months ago

1.0.29

3 months ago

1.0.28

3 months ago

1.0.32

3 months ago

1.0.31

3 months ago

1.0.30

3 months ago

1.0.26

3 months ago

1.0.27

3 months ago

1.0.25

5 months ago

1.0.24

6 months ago

1.0.23

6 months ago

1.0.22

6 months ago

1.0.21

6 months ago

1.0.20

6 months ago

1.0.19

6 months ago

1.0.18

6 months ago

1.0.17

6 months ago

1.0.16

6 months ago

1.0.15

6 months ago

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago