.NET如何对接PayPal支付


前言

如题,最近在研究如何对接PayPal支付,在经过一段时间的摸索后,终于实现简单的支付操作,在这里分享下我个人的思路,让其他需要了解的人少走弯路,尽快对接上,申请注册PayPal账号这些我这里不多做解析,网上其他博主已经说得很详细(文字和截图都有),我主要说下如何入手,注意点以及易错点。


一、如何入手

在对接PayPal支付之前,相信很多人都已经对接过微信,支付宝支付,我也不例外,所以一开始接触PayPal支付的时候,我就习惯性的将其代入到以前对接过的支付中,觉得流程应该大同小异,简单点来说就是 发起支付请求 -> 用户授权支付 -> 支付回调 -> 业务处理,但是在查看了PayPal对接文档以及参考了其他博主文章后,发现除了上面我说的流程外,PayPal还多了一步,这一步按照文档的说法叫“批准订单”,但是这样听起来貌似不太好理解,换成通俗点来说就是 主动向PayPal确认收款,发请求给PayPal服务器跟他说可以收款了,如果没有这一步,支付并不算完成,卖家同样收不到款,这一点切记,这样我们就可以将PayPal支付流程简单的概括为 发起支付请求 -> 用户授权支付 -> 支付回调 -> 主动向PayPal确认收款 -> 业务处理


二、开发前准备

在正式开始之前,我们需要在PayPal开发者中心获取ClientIdSecret及设置Webhooks并得到对应Webhook ID,我暂且不细说这些东西的作用,等下根据流程来一一详解,如果不知道在哪里获取这些东西,我引入了其他博主的文章链接,可以直接点击查看,这个博主说的十分详细,里面包含文字和截图,相信看了之后就知道如何获取。


三、支付流程

通过上面得知,我们已将整个流程简单概括为发起支付请求 -> 用户授权支付 -> 支付回调 -> 主动向PayPal确认收款 -> 业务处理这几个步骤,接下来,我们将按照这个思路一步一步分析

通用类和通用方法如下:

---通用类---
public class Links
{
   
	public string href {
    get; set; }
    public string rel {
    get; set; }
    public string method {
    get; set; }
}

public class CheckoutOrdersResult
{
   
	public string id {
    get; set; }
    public string status {
    get; set; }
    public List<Links> links {
    get; set; }
}

public class WebhookEvent
 {
   
	public string id {
    get; set; }
    public string event_version {
    get; set; }
    public string create_time {
    get; set; }
    public string resource_type {
    get; set; }
    public string resource_version {
    get; set; }
    public string event_type {
    get; set; }
    public string summary {
    get; set; }
    public Resource resource {
    get; set; }
    public List<Links> links {
    get; set; }
}

public class Resource
{
   
    public string create_time {
    get; set; }
    public List<PurchaseUnits> purchase_units {
    get; set; }
    public List<Links> links {
    get; set; }
    public string id {
    get; set; }
    public string intent {
    get; set; }
    public string status {
    get; set; }
}

public class PurchaseUnits
{
   
    public string reference_id {
    get; set; }        
}
---通用类---

---通用方法
public string Post(string url, string clientId, string secret, Dictionary <string, object> dic, Encoding encoding)
{
   
    var param = string.Empty;
    foreach(var o in dic)
    {
   
        if(string.IsNullOrEmpty(param)) 
            param += o.Key + "=" + o.Value;
        else 
            param += "&" + o.Key + "=" + o.Value;
    }
    byte
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值