package com.zxhl.cms.paypal

import android.app.Activity
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.paypal.checkout.PayPalCheckout
import com.paypal.checkout.PayPalCheckout.start
import com.paypal.checkout.approve.Approval
import com.paypal.checkout.approve.OnApprove
import com.paypal.checkout.cancel.OnCancel
import com.paypal.checkout.createorder.*
import com.paypal.checkout.error.ErrorInfo
import com.paypal.checkout.error.OnError
import com.paypal.checkout.order.*
import com.paypal.checkout.shipping.OnShippingChange
import com.paypal.checkout.shipping.ShippingChangeActions
import com.paypal.checkout.shipping.ShippingChangeData
import java.util.*
import kotlin.collections.ArrayList


/**
 * @author (wangXuewei)
 * @datetime 2022-03-10 16:06 GMT+8
 * @detail :
 */
object PayPaylHelper {

//    private val TAG = "PayPaylHelper"
//    private var checkOrderMax: Int = 300//循环检测的最大次数
//    private var checkOrderCount: Int = -1//循环检测的初始次数
//    private var isCheckOrderFlag: Boolean = false//是否检测订单状态中
//    @RequiresApi(Build.VERSION_CODES.M)
//    private fun startPayPal(context: Activity, paypalOrderId: String) {
//        PayPalCheckout.start(CreateOrder { createOrderActions ->
//            createOrderActions.set(
//                paypalOrderId
//            )
//        }, null, null,
//            OnCancel {//实测取消订单后没走这个方法，走到了报错，报的returnUrl是空，但我们再paypal后台和sdk初始化均设置了的，而且在手机浏览器登录paypal买家账号后也是可以拉回我们app的，但是它还是会报这个错，无语子，估计还是paypal得bug
//                resetCheckPaypalOrder()
//                System.out.println("用户取消Paypal支付")
//            },
//            OnError { errorInfo ->
//                resetCheckPaypalOrder()
//                System.out.println("==========paypal onError=======ErrorInfo=======>: $errorInfo")
//                System.out.println(
//                    if (errorInfo?.reason.isNullOrBlank()) (if (errorInfo?.error?.message.isNullOrBlank())
//                        "Paypal支付未知错误" else errorInfo.error.message) else errorInfo!!.reason
//                )
//            })
//        checkOrderCount = 0
//        isCheckOrderFlag = true
//        startCheckPaypalOrder(context, paypalOrderId)
//    }
//
//    private fun startCheckPaypalOrder(context: Activity, paypalOrderId: String) {
//        System.out.println("======Stephen=======checkPaypalOrder====>Count:$checkOrderCount")
//        if (!isCheckOrderFlag) return
//        if (checkOrderCount >= checkOrderMax) {
//            resetCheckPaypalOrder()
//            System.out.println("Paypal订单支付等待超时")
//            return
//        }//end of if
//        ApiRequestMethod.checkPaypalOrder(paypalOrderId, object : RequestAllCallback<String> {
//            //这个是我们接口调用封装方法，换成你们自己的哈（REST v2订单详情接口：https://developer.paypal.com/api/orders/v2/#orders_get）
//            override fun onSuccess(data: String?) {//接口返回正确json形如：{"paypal_status":"CREATED"}
//                var isContinueLoop = true
//                val jsonObject = ToolUtils.instance.fromJsonToObj(data)
//                if (null != jsonObject && jsonObject.has("paypal_status")) {
//                    when (jsonObject.getString("paypal_status")) {
//                        "APPROVED" -> {//这个状态表示用户已经支付完成，后台开始捕获订单并开始执行确认了，实测这个状态有时差不多得持续1分多钟，快的话也是耗费20多秒，因此添加一个loading逻辑如下，此具体loading显示逻辑更换成你自己实际的loading框，注意loading框得依附在你自己App的当前支付界面上，因为你看到paypal的支付框实质是一个activity，依附在paypal上面会被误关闭
//                            if (!ToolUtils.instance.isLoadingShow()) ToolUtils.instance.showLoading(
//                                "确认支付结果中...",
//                                appendActivity = context
//                            )
//                        }
//                        "COMPLETED" -> {//这个状态表示后台捕获确认订单完成，也就是这笔订单真正的完成了
//                            isContinueLoop = false
//                            resetCheckPaypalOrder()
//                            System.out.println("Paypal订单支付成功")
//                        }
//                    }
//                }//end of if
//                if (isContinueLoop) {
////                ToolUtils.instance.delayExecute(1000L){//这个是我们延时调用封装方法，换成你们自己的哈
////                    checkOrderCount++
////                    startCheckPaypalOrder(context, paypalOrderId)
////                }
//                }//end of if
//            }
//
//            override fun onFailure(aliErrorResponse: AliErrorResponse, httpCode: Int): Boolean {
//                ToolUtils.instance.delayExecute(1000L) {
//                    checkOrderCount++
//                    startCheckPaypalOrder(context, paypalOrderId)
//                }
//                return false
//            }
//        })
//    }
//
//    private fun resetCheckPaypalOrder() {
//        checkOrderCount = 0
//        isCheckOrderFlag = false
//
////        ToolUtils.instance.closeLoading()//关闭loading框
//    }

}