paypal java_PaypalUtil PayPal付款JAVA工具类
Maven坐标
com.paypal.sdk
rest-api-sdk
LATEST
JAVA工具类源码import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.paypal.api.payments.Amount;
import com.paypal.api.payments.Details;
import com.paypal.api.payments.Item;
import com.paypal.api.payments.ItemList;
import com.paypal.api.payments.Links;
import com.paypal.api.payments.Payer;
import com.paypal.api.payments.Payment;
import com.paypal.api.payments.PaymentExecution;
import com.paypal.api.payments.RedirectUrls;
import com.paypal.api.payments.Transaction;
import com.paypal.base.rest.APIContext;
import com.paypal.base.rest.PayPalRESTException;
public class PaypalUtil {
// sandbox
private final static String payPalClientID = "paypal客户端ID";
private final static String payPalClientSecret = "paypal客户端密钥";
private final static String payPalMode = "sandbox";
// live
//private final static String payPalClientID = "paypal客户端ID";
//private final static String payPalClientSecret = "paypal客户端密钥";
//private final static String payPalMode = "live";
/**
* 获取Paypal付款链接
* @param orderId
* @param orderName
* @param amt
* @param returnUrl
* @return
*/
public static String getPayLink(String orderId, String orderName, String amt, String returnUrl) {
String payLink = "";
// PayPal init
APIContext apiContext = new APIContext(payPalClientID, payPalClientSecret, payPalMode);
// Set payment details
Details details = new Details();
details.setShipping("0");
details.setSubtotal(amt);
details.setTax("0");
// Payment amount
Amount amount = new Amount();
amount.setCurrency("USD");
// Total must be equal to sum of shipping, tax and subtotal.
amount.setTotal(amt);
amount.setDetails(details);
// Transaction information
Transaction transaction = new Transaction();
transaction.setAmount(amount);
transaction.setDescription(orderName);
// ItemList information
ItemList itemList = new ItemList();
List items = new ArrayList();
Item item = new Item();
item.setName(orderName);
item.setDescription(orderName);
item.setCurrency("USD");
item.setQuantity("1");
item.setTax("0");
item.setPrice(amt);
items.add(item);
itemList.setItems(items);
transaction.setItemList(itemList);
// Add transaction to a list
List transactions = new ArrayList();
transactions.add(transaction);
// Add payer details
Payer payer = new Payer();
payer.setPaymentMethod("paypal");
// Add payment details
Payment payment = new Payment();
payment.setIntent("sale");
payment.setPayer(payer);
payment.setTransactions(transactions);
// Add redirect URLs
RedirectUrls redirectUrls = new RedirectUrls();
redirectUrls.setCancelUrl(returnUrl);
redirectUrls.setReturnUrl(returnUrl + orderId);
payment.setRedirectUrls(redirectUrls);
// Create payment
try {
Payment createdPayment = payment.create(apiContext);
Iterator links = createdPayment.getLinks().iterator();
while (links.hasNext()) {
Links link = links.next();
if (link.getRel().equalsIgnoreCase("approval_url")) {
// REDIRECT USER TO link.getHref()
payLink = link.getHref();
}
}
} catch (PayPalRESTException e) {
System.err.println(e.getDetails());
}
return payLink;
}
/**
* 获取Paypal付款状态
* @param paymentId
* @param payerId
* @return
*/
public static String getPayState(String paymentId, String payerId) {
String payState = "";
// PayPal init
APIContext apiContext = new APIContext(payPalClientID, payPalClientSecret, payPalMode);
Payment payment = new Payment();
payment.setId(paymentId);
PaymentExecution paymentExecution = new PaymentExecution();
paymentExecution.setPayerId(payerId);
try {
Payment createdPayment = payment.execute(apiContext, paymentExecution);
payState = createdPayment.getState();
// BigDecimal paymentAmt = new BigDecimal(createdPayment.getTransactions().get(0).getAmount().getTotal());
// String emailAddress = createdPayment.getPayer().getPayerInfo().getEmail();
} catch (PayPalRESTException e) {
System.err.println(e.getDetails());
}
return payState;
}
}
paypal java_PaypalUtil PayPal付款JAVA工具类相关推荐
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- Java工具类——UUIDUtils
借用一下百度百科的解释,来看一下UUID是什么. UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Ope ...
- java 文本工具类_干货:排名前16的Java工具类
原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...
- 干货:排名前16的Java工具类
image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- java字符串替换 数组,Java工具类-拆分字符串组装数组,替换字符
Java工具类--拆分字符串组装数组,替换字符 >>>>>>>>>>>>>>>>>>> ...
最新文章
- 深入了解line-height
- Android 如何判断CPU是32位还是64位
- No IP specified. Please specify IP with ‘objects’
- 机器学习中导数最优化方法(基础篇)
- Linux下如何进行FTP设置
- 汇编排序知识之冒泡排序
- iOS开发——手机号,密码,邮箱,身份证号,中文判断
- 几个用于序列化的代码片段
- 用asp.net编写冒泡排序法
- hdu6107 倍增法st表
- then 微信小程序_微信小程序和es6 promise的关系
- Math,Number
- 软件工程第1次阅读作业
- Golang语言 零基础入门教程
- 业务太忙,真的是没时间搞自动化理由吗?
- 《演员的自我修养》读后感
- 推荐一款稳定快速免费的前端开源项目 CDN 加速服务
- Activity生命周期的三种状态
- ubuntu 挂载文件后,文件权限属于root,只能读不能写解决办法
- I2C总线原理和应用实例(51单片机和AT24C02的I2C通讯)
热门文章
- win10JDK环境变量的配置
- 【编程|二十四点】关于编程解决二十四点的两种思路
- 如何使用Bootbox?
- 数据结构学习之矩阵乘法与矩阵的转置
- 神思SS628(100)型第二代身份证验证阅读机具二次开发
- 推荐一个好看且实用的火狐浏览器新标签页插件【火狐浏览器新标签页自定义美化】
- 在电脑上如何用桌面便签进行日程管理?
- c/c++:双人对战五子棋源代码
- qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ i
- 算法模板-深度优先遍历