using Aop.Api;
using Aop.Api.Domain;
using Aop.Api.Request;
using Aop.Api.Response;
using System;
using System.Collections.Generic;
using System.Text;

namespace PaymentSDK
{
   public class AliPayHelper
    {

        public string UnifiedOrder(AlipayTradeAppPayModel alipay)
        {
            IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AliPayConfig.APP_ID, AliPayConfig.APP_PRIVATE_KEY, "json", "1.0", "RSA2", AliPayConfig.ALIPAY_PUBLIC_KEY, AliPayConfig.CHARSET, false);
            // 实 例 化 具 体 API 对 应 的 request 类 , 类 名 称 和 接 口 名 称 对 应 , 当 前 调 用 接 口 名 称 如 ： alipay .trade .app .pay 
            AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
            // SDK 已 经 封 装 掉 了 公 共 参 数 ， 这 里 只 需 要 传 入 业 务 参 数 。 以 下 方 法 为 sdk 的 model 入 参 方 式 ( model 和 biz_content 同 时 存 在 的 情 况 下 取 biz_content ) 。 
            request.SetBizModel(alipay);
            request.SetNotifyUrl(AliPayConfig.NotifyUrl);
            // 这 里 和 普 通 的 接 口 调 用 不 同 ， 使 用 的 是 sdkExecute 
            AlipayTradeAppPayResponse response = client.SdkExecute(request);
            // HttpUtility .HtmlEncode 是 为 了 输 出 到 页 面 时 防 止 被 浏 览 器 将 关 键 参 数 html 转 义 ， 实 际 打 印 到 日 志 以 及 http 传 输 不 会 有 这 个 问 题 

            // 页 面 输 出 的 response .Body 就 是 orderString   可 以 直 接 给 客 户 端 请 求 ， 无 需 再 做 处 理 。
            return response.Body;
        }



        
      
    }
}
