using RestSharp;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
/*
必须先获取令牌得到Token才能进行其他操作
*/
/// <summary>
/// Paypal支付相关方法
/// </summary>
public class PostHttp : MonoBehaviour {
// Use this for initialization
void Start () {
string body = string.Format("\"id\":\"{0}\",\"description\":\"{1}\",\"amount\":\"{2}\",\"price\":\"{3}\",\"currency\":\"{4}\"", 1108662629729079296, "上山打老虎", 3, 0.2, "USD");
body = "{" + body + "}";
Debug.Log(body);
Debug.Log("{\"id\":\"1108662629729079296\",\"description\":\"上山打老虎\",\"amount\":\"3\",\"price\":\"0.2\",\"currency\":\"USD\"}");
}
/*1:充值接口
请求:
Url: http://domain/v1/recharge
Method: POST
请求体: {
“userId”:””, //游戏账户ID
“id”:””, //充值策略ID
“amount”:””, //游戏积分数量,指的是该策略的积分数量
“price”:””, //策略单价,指的是充值该策略一次的钱
“currency”:”USD”, //货币单位,目前仅支持USD
“rechargeNumber”:””, //充值数量,指的是充值该策略多少次
}
响应:
状态: 成功200 , 其它失败
ContentType: text/plain
响应体: paypal支付url,在浏览器中打开开始支付
*/
/// <summary>
/// 充值接口方法
/// </summary>
/// <param name="userId">游戏账户ID</param>
/// <param name="id">充值策略ID</param>
/// <param name="amount">游戏积分数量,指的是该策略的积分数量</param>
/// <param name="price">策略单价,指的是充值该策略一次的钱</param>
/// <param name="currency">货币单位,目前仅支持USD</param>
/// <param name="rechargeNumber">充值数量,指的是充值该策略多少次</param>
private void PayPalClick(string userId,string id,string amount,string price, string rechargeNumber, string currency="USD")
{
//获取令牌
string token = GetToken();
//创建策略
var client = new RestClient("http://xxx.xx.xx.33:8080/v1/recharge");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "bearer " + token);
request.AddHeader("Content-Type", "text/plain");
//先去掉头尾的括号待会再加上
string body = string.Format("\n\t\"userId\": \"{0}\",\n \"id\": \"{1}\",\n \"amount\": \"{2}\",\n \"price\": \"{3}\",\n \"currency\": \"{4}\",\n \"rechargeNumber\": \"{5}\"\n",
userId,id,amount,price, currency, rechargeNumber);
body = "{" + body + "}";
/*
请求体: {
“userId”:””, //游戏账户ID
“id”:””, //充值策略ID
“amount”:””, //游戏积分数量,指的是该策略的积分数量
“price”:””, //策略单价,指的是充值该策略一次的钱
“currency”:”USD”, //货币单位,目前仅支持USD
“rechargeNumber”:””, //充值数量,指的是充值该策略多少次
}
*/
request.AddParameter("undefined", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
}
/// <summary>
/// 充值接口方法直接按钮调用
/// </summary>
public void PayPalClick()
{
}
/* 2:充值策略接口
请求:
Url: http://domain/v1/rechargePolicy
Method: POST
请求体: {
“description”:””, //策略描述
“amount”:””, //游戏积分数量,指的是该策略的积分数量
“price”:””, //策略单价,指的是充值该策略一次的钱
“currency”:”USD”, //货币单位,目前仅支持USD
}
响应:
状态: 成功200 , 其它失败
ContentType: text/plain
响应体: 新建策略的ID*/
/// <summary>
/// 创建充值策略接口
/// </summary>
/// <param name="description">策略描述</param>
/// <param name="amount">游戏积分数量,指的是该策略的积分数量</param>
/// <param name="price">策略单价,指的是充值该策略一次的钱</param>
/// <param name="currency">货币单位,目前仅支持USD </param>
private void CreateClick(string description,string amount,string price,string currency = "USD")
{
//获取令牌
string token = GetToken();
//创建策略
var client = new RestClient("http://xxx.xx.1xx.33:8080/v1/rechargePolicy");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "bearer " + token);
request.AddHeader("Content-Type", "text/plain");
string body = string.Format("\n\t\"description\": \"{0}\",\n \"amount\": \"{1}\",\n \"price\": \"{2}\",\n \"currency\": \"{3}\"\n",description,amount,price,currency);
body = "{" + body + "}";
request.AddParameter("undefined", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
}
/// <summary>
/// 创建充值策略接口直接按钮调用
/// </summary>
public void CreateClick()
{
}
/* 3:更新策略接口
请求:
Url: http://domain/v1/rechargePolicy
Method: PATCH
请求体: {
“id”:””, //要更新的策略的ID
“description”:””, //策略描述
“amount”:””, //游戏积分数量,指的是该策略的积分数量
“price”:””, //策略单价,指的是充值该策略一次的钱
“currency”:”USD” //货币单位,目前仅支持USD
}
响应:
状态: 成功200 , 其它失败
响应体: 空
*/
/// <summary>
/// 更新策略接口方法参数调用
/// </summary>
/// <param name="id">要更新的策略的ID</param>
/// <param name="description">策略描述</param>
/// <param name="amount">游戏积分数量,指的是该策略的积分数量</param>
/// <param name="price">策略单价,指的是充值该策略一次的钱</param>
/// <param name="currency">货币单位,目前仅支持USD</param>
private void UpdateClick(string id,string description, string amount, string price, string currency = "USD")
{
//获取令牌
string token = GetToken();
//更新策略
var client = new RestClient("http://xxx.xx.xx.xx:8080/v1/rechargePolicy");
var request = new RestRequest(Method.PATCH);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "bearer " + token);
string body = string.Format("\"id\":\"{0}\",\"description\":\"{1}\",\"amount\":\"{2}\",\"price\":\"{3}\",\"currency\":\"{4}\"",id, description, amount, price, currency);
body = "{" + body + "}";
//转义字符\" 双引号
request.AddParameter("undefined", "{\"id\":\"1108662629729079296\",\"description\":\"上山打老虎\",\"amount\":\"3\",\"price\":\"0.2\",\"currency\":\"USD\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
}
/// <summary>
/// 更新策略接口方法
/// </summary>
public void UpdateClick()
{
}
/* 4:删除策略接口
请求:
Url: http://domain/v1/rechargePolicy/{id}
(路径变量,策略ID)
Method: DELETE
请求体: 空
响应:
状态: 成功200 , 其它失败
响应体: 空
*/
/// <summary>
/// 删除策略接口方法
/// </summary>
/// <param name="tokenId">要删除的策略id</param>
private void DeleteClick(string tokenId)
{
//获取令牌
string token = GetToken();
//删除枚举
string url = string.Format("http://xxx.xx.xx.xx:8080/v1/rechargePolicy/{0}", tokenId);
var client = new RestClient(url);
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "bearer " + token);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
}
/// <summary>
/// 封装删除策略接口方法
/// </summary>
public void DeleteClick()
{
}
/* 5:枚举策略接口
请求:
Url: http://domain/v1/rechargePolicy
Method: GET
请求体: 空
响应:
状态: 成功200 , 其它失败
ContentType: application/json
响应体: [{
“id”:””,
“description”:””,
“amount”:””,
“price”:””,
“currency”:”USD”
},…]
*/
/// <summary>
/// 枚举策略接口
/// </summary>
public void AllTokenClick()
{
//获取令牌
string token = GetToken();
//策略枚举
var client = new RestClient("http://xx.xx.xx.33:8080/v1/rechargePolicy");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "bearer "+ token);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
}
/* 6:查询单个策略接口
请求:
Url: http://domain/v1/rechargePolicy/{id}
(路径变量,策略ID)
Method: GET
请求体: 空
响应:
状态: 成功200 , 其它失败
ContentType: application/json
响应体: {
“id”:””,
“description”:””,
“amount”:””,
“price”:””,
“currency”:”USD”
}
*/
/// <summary>
/// 查询单个策略接口方法
/// </summary>
/// <param name="tokenId">指定查询的策略id</param>
public void SelectClick(string tokenId)
{
//获取令牌
string token = GetToken();
//策略枚举
string url = string.Format("http://xx.xx5.xx.33:8080/v1/rechargePolicy/{0}", tokenId);
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "bearer " + token);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
}
/// <summary>
/// 封装查询单个策略接口
/// </summary>
public void SelectClick()
{
}
/// <summary>
/// 获取令牌 所有操作的基础
/// </summary>
public string GetToken()
{
var client = new RestClient("http://xxx.x5.xx.33/api/oauth/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Basic c3lzdGVtX3NlcnZpY2U6c3lzdGVtX3lmdGtfMTIzNDU2");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"grant_type\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\nyingfuzp@126.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nyftk123456\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Debug.Log(response.Content);
TokenInfo tokenInfo = JsonUtility.FromJson<TokenInfo>(response.Content);//自带解析json
Debug.Log(tokenInfo.access_token);
return tokenInfo.access_token;
}
// Update is called once per frame
void Update () {
}
}
/*
申请令牌返回结果
{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NTM1MDQxNzIsInVzZXJfbmFtZSI6IjExMDc5MjMyNjg4NDI1NTMzNDUiLCJhdXRob3JpdGllcyI6WyJST0xFX01BTkFHRV9aSUxMSU9OQUlSRSJdLCJqdGkiOiI3OWViMzYwMi1jYzRmLTQ4ZjYtYmZiYy02OWRhMGI5YTYwZDYiLCJjbGllbnRfaWQiOiJzeXN0ZW1fc2VydmljZSIsInNjb3BlIjpbInNlcnZlciJdfQ.iOkDeQzM-aqnOV25bolhZ2-ziVco3qzsM4ZrQ-Iy43o",
"token_type":"bearer",
"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiIxMTA3OTIzMjY4ODQyNTUzMzQ1Iiwic2NvcGUiOlsic2VydmVyIl0sImF0aSI6Ijc5ZWIzNjAyLWNjNGYtNDhmNi1iZmJjLTY5ZGEwYjlhNjBkNiIsImV4cCI6MTU1MzUwNDE3MiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9NQU5BR0VfWklMTElPTkFJUkUiXSwianRpIjoiYjczMzhmNzEtZmM5Mi00M2RhLWE0NDYtY2IyZGY2MGNmZWQzIiwiY2xpZW50X2lkIjoic3lzdGVtX3NlcnZpY2UifQ.ZaAdt4-5xg4DeGAnSuYk536cFA4eahzMcqngL5OGMGk",
"expires_in":3599,
"scope":"server",
"jti":"79eb3602-cc4f-48f6-bfbc-69da0b9a60d6"}
UnityEngine.Debug:Log(Object)
*/
public class TokenInfo
{
public string access_token;
public string token_type;
public string refresh_token;
public string expires_in;
public string scope;
public string jti;
}