PayPal 对接
时间:2019-1-29 15:39:39
文章相应链接:
官方SDK:https://developer.paypal.com/docs/api/rest-sdks/
官方API:https://developer.paypal.com/docs/api/payments/v1/
官方.NET 支付案例:https://paypal.github.io/PayPal-NET-SDK/Samples/PaymentWithPayPal.aspx.html
官方SDK 支付使用逻辑:https://developer.paypal.com/docs/api/quickstart/create-process-order/#
PayPal 支付流程说明:
1。安装官方SDK (上面的第一个链接)
.NET 案例: Install-package Paypal
2.编写支付代码(上面的第4个链接)
3.创建支付订单详情,返回一个approval_url(获得这个URL)返回前端请求跳转到这个页面确认订单信息,用户点击支付按钮。
4.paypa 回调 后台配置的 URL
5.处理业务逻辑,例如修改订单状态等等
6.UI 渲染支付成功页面。
7. End 结束。
代码案例:
public static bool PayPalCreate(string payerId) // 这个ID 是回调的时候自己传递过来的。所以自行获取调用
{
try
{
var payer = new Payer() { payment_method = "paypal" };
var config = ConfigManager.Instance.GetProperties();
var accessToken = new OAuthTokenCredential(config).GetAccessToken();
var apiContext = new APIContext(accessToken);
string createParamId = "";
if (string.IsNullOrEmpty(payerId))
{
var guid = Convert.ToString((new Random()).Next(100000));
//var baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/PaymentWithPayPal.aspx?";
var baseUrl = "https://164l647f09.51mypc.cn/PayStripe.ashx?method=PayImageListTest?";
var redirectUrl = baseUrl + "guid=" + guid;
var redirUrls = new RedirectUrls()
{
cancel_url = redirectUrl + "&cancel=true",
return_url = redirectUrl
};
var itemList = new ItemList()
{
items = new List<Item>()
{
new Item()
{
name = "Item Name",
currency = "TWD",
price = "15",
quantity = "5",
sku = "sku"
},
new Item()
{
name = "Item Name2",
currency = "TWD",
price = "15",
quantity = "5",
sku = "sku"
}
}
};
var details = new Details()
{
tax = "30", // 这几个价格都是要 求和, 并且相等, 官网有说明
shipping = "10",
subtotal = "150"
};
var amount = new Amount()
{
currency = "TWD",
total = "190.00", // Total must be equal to sum of shipping, tax and subtotal.
details = details
};
var transactionList = new List<Transaction>();
transactionList.Add(new Transaction()
{
description = "Transaction description.",
invoice_number = "123456789101113",
amount = amount,
item_list = itemList
});
var payment = new Payment()
{
intent = "sale",
payer = payer,
redirect_urls = redirUrls,
transactions = transactionList,
};
var createdPayment = payment.Create(new APIContext(accessToken));
createParamId = createdPayment.id; // 需要存储起来,方便回调的时候用这个ID去做支付扣款,我这边没做存储,只是复制出来了,然后调试的时候粘贴上去做的扣款
// payerId = createdPayment.payer.payer_info.payer_id;
var links = createdPayment.links.GetEnumerator();
while (links.MoveNext())
{
var link = links.Current;
if (link.rel.ToLower().Trim().Equals("approval_url"))
{
var linkUrl = link.href;
// Redirect the customer to link.href
}
}
// Using the information from the redirect, setup the payment to execute.
}
else
{
var createdPaymentId = createParamId; // 需要存储起来,方便回调的时候用这个ID去做支付扣款,我这边没做存储,只是复制出来了,然后调试的时候粘贴上去做的扣款
var paymentExecution = new PaymentExecution() { payer_id = payerId };
var payment2 = new Payment() { id = createdPaymentId };
// Execute the payment.
var executedPayment = payment2.Execute(apiContext, paymentExecution);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
一个简单的支付案例分享,官网有很多支付模式,大伙可以自己去瞅瞅。
文章中有很多依赖没有完全写清楚,需要自行去看看官方文档 琢磨,比如安装了Nuget包,web.config 的配置没写 ClientID,秘钥。等等
PayPal 对接的更多相关文章
- paypal对接
paypal支付接口准备工作 首先去申请一个paypal账号,https://www.paypal.com/. 申请完毕并登录,进入https://developer.paypal.com/devel ...
- paypal接口对接注意事项
追加:新的设定画面 在paypal对接过程中,会存在return_url和notify两种 分别用pdt和ipn实现 但是对于paypal,大家请注意,真实环境和沙盒测试环境的区别 你可以到www.p ...
- paypal的IPN机制
paypal对接时发现有这么一个机制,看起来还不错,起到了防止篡改欺诈行为,保证了通信的安全性,但会增加几次通信.
- Paypal标准支付对接
提醒一下,题主是在快速标准支付做到一半的时候换成了标准支付,所以该文档的快速支付大家做个参考就可以了. 一.两种支付方式 标准支付 优点:纯前端对接,简单方便,适用于非技术开发人员.个人即可用,不用花 ...
- PayPal支付对接
开发时间:2019-04-30 我的目标:在我们公司的海外网站上,接入PayPal支付,美国用户在线完成付款. 准备: (1)准备:公司注册信息(执照,注册号,法人等),法人信息(身份证,住址等) ( ...
- 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo
开篇先给大家讲段历史故事,博主是湖北襄阳人.襄阳物华天宝,人杰地灵,曾用名襄樊.在2800多年的历史文化中出现了一代名相诸葛亮(卧龙),三国名士庞统(凤雏),魏晋隐士司马徽(水镜先生),唐代大诗人孟浩 ...
- 海外支付:遍布全球的Paypal
海外支付:遍布全球的Paypal 吴剑 2015-11-26 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian 吴剑 http://www.cnblogs.co ...
- PayPal、支付宝诞生的故事 | 概述起源篇
你知道第三方支付是如何由来的吗? 第三方支付概述 说起第三方支付,好像大家都知道,天天不是用支付宝和微信吗?支付宝和微信支付确实是行业内非常具有代表的第三方支付公司,但现在他们已经不完全是一家第三方支 ...
- paypal支付 NVP支付 paypal 手续费 GetTransactionDetails
主要内容: 本文章主要讲解的是NVP的对接,以最简单的接口案例,讲解一下对接NVP的方案. 先提供下paypal 官方文档的主要功能对接说明,如下 1.请求API 服务器端点 描述 https://a ...
随机推荐
- 【2-SAT(最小字典序/暴力染色)】HDU1814-Peaceful Commission
[题目大意] 和平委员会每个党派有2个人,只能派出其中1个,其中有一些人之间互相讨厌不能同时派出.求出派遣方案,如果有多种方案输出字典序最小的方案. [思路] 最小字典序只能用暴力染色.初始时均没有染 ...
- 【KMP】BZOJ3942-[Usaco2015 Feb] Censoring
[题目大意] 有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程.输出最后的S串. [思路]三 ...
- 计算gcd Exercise07_14
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:计算gcd * */ public class Exercise07_14 ...
- jsp ajax实例讲解
下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式多种,包括提取数据库信息,校验用户名是否重复等),异步在JSP表单页面显示校验结果信息的基本过程. 一.说明: 1. ...
- 138.括号序列(区间型DP)
3657 括号序列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们用以下规则定义一个合法的括号序列: ...
- <摘录>算法策略的总结
策略是面向问题的,算法是面向实现的. 一.不同算法策略特点小结 1.贪心策略 贪心策略一方面是求解过程比较简单的算法,另一方面它又是对能适用问题的条件要求最严格(即适用范围很小)的算法. 贪心策略解决 ...
- WPF的UI虚拟化
许多时候,我们的界面上会呈现大量的数据,如包含数千条记录的表格或包含数百张照片的相册.由于呈现UI是一件开销比较大的动作,一次性呈现数百张照片就目前的电脑性能来说是需要占用大量内存和时间的.因此需要对 ...
- NHibernate 之持久化类、拦截器 (第二篇)
一.持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1.声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHiberna ...
- uboot如何检测XC2440是从Nand或Nor启动
转:http://blog.chinaunix.net/uid-22030783-id-3347621.html 在XC2440开发板上做uboot从nandflash启动时,需要检测硬件启动方式,启 ...
- 利用Python编写网络爬虫下载文章
#coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期 ...