苹果支付php相关代码,苹果支付 · fastadmin常用 · 看云

news/2024/10/22 16:31:10/

### 苹果支付是前段发起支付,后端只负责接收 ``transactionReceipt``数据然后进行验证和后台操作

写入public下的pay.log日志

```

public function test(){

$data = file_get_contents("php://input");

$data = json_encode($_POST);

file_put_contents("pay.log",date('Y-m-d H:i:s')." ". $data.PHP_EOL,FILE_APPEND);

}

```

发起测试

```

public function test(){

// data是 `transactionReceipt` 的数据

$data = 'ewoJInNpZ25hdHVyZSIgPSAiQTBYZmNYMitCb25GSGlQb05CUHlRcy91czB0TERhT3Q0SldPbzhzM3BnRUplWisyTzJ5TURIVGtOYkdQMGVmL1pPMSs5SklHaVl5bnNyem4xaEZRWjgrbWdEM3BFRXFCTER4ek11alVtS1ovMHZjVFgvOWhaMmt3cCtVZENNV3VkSk5qQXdSZVhVS2tRaW9iRkJhUkQ3L09GSTIvZFpEQ0EyL2VZMHFjaitmSGYrRmJEU0E3Vnd3ZXhiZ2QwcFFCWEduVTBoMWYyWEtjek8zMTYxOVN4Qk81TmVWODVaZy9UZVpKeFh6Q0JUNnZzMlJpY0FkQ04xb21WaTJaZTB6aUsydTJoQmpKOWtkUm5QQWRsMkJNOGI5N2U2L0Z0R1VIVEx5OHArWUwrcEMrdUlWRlo2Yk85MHRxV3k2T1ZGU281c0lFenZKTUZEZWZhZEd5OU5EdjJuMEFBQVdBTUlJRmZEQ0NCR1NnQXdJQkFnSUlEdXRYaCtlZUNZMHdEUVlKS29aSWh2Y05BUUVGQlFBd2daWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Td3dLZ1lEVlFRTERDTkJjSEJzWlNCWGIzSnNaSGRwWkdVZ1JHVjJaV3h2Y0dWeUlGSmxiR0YwYVc5dWN6RkVNRUlHQTFVRUF3dzdRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NVFV4TVRFek1ESXhOVEE1V2hjTk1qTXdNakEzTWpFME9EUTNXakNCaVRFM01EVUdBMVVFQXd3dVRXRmpJRUZ3Y0NCVGRHOXlaU0JoYm1RZ2FWUjFibVZ6SUZOMGIzSmxJRkpsWTJWcGNIUWdVMmxuYm1sdVp6RXNNQ29HQTFVRUN3d2pRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcGMrQi9TV2lnVnZXaCswajJqTWNqdUlqd0tYRUpzczl4cC9zU2cxVmh2K2tBdGVYeWpsVWJYMS9zbFFZbmNRc1VuR09aSHVDem9tNlNkWUk1YlNJY2M4L1cwWXV4c1FkdUFPcFdLSUVQaUY0MWR1MzBJNFNqWU5NV3lwb041UEM4cjBleE5LaERFcFlVcXNTNCszZEg1Z1ZrRFV0d3N3U3lvMUlnZmRZZUZScjZJd3hOaDlLQmd4SFZQTTNrTGl5a29sOVg2U0ZTdUhBbk9DNnBMdUNsMlAwSzVQQi9UNXZ5c0gxUEttUFVockFKUXAyRHQ3K21mNy93bXYxVzE2c2MxRkpDRmFKekVPUXpJNkJBdENnbDdaY3NhRnBhWWVRRUdnbUpqbTRIUkJ6c0FwZHhYUFEzM1k3MkMzWmlCN2o3QWZQNG83UTAvb21WWUh2NGdOSkl3SURBUUFCbzRJQjF6Q0NBZE13UHdZSUt3WUJCUVVIQVFFRU16QXhNQzhHQ0NzR0FRVUZCekFCaGlOb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBekxYZDNaSEl3TkRBZEJnTlZIUTRFRmdRVWthU2MvTVIydDUrZ2l2Uk45WTgyWGUwckJJVXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCU0lKeGNKcWJZWVlJdnM2N3IyUjFuRlVsU2p0ekNDQVI0R0ExVWRJQVNDQVJVd2dnRVJNSUlCRFFZS0tvWklodmRqWkFVR0FUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TUE0R0ExVWREd0VCL3dRRUF3SUhnREFRQmdvcWhraUc5Mk5rQmdzQkJBSUZBREFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBRGFZYjB5NDk0MXNyQjI1Q2xtelQ2SXhETUlKZjRGelJqYjY5RDcwYS9DV1MyNHlGdzRCWjMrUGkxeTRGRkt3TjI3YTQvdncxTG56THJSZHJqbjhmNUhlNXNXZVZ0Qk5lcGhtR2R2aGFJSlhuWTR3UGMvem83Y1lmcnBuNFpVaGNvT0FvT3NBUU55MjVvQVE1SDNPNXlBWDk4dDUvR2lvcWJpc0IvS0FnWE5ucmZTZW1NL2oxbU9DK1JOdXhUR2Y4YmdwUHllSUdxTktYODZlT2ExR2lXb1IxWmRFV0JHTGp3Vi8xQ0tuUGFObVNBTW5CakxQNGpRQmt1bGhnd0h5dmozWEthYmxiS3RZZGFHNllRdlZNcHpjWm04dzdISG9aUS9PamJiOUlZQVlNTnBJcjdONFl0UkhhTFNQUWp2eWdhWndYRzU2QWV6bEhSVEJoTDhjVHFBPT0iOwoJInB1cmNoYXNlLWluZm8iID0gImV3b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ESXhMVEF5TFRJNElEQXhPakV6T2pNNElFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW5WdWFYRjFaUzFwWkdWdWRHbG1hV1Z5SWlBOUlDSTNPVFk0WVdVNVptTXhNRGRpWXpVME56Qm1ZbUUxWmpBMlpUWXdOV1k0TlRobFpHSmpaVEpsSWpzS0NTSnZjbWxuYVc1aGJDMTBjbUZ1YzJGamRHbHZiaTFwWkNJZ1BTQWlNVEF3TURBd01EYzRNalkzTURRNE1pSTdDZ2tpWW5aeWN5SWdQU0FpTVRNM0lqc0tDU0owY21GdWMyRmpkR2x2YmkxcFpDSWdQU0FpTVRBd01EQXdNRGM0TWpZM01EUTRNaUk3Q2draWNYVmhiblJwZEhraUlEMGdJakVpT3dvSkltOXlhV2RwYm1Gc0xYQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakUyTVRRMU1ETTJNVGd3TURBaU93b0pJblZ1YVhGMVpTMTJaVzVrYjNJdGFXUmxiblJwWm1sbGNpSWdQU0FpUmpKQk1UYzRPREV0TmprMVJTMDBRamMwTFVGQk9ESXRSVFpDT1RrMk1FRTVPREZCSWpzS0NTSndjbTlrZFdOMExXbGtJaUE5SUNJeE1URTJJanNLQ1NKcGRHVnRMV2xrSWlBOUlDSXhOVFUxT0RFM01EY3lJanNLQ1NKaWFXUWlJRDBnSW1OdmJTNTZlbW91WW05MGRHeGxJanNLQ1NKcGN5MXBiaTFwYm5SeWJ5MXZabVpsY2kxd1pYSnBiMlFpSUQwZ0ltWmhiSE5sSWpzS0NTSndkWEpqYUdGelpTMWtZWFJsTFcxeklpQTlJQ0l4TmpFME5UQXpOakU0TURBd0lqc0tDU0p3ZFhKamFHRnpaUzFrWVhSbElpQTlJQ0l5TURJeExUQXlMVEk0SURBNU9qRXpPak00SUVWMFl5OUhUVlFpT3dvSkltbHpMWFJ5YVdGc0xYQmxjbWx2WkNJZ1BTQWlabUZzYzJVaU93b0pJbkIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ESXhMVEF5TFRJNElEQXhPakV6T2pNNElFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW05eWFXZHBibUZzTFhCMWNtTm9ZWE5sTFdSaGRHVWlJRDBnSWpJd01qRXRNREl0TWpnZ01EazZNVE02TXpnZ1JYUmpMMGROVkNJN0NuMD0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9';

$res = $this->getReceiptData($data,true);

halt($res);

}

```

和苹果服务器进行验证

```

//去苹果服务器二次验证代码

public function getReceiptData($receipt, $isSandbox = false)

{

if ($isSandbox) {

$endpoint = 'https://sandbox.itunes.apple.com/verifyReceipt';//沙箱地址

} else {

$endpoint = 'https://buy.itunes.apple.com/verifyReceipt';//真实运营地址

}

$postData = json_encode(

array('receipt-data' => $receipt)

);

$ch = curl_init($endpoint);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //这两行一定要加,不加会报SSL 错误

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

$response = curl_exec($ch);

$errno = curl_errno($ch);

//$errmsg = curl_error($ch);

curl_close($ch);

if ($errno != 0) {//curl请求有错误

return [

'errNo' => 1,

'errMsg' => '请求超时,请稍后重试',

];

} else {

$data = json_decode($response, true);

if (!is_array($data)) {

return [

'errNo' => 2,

'errMsg' => '苹果返回数据有误,请稍后重试',

];

}

//判断购买时候成功

if (!isset($data['status']) || $data['status'] != 0) {

return [

'errNo' => 3,

'errMsg' => '购买失败',

];

}

//返回产品的信息

$order = $data['receipt'];

$order['errNo'] = 0;

return $order;

}

}

```

成功后返回的数据

```

array(2) {

["receipt"] => array(17) {

["original_purchase_date_pst"] => string(39) "2021-02-28 01:13:38 America/Los_Angeles"

["purchase_date_ms"] => string(13) "1614503618000"

["unique_identifier"] => string(40) "7968ae9fc107bc5470fba5f06e605f858edbce2e"

["original_transaction_id"] => string(16) "1000000782670482"

["bvrs"] => string(3) "137"

["transaction_id"] => string(16) "1000000782670482"

["quantity"] => string(1) "1"

["unique_vendor_identifier"] => string(36) "F2A17881-695E-4B74-AA82-E6B9960A981A"

["item_id"] => string(10) "1555817072"

["original_purchase_date"] => string(27) "2021-02-28 09:13:38 Etc/GMT"

["is_in_intro_offer_period"] => string(5) "false"

["product_id"] => string(4) "1116"

["purchase_date"] => string(27) "2021-02-28 09:13:38 Etc/GMT"

["is_trial_period"] => string(5) "false"

["purchase_date_pst"] => string(39) "2021-02-28 01:13:38 America/Los_Angeles"

["bid"] => string(14) "com.zzj.bottle"

["original_purchase_date_ms"] => string(13) "1614503618000"

}

["status"] => int(0)

}

```

| 字段 | 类型 | 描述 |

| --- | --- | --- |

| transaction\_id | integer | 交易号 |

| original\_transaction\_id | integer | 原始交易号 |

| product\_id | string | 商品标识符 |

| quantity | integer | 数量 |

| purchase\_date | string | 购买日期 |

| original\_purchase\_date | string | 原始购买日期 |

| purchase\_date\_ms | integer | 购买日期(ms) |

| original\_purchase\_date\_ms | integer | 原始购买日期(ms) |

| purchase\_date\_pst | string | 购买日期(pst) |

| original\_purchase\_date\_pst | string | 原始购买日期(pst) |

| cancellation\_date | string | 取消购买的日期 |


http://www.ppmy.cn/news/251089.html

相关文章

苹果六电池_惊喜还是惊吓?苹果偷偷发布新产品MacBook Pro

[PConline 杂谈]11月13日晚上,16英寸Macbook Pro发布了!这个惊喜来的有点突然,又在意料之中。 官网上称“全新 MacBook Pro 专为勇于挑战、渴望突破的高手而来。它将 Mac 笔记本电脑的强大性能,推上新的高度。搭载令人沉浸的 16 英…

苹果六电池_苹果官网上架新品,18999元起~

跟爆料的消息一样,苹果昨晚在官网上正式上架了新的16英寸的MacBook Pro,根据苹果官网介绍,这款 Mac 笔记本电脑的巅峰之作,专为开发者、摄影师、电影制作人、科研人员、音乐制作人以及所有依靠 Mac 创造杰作的专业用户而设计。 搭…

iPhone7(P)广色域显示P3 导致设置RGB值 转sRGB 色值偏差问题 #3C76FF

今天把开发完成的一个iOS 视图模板给 UE 同学ReView的时候遇到一个奇葩的问题: 一个按钮的字体颜色使用十六进制设置方法设置为"#3C76FF" ,但是UE同学却反馈:实际反馈效果是有问题的!在我万分确定自己代码没有错误的情况下&#xf…

acer p3 171 装android,只要轻薄 从Acer P3看便携本如何更新

变形本已经成为笔记本细分发展的趋势,机身不同的设计结构和变形方式对应着不同的用户群。伴随着Windows 8操作系统对触控的全面优化,变形和触控将是摆脱传统笔记本的两大关键词。当前市面上变形本都围绕屏幕展开的,或是旋转,或是推滑,亦或是分离,如果从实现和设计的难以程…

苹果plus html,iPhoneX 苹果8 8PLus区别:所有功能参数 最详细全面对比

趋势网(微博|微信)讯:iPhoneX和苹果8和8PLus的区别是什么?很简单,逐一对比所有配置参数,一目了然。趋势网通过深入比较全部二十二个重点项目的差异,帮助读者清楚明了理解苹果X、iPhone8、iPhone8Plus有哪些差别、不同在哪里。 首先,我们先以总概述的方式,一句话说明——…

公认佩戴最舒适的蓝牙耳机有哪些?佩戴舒适度最好的蓝牙耳机推荐

众所周知,蓝牙耳机戴久了会对耳朵造成伤害,而现如今人们的日常生活又都离不开蓝牙耳机。所以,一款佩戴舒适的蓝牙耳机对人们来说很重要。下面我来推荐几款公认佩戴舒适度最好的蓝牙耳机,一起来看看吧。 一、南卡Lite Pro2蓝牙耳机…

六款佩戴牢固的蓝牙耳机、运动型蓝牙耳机推荐

运动蓝牙耳机可以很好有效地缓解运动时所带来的疲劳感、疲惫感,也可以提升运动时的乐趣并放松身心。所以如果你选到了一款不好用的耳机,不但会对听力造成伤害,而且运动时还会轻易掉落,如果你的耳机经常太容易掉落可以选择更换一个…

佩戴舒适的蓝牙耳机有哪些?佩戴舒适的蓝牙耳机推荐

音乐对许多人而言,都是一种抚慰生命的力量,特别是在上下班的时候,在熙熙攘攘的人流中,戴着耳机听一首动听的曲子,无疑会让人心情变得更加舒畅,要想获得出色的音乐体验,没有一副出色的耳机可不行…