All Projects → puti94 → React Native Puti Pay

puti94 / React Native Puti Pay

基于 React Native 的微信支付,支付宝支付插件

Projects that are alternatives of or similar to React Native Puti Pay

Pay
个人网站即时到账收款解决方案 / Personal website instant payment solution
Stars: ✭ 558 (+101.44%)
Mutual labels:  alipay, wechat
Stepchanger
步数修改器
Stars: ✭ 275 (-0.72%)
Mutual labels:  alipay, wechat
Laravel Pay
可能是我用过的最优雅的 Alipay 和 WeChat 的 laravel 支付扩展包了
Stars: ✭ 856 (+209.03%)
Mutual labels:  alipay, wechat
Okam
Mini program development framework
Stars: ✭ 399 (+44.04%)
Mutual labels:  alipay, wechat
Gopay
golang语言实现的支付模块,支持支付宝app,支付宝网页版,微信app,微信公众号支付
Stars: ✭ 151 (-45.49%)
Mutual labels:  alipay, wechat
Pay
可能是我用过的最优雅的 Alipay 和 WeChat 的支付 SDK 扩展包了
Stars: ✭ 4,176 (+1407.58%)
Mutual labels:  alipay, wechat
Gopay
QQ、微信(WeChat)、支付宝(AliPay)的Go版本SDK。【微信支付V3已支持,推荐使用微信V3接口】
Stars: ✭ 1,034 (+273.29%)
Mutual labels:  alipay, wechat
Socialite
Socialite is an OAuth2 Authentication tool. It is inspired by laravel/socialite, you can easily use it without Laravel.
Stars: ✭ 1,026 (+270.4%)
Mutual labels:  alipay, wechat
Rageframe2
一个基于Yii2高级框架的快速开发应用引擎
Stars: ✭ 1,553 (+460.65%)
Mutual labels:  alipay, wechat
Teepay
Typecho 个人支付宝、微信收款插件
Stars: ✭ 90 (-67.51%)
Mutual labels:  alipay, wechat
Wxapp Boilerplate
使用 webpack, babel, scss 开发的微信/支付宝小程序项目脚手架
Stars: ✭ 367 (+32.49%)
Mutual labels:  alipay, wechat
Monkeyking
MonkeyKing helps you to post messages to Chinese Social Networks.
Stars: ✭ 2,699 (+874.37%)
Mutual labels:  alipay, wechat
Gopay
golang支付:微信公众号,微信app,微信小程序,微信企业支付,支付宝网页版,支付宝app,支付宝企业支付
Stars: ✭ 313 (+13%)
Mutual labels:  alipay, wechat
Sns auth
通用第三方登录SDK,支持微信,微信扫码,QQ,微博登录,支付宝登录,Facebook,Line,Twitter,Google
Stars: ✭ 520 (+87.73%)
Mutual labels:  alipay, wechat
Swiftscan
A barcode and qr code scanner( 二维码/条形码扫描、生成,仿微信、支付宝)
Stars: ✭ 293 (+5.78%)
Mutual labels:  alipay, wechat
Vdonate
💰 为你的网站增加个微信、支付宝二维码,方便读者打赏
Stars: ✭ 55 (-80.14%)
Mutual labels:  alipay, wechat
Wxapp Webpack Plugin
📦 微信小程序 webpack 插件
Stars: ✭ 185 (-33.21%)
Mutual labels:  alipay, wechat
Sdk3rd
第三方SDK集成库,授权/分享/支付
Stars: ✭ 249 (-10.11%)
Mutual labels:  alipay, wechat
XLsn0wPay
XLsn0w WeChat And Alipay SDK Pay Manager 微信支付SDK/支付宝SDK/银联支付/Paypal支付 接入指南(一键支付管理工具类)
Stars: ✭ 31 (-88.81%)
Mutual labels:  alipay
React Native Wechat
🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android platforms (QQ: 336021910)
Stars: ✭ 2,842 (+925.99%)
Mutual labels:  wechat

react-native-puti-pay

Getting started

$ npm install react-native-puti-pay --save
//or
$ yarn add react-native-puti-pay

Mostly automatic installation

//react-native version>0.60+
$ cd ios && pod install
//or
$ react-native link react-native-puti-pay

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-puti-pay and add RNPutiPay.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNPutiPay.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java

    • Add import com.puti.paylib.PayReactPackage; to the imports at the top of the file
    • Add new PayReactPackage() to the list returned by the getPackages() method
  2. Append the following lines to android/settings.gradle:

       include ':react-native-puti-pay'
       project(':react-native-puti-pay').projectDir = new File(rootProject.projectDir,     '../node_modules/react-native-puti-pay/android')
    
  3. Insert the following lines inside the dependencies block in android/app/build.gradle:

       compile project(':react-native-puti-pay')
    

Config

iOS

  1. (使用pod管理则不需要这一步)TARGET -> Build Phases -> Linked Binary With Libraries 添加以下系统库 image

  2. 在项目中的info.plist中加入应用白名单,右键info.plist选择source code打开(plist具体设置在Build Setting -> Packaging -> Info.plist File可获取plist路径) :

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <!-- 支付宝 URL Scheme 白名单-->
        <string>alipay</string>
        <!-- 微信 URL Scheme 白名单-->
        <string>wechat</string>
        <string>weixin</string>
    
    </array>
    
  3. 设置 URL Scheme URL Scheme是通过系统找到并跳转对应app的设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用支付后,可直接跳转回你的app。微信填写微信ID,支付宝也建议添加ap+加支付宝应用id的形式以免冲突。

    image

  4. 在入口文件AppDelegate.m下设置回调

    
    #import <React/RCTLinkingManager.h>
    
      - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
      {
        return [RCTLinkingManager application:application openURL:url
                            sourceApplication:sourceApplication annotation:annotation];
      }
    
      - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
      {
        return [RCTLinkingManager application:application openURL:url options:options];
      }
    

Android

在包名目录下创建wxapi文件夹,新建一个名为WXPayEntryActivity的activity继承 com.puti.paylib包名下的XWXPayEntryActivity


    // wxapi/WXPayEntryActivity.jave
    package com.自己包名.wxapi;
    import com.puti.paylib.XWXPayEntryActivity;
    public class WXPayEntryActivity extends XWXPayEntryActivity {
    }

   并配置Android Manifest XML
    <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:label="@string/app_name"
            android:exported="true" />

如果在早期版本有可能需要实现ReactPackage需要实现createJSModules方法。

那么在PayReactPackage文件添加一行

    @Override
    public List<Class<? extends JavaScriptModule>> createJSModules() {
        return Collections.emptyList();
    }

Usage

      import XPay from 'react-native-puti-pay'

        //设置微信ID
        XPay.setWxId(id)
        //设置    支付宝URL Schemes
        XPay.setAlipayScheme(scheme)
        //支付宝开启沙箱模式 仅限安卓
        XPay.setAlipaySandbox(isSandBox)
        //支付宝支付
        //orderInfo是后台拼接好的支付参数
        XPay.alipay(orderInfo,(res)=>console.log(res))
        //微信支付
        //这些参数都是由后台生成的
        let params = {
          partnerId:partnerId,
          prepayId: prepayId,
          packageValue:packageValue,
          nonceStr: nonceStr,
          timeStamp: timeStamp,
          sign: sign,
       }
        XPay.wxPay(params,(res)=>console.log(res))

Issues

示例 此项目已经集成好,可以参照上面支付例子,如果调用支付跳转到了微信支付宝,不管支付成不成功也跳转回来并有相应的回调则说明已经集成成功了,若支付失败就是所传入参数的问题(你可以强势甩锅给后端开发人员了) 由于之前项目原因,只需要微信支付宝支付,所有就写了这个插件,此项目比较适用于只需要微信支付宝支付功能,或者微信支付宝分享登录等功能已由其它第三方聚合平台(友盟)等完成。如需单独集成, 建议微信使用react-native-wechat, 支付宝使用react-native-yunpeng-alipay。 一下列出一些集成微信支付宝支付经常遇到的坑。

  1. 安卓微信支付时跳转到微信了然后闪退 这是不熟悉安卓人员经常遇到的坑,这是安卓的签名机制问题,安卓签名跟微信后台应用配置的签名不匹配,微信判定应用非法直接退出。 如果出现这个问题,修改签名并且清理微信的数据(微信有缓存,需要直接清理数据,或者卸载重装,或者换台手机) 要想一劳永逸避免这个问题 参考此配置项将debug签名以及release签名同步

    debug  {
                signingConfig signingConfigs.release
            }
    release {
                   signingConfig signingConfigs.release
               }
    
  2. ios 支付完没有返回商家按钮 ios应用间跳转判断跳转到哪个应用是通过上面ios配置第三部设置的URL Scheme区分的。XPay.setWxId()XPay.setAlipayScheme() 方法都是通过支付的sdk将Scheme传给微信支付宝,支付成功后才能正确跳转回应用,也才有返回商家按钮 所有要是没有此功能,请再对照文档检查一遍

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].